python中求导,如何给函数求导
Python的函数求导方法如下:1。使用sympy库中的symbols方法输入X和Y变量;2.使用sympy库中的diff函数传入需要求导的函数,可以返回求导后的结果。
python利用sympy库对某个函数求导,numpy库使用该求导结果计算的程序
在python数据处理的过程中,我们经常会遇到这样的情况。需要求一个函数表达式的偏导数,将具体值代入导数公式。
在python中,sympy库中的diff()函数通常用于函数派生。
但他通常得到的导数只是一个象征性的表达。不能直接用于数据使用。
示例:
importsympyassp
importnumpyasnp
x,y=特殊符号( xy )
z=sp.sin(2*sp.pi*x 2*y/5)
zx=sp.diff(z,x)
zy=sp.diff(z,y)
打印(zx)
Print(zy)它的输出是:
2*pi*cos(2*pi*x 2*y/5)
2*cos(2*pi*x 2*y/5)/5那么如何解决这个问题呢?
x和y分别用evalf()函数赋值后,用float进行类型转换后,就可以用numpy进行数值计算了。
示例:
importsympyassp
importnumpyasnp
x,y=特殊符号( xy )
z=sp.sin(2*sp.pi*x 2*y/5)
zx=sp.diff(z,x)
zy=sp.diff(z,y)
x1=10
y1=5
z _ x1=float(zx . evalf(subs={ x : x 1,y:y1}))
z _ y1=float(zy . evalf(subs={ x : x 1,y:y1}))
打印(z_x1)
打印(z_y1)其输出结果:
-2.61472768902227
-0.16645873461885696如果我的x或者y不是单值怎么办?而是一个数组。
我们可以用一个循环来完成它。
示例:
importsympyassp
importnumpyasnp
x,y=特殊符号( xy )
z=sp.sin(2*sp.pi*x 2*y/5)
zx=sp.diff(z,x)
zy=sp.diff(z,y)
x_array=np.linspace(-5,5,10)
y_array=np.linspace(-5,5,10)
Temp_x=[]#首先定义一个空列表来存储x个偏导数。
Temp_y=[]#首先定义一个空列表来存储y的偏导数。
(10):
z _ x=float(zx . evalf(subs={ x : x _ array[I],y:y_array[i]}))
Temp_x.append(z_x)#将计算出的偏导数逐个添加到列表中。
z _ y=float(zy . evalf(subs={ x : x _ array[I],y:y_array[i]))
临时_y .追加(z_y)
将一个列表转换成一个数组
zy_array=np.array(温度_y)
打印(zx_array)
print(zy_array)的输出结果是:
[-2.614727694.111638646.029462890.89585862-5.2854481-5.2854481
0.895858626.029462894.11163864-2.61472769]
[-0.166458730.261755050.383847530.05703213-0.33648208-0.33648208
0.057032130.383847530.26175505-0.16645873]由此,由sympy得出推导结果,并在numpy库中进行数值计算。
我还是一个python初学者。如有错误请指正~
在学习的道路上共同进步~
推荐课程:Python3 Selenium3自动测试与开发实践
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。