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