反函数计算 python |
您所在的位置:网站首页 › 做一个原函数的反函数怎么做 › 反函数计算 python |
反函数就是逆函数,常见的函数,y=x^2,已知x,求y的值。 如果已知y的值,x的值是多少呢?简单的函数,手动一算就能算出来,如果函数笔记麻烦怎么办? 比如y=x^3+2x^2-5x^2+5,已知y的值,x等于多少?就需要借助计算器了。 方法1:excel, 工具,规划求解,B2=A2^3+A2^2+A2+1 方法2,python方法: 使用pip安装库: pip install pynverse 用法 Pynverse提供了一个主要函数inversefunc,它计算作为第一个参数以callable形式传递的函数f的数值逆。 from pynverse import inversefunc #它可用于计算某些y_values 点的反函数: cube = (lambda x: x**3) invcube = inversefunc(cube, y_values=27) print(invcube)或者,如果未提供y_values,则获得一个可计算任何其他点的逆值的可调用对象: invcube = inversefunc(cube) invcube(27) # array(3.0000000063797567) 它要求函数在函数的范围内必须是连续且严格单调的(即纯递减或纯递增)。默认情况下,域包括所有实数,但是可以使用domain参数限制其区间: import numpy as np inversefunc(np.cos, y_values=[1, 0, -1], # Should give [0, pi / 2, pi] ... domain=[0, np.pi]) # array([ 0. , 1.57079632, 3.14159265]) 此外,参数open_domain可用于指定开闭区间: inversefunc(np.log10, y_values=-2, # Should give 0.01 ... domain=0, open_domain=[True, False]) # array(0.0099999999882423) 或同时在两端设置开区间: invtan = inversefunc(np.tan, ... domain=[-np.pi / 2, np.pi / 2], ... open_domain=True) invtan([1, 0, -1]) # Should give [pi / 4, 0, -pi / 4] array([ 7.85398163e-01, 1.29246971e-26, -7.85398163e-01]) 可以使用args参数将其他参数传递给函数,以更轻松地重用可调用项: invsquare = inversefunc(np.power, args=(2), domain=0) invsquare([4, 16, 64]) # array([ 2., 4., 8.]) 在以下情况下,也可以提供间隔中函数的图像:在打开间隔结束时函数不连续且带有image参数的情况下: invmod = inversefunc(np.mod, args=(1), domain=[5,6], ... open_domain=[False,True], image=[0,1]) invmod([0.,0.3,0.5]) # array([ 5. , 5.3, 5.5]) 1 2 3 4 5 另外,可以使用一个参数来检查结果中准确度的位数,如果不满足要求,则会发出警告: inversefunc(np.log10, y_values=-8, # Should give 0.01 ... domain=0, open_domain=True, accuracy=6) pynverse\inverse.py:195: RuntimeWarning: Results obtained with less than 6 decimal digits of accuracy # array(9.999514710830838e-09) 1 2 3 4 5 由于它与数组兼容,因此可以很容易地用于获得宽范围的逆。这些是将返回的数字逆可调用量与数组一起使用以绘制图表并将其与解析逆进行比较的一些示例,每个计算都简单地如下: log = lambda x: np.log10(x) invlog = scipy.misc.inversefunc(log, domain=0, open_domain=True) x1=np.linspace(0.00001,10,100) x2=np.linspace(-5,1,100) ax1.plot(x1,log(y1),'b-') ax2.plot(x2,invlog(x2),'b-') invlog_a = lambda x: 10**x ax2.plot(x2,invlog_a(x2),'r--') 1 2 3 4 5 6 7 8 9 特别是,对于分段函数的定义,提供了一个piecewise效用函数,该函数可解决在处理标量和数组时的np.piecewise问题。例如,最后一个图的逆获得为: from pynverse import inversefunc, piecewise pw=lambda x: piecewise(x,[x=1)*(x=3],[lambda x: x, lambda x: x**2, lambda x: x+6]) invpw =inversefunc(pw) ———————————————— 版权声明:本文为CSDN博主「脆鲨Nana7mi」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/jcfszxc/article/details/109832635 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |