Python微积分:二阶偏导数计算方法与实例
作者:麦兜 更新时间:2024-12-18 15:04:02 阅读 412
本文讲述如何用python的sympy、scipy工具包,求函数的二阶导数及 n 阶导数,文中代码和截图都选自Jupter notebook编辑环境。
先导入必要的工具包:
import sympy as smp
import numpy as np
import matplotlib.pyplot as plt
import scipy as sp
from scipy.misc import derivative把数值变量 x 定义为符号:
x = smp.symbols('x')例1(如图1),求f(x)和g(x)的一阶导数和二阶导数
图1说明:截图包括两行cell,都为markdown类型;上面一行为 函数表达式的显示形态,下面一行为函数表达式的输入形态。在输入状态行,按Ctrl + Enter键运行该行cell,即可显示上一行内容。
用python自定义函数表述函数f(x)和g(x):def f(x): return x**4+3*x**2
def g(x): return -x**4-3*x**2求例 1 中f(x)和g(x)的一阶导数:# 定义函数
def df(x): return 4*x**3+6*x
def df(x): return -4*x**3-6*x
df(1)
-10 (x =1, df(1) 的计算结果)
dg(-0.2)
1.2320000000000002 (x = -0.2, dg(-0.2) 的计算结果)求例 1 中f(x)和g(x)的二阶导数:def ddf(x): return 12*x**2+6
def ddg(x): return -12*x**2-6
ddf(1)
18 (当x =1时, ddf(x)的计算结果)
ddg(-0.2)
-6.48 (当x = -0.2时, ddg(x)的计算结果)例2(如图2),求f(x)的一阶导数和二阶导数
图2说明:(见图1说明)
定义函数: def f(x): return 5*x**3 - 3*x求例题 2 中f(x)的一阶导数:x = smp.symbols('x')
smp.diff(f(x),x)
#(计算结果如下)
15x*x -3 求例题 2 中f(x)的二阶导数:smp.diff(f(x),x,2)
#(计算结果如下)
30x例3,求f(x)的 n 阶导数
例3-1:求f(x) = sin(x) 的 n 阶导数
def f(x): return smp.sin(x)
d3f = smp.diff(f(x), x, 3) # 其中的 3 ,表示求 3 阶导数
d3f
#(计算结果)
-cos(x)
d4f = smp.diff(f(x), x, 4) # 其中的 4 ,表示求 4 阶导数
d4f
#(计算结果)
sin(x)有些函数很复杂,即使函数表达非常明确,但是人工求解这类函数的 n 阶导数很难, 如例 3-2。
例3-2(如图3),求f(x)的 n 阶导数
图3说明:(见图1说明)
定义符号x, a, b, c = smp.symbols('x a b c', real=True)定义例 3-2 中f(x)计算表达式的函数def f(x):
return smp.exp(-a*smp.sin(x**2)) * smp.sin(b**x) * smp.log(c*smp.sin(x)**2 /x)求例 3-2 中f(x)的 4 阶导数d4f = smp.diff(f(x), x, 4)
d4f计算结果略去,非常复杂啊!
给定x, a, b, c的值,计算例 3-2 中f(x)的4阶导数的值d4f.subs([(x,0.5),(a,1),(b,2),(c,3)]).evalf()
(计算结果)
−34.8746096991241
声明:本文由"麦兜"发布,不代表"破站"立场,转载联系作者并注明出处:https://www.848586.cn/159407.html
