用python的库 sympy 求导数

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

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

1.一阶导数

基本格式

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

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

程序,如下

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

  ~

2.二阶导数

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

程序,如下

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

解释:
d i f f ( c o s ( x ) ,   x ,   2 ) diff(cos(x), ~x,~2) 此处的2指对 x x 进行两次求导       ~~~~~ 即:二阶导数

同理, d i f f ( c o s ( x ) ,   x ,   x ) diff(cos(x), ~x,~x) 此处的两个 x x 也是对 x x 进行两次求导

可推广到更高阶

  ~

3.一阶偏导数

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

程序,如下

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 ) = c o s ( x 2 y ) x 2 + y 2 + 1 \quad g(x,y)=\frac{cos(x^2y)}{x^2+y^2+1}

程序,如下

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)
发布了23 篇原创文章 · 获赞 32 · 访问量 4464

猜你喜欢

转载自blog.csdn.net/t4ngw/article/details/105768832