You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用SymPy求解隐函数的二阶混合偏导数

用SymPy的idiff计算隐函数的二阶混合偏导数

对于由方程$\cos^2(x) + \cos^2(y) + \cos^2(z) = 1$定义的隐函数$z=f(x,y)$,要计算二阶混合偏导数$\frac{\partial^2 z}{\partial x \partial y}$,可以通过以下两种方式使用SymPy的idiff函数实现:

方法1:直接传递多阶求导变量序列

idiff函数支持传入多个求导变量,按顺序表示求导的先后顺序。要计算$\frac{\partial^2 z}{\partial x \partial y}$,只需将求导变量按x、y的顺序传入:

# 计算二阶混合偏导 ∂²z/∂x∂y
mixed_deriv = sp.idiff(F, z, x, y)
# 简化结果
sp.simplify(mixed_deriv)

方法2:先求一阶偏导,再对另一变量求偏导

先计算一阶偏导数$\frac{\partial z}{\partial x}$,再对该结果关于y求偏导(保持隐函数关系,仍用idiff处理):

# 先求一阶偏导 ∂z/∂x
dz_dx = sp.idiff(F, z, x)
# 对dz_dx关于y求偏导,得到∂²z/∂x∂y
mixed_deriv_2 = sp.idiff(dz_dx, z, y)
# 简化结果
sp.simplify(mixed_deriv_2)

完整代码示例

将混合偏导计算整合到原有代码中:

#!/usr/bin/env python
# coding: utf-8

import sympy as sp

sp.init_printing(use_latex='mathjax')  # 启用美观的MathJax输出

sp.var('x y z')

# 定义隐函数方程 F(x,y,z)=0
F = (sp.cos(x))**2 + (sp.cos(y))**2 + (sp.cos(z))**2 - 1

# 一阶偏导数
dz_dx = sp.idiff(F, z, x)
dz_dy = sp.idiff(F, z, y)

# 二阶纯偏导数
d2z_dx2 = sp.simplify(sp.idiff(F, z, x, 2))
d2z_dy2 = sp.simplify(sp.idiff(F, z, y, 2))

# 二阶混合偏导数(方法1)
d2z_dxdy = sp.simplify(sp.idiff(F, z, x, y))
# 二阶混合偏导数(方法2,验证结果一致)
d2z_dxdy_alt = sp.simplify(sp.idiff(dz_dx, z, y))

print("二阶混合偏导数 ∂²z/∂x∂y:")
display(d2z_dxdy)

两种方法得到的结果完全一致,因为在函数连续可导的条件下,混合偏导数满足$\frac{\partial^2 z}{\partial x \partial y} = \frac{\partial^2 z}{\partial y \partial x}$,你也可以通过sp.idiff(F, z, y, x)验证这一特性。

内容的提问来源于stack exchange,提问作者peter.petrov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 12:05:31