用python的库 sympy 求导数

Gitana ·
更新时间:2024-09-21
· 678 次阅读

diff(f,x)diff(f, x)diff(f,x)求导数可引入求微分方程

sympy 求微分方程.(点击可跳转)

1.一阶导数

基本格式

print(diff(f, x)) # f为所求导函数,x为对x进行求导

例:求该函数的导数
f(x)=cos(x)f(x)=cos(x)f(x)=cos(x)

程序,如下

from sympy import * x = symbols('x') print(diff(cos(x), x)) 结果:-sin(x)

 ~ 

2.二阶导数

例:求该函数的二阶导数
f(x)=cos2(x)f(x)=cos^{2}(x)f(x)=cos2(x)

程序,如下

from sympy import * x = symbols('x') print(diff(cos(x), x, 2)) # or print(diff(cos(x), x, x)) 结果:-cos(x)

解释:
diff(cos(x), x, 2)diff(cos(x), ~x,~2)diff(cos(x), x, 2) 此处的2指对xxx进行两次求导      ~~~~~     即:二阶导数

同理,diff(cos(x), x, x)diff(cos(x), ~x,~x)diff(cos(x), x, x) 此处的两个xxx也是对xxx进行两次求导

可推广到更高阶

 ~ 

3.一阶偏导数

例:求该函数的一阶偏导数
g(x,y)=cos(x2y)x2+y2+1\quad g(x,y)=\frac{cos(x^2y)}{x^2+y^2+1}g(x,y)=x2+y2+1cos(x2y)​

程序,如下

from sympy import * g = symbols('g', cls=Function) x, y = symbols('x y') eq = cos(x**2*y)/(x**2+y**2+1) dx = diff(eq, x) dy = diff(eq, y) print("对x的一阶偏导:", dx) print("对y的一阶偏导:", dy)

结果

对x的一阶偏导: -2*x*y*sin(x**2*y)/(x**2 + y**2 + 1) - 2*x*cos(x**2*y)/(x**2 + y**2 + 1)**2 对y的一阶偏导: -x**2*sin(x**2*y)/(x**2 + y**2 + 1) - 2*y*cos(x**2*y)/(x**2 + y**2 + 1)**2

 ~ 

4.二阶偏导数

例:求该函数的二阶偏导数
g(x,y)=cos(x2y)x2+y2+1\quad g(x,y)=\frac{cos(x^2y)}{x^2+y^2+1}g(x,y)=x2+y2+1cos(x2y)​

程序,如下

from sympy import * g = symbols('g', cls=Function) x, y = symbols('x y') eq = cos(x**2*y)/(x**2+y**2+1) dx_2 = diff(eq, x, 2) dy_2 = diff(eq, y, 2) print("对x的二阶偏导:", dx_2) print("对y的二阶偏导:", dy_2)

结果

对x的二阶偏导: 2*(4*x**2*y*sin(x**2*y)/(x**2 + y**2 + 1) - y*(2*x**2*y*cos(x**2*y) + sin(x**2*y)) + (4*x**2/(x**2 + y**2 + 1) - 1)*cos(x**2*y)/(x**2 + y**2 + 1))/(x**2 + y**2 + 1) 对y的二阶偏导: (-x**4*cos(x**2*y) + 4*x**2*y*sin(x**2*y)/(x**2 + y**2 + 1) + 2*(4*y**2/(x**2 + y**2 + 1) - 1)*cos(x**2*y)/(x**2 + y**2 + 1))/(x**2 + y**2 + 1)
作者:t4ngw



用python python的 求导 导数 Python

需要 登录 后方可回复, 如果你还没有账号请 注册新账号