d i f f ( f , x ) diff(f, x) diff(f,x)求导数可引入求微分方程
sympy 求微分方程.(点击可跳转)
基本格式
print(diff(f, x))
# f为所求导函数,x为对x进行求导
例:求该函数的导数
f ( x ) = c o s ( x ) f(x)=cos(x) f(x)=cos(x)
程序,如下
from sympy import *
x = symbols('x')
print(diff(cos(x), x))
结果:-sin(x)
~
例:求该函数的二阶导数
f ( x ) = c o s 2 ( 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)
解释:
d i f f ( c o s ( x ) , x , 2 ) diff(cos(x), ~x,~2) diff(cos(x), x, 2) 此处的2指对 x x x进行两次求导 ~~~~~ 即:二阶导数
同理, d i f f ( c o s ( x ) , x , x ) diff(cos(x), ~x,~x) diff(cos(x), x, x) 此处的两个 x x x也是对 x x x进行两次求导
可推广到更高阶
~
例:求该函数的一阶偏导数
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} 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
~
例:求该函数的二阶偏导数
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} 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)