本节主要介绍多元函数导数(微分)的计算方法,包括:多元复合函数求导法则、多元隐函数求导、多元隐函数组求导三个子话题。
一、多元复合函数链导法
1,一元复合函数“链导法”
回顾一下,一元复合函数求导的方法 —— “链导法”(chain rule):
“链导法”这个名字很形象,由外而内逐层求导,像一个链条。事实上,“链导法”不仅适用于一元复合函数,也适用于多元复合函数。
2,一元与多元复合函数“链导法”
这类复合函数,从外层看是多元(二元)函数,从内层看是一元函数,如下:
如上式,它在各个分量上面,也是由外而内逐层求导。不同的是,外层是偏导数(二元函数),内层是导数(一元函数)。
3,多元与多元复合函数“链导法”
这类复合函数,从外层和内层看都是多元(二元)函数,如下:
如上式,它在各个分量上面,也是由外而内逐层求导。不同的是,它用的偏导数。
注:关于求导法则,还可以参考以下链接
https://www.khanacademy.org/math/calculus-home/taking-derivatives-calc/chain-rule-calc/a/chain-rule-overview
https://www.mathsisfun.com/calculus/derivatives-rules.html
http://mathinsight.org/chain_rule_multivariable_introduction
http://www.columbia.edu/itc/sipa/math/calc_rules_multivar.html
4,全微分形式不变性
回顾一下,一元函数微分具有形式不变性,而多元函数全微分同样也具有形式不变性,如下:
如果 u、v是 x 、 y 的函数,通过链导法可得
观察上面的两个全微分式,可以发现:自变量替换后,全微分的形式保持不变。
5,应用Python - sympy 求复合函数导数的时候,隐藏了链导过程,举例如下:
from sympy import *
init_printing()
# Example 1
u,v=symbols('u v')
x,y,z=symbols('x y z')
u = x * y
v = x + y
z = E ** u * sin(v)
z
z.diff(x), z.diff(y)
# Example 3
u,v=symbols('u v')
x,y,z,t=symbols('x y z t')
u = E ** t
v = cos(t)
z = u * v + sin(t)
z, z.diff(t)
二、多元复合隐函数求导
1,一元隐函数求导
先回顾一下一元隐函数的求导过程:对于方程
2,一元隐函数偏导法
对于方程
即使用偏导数来确定这个隐函数的导函数,注意是负数加倒数关系。
3,多元隐函数求导
类似一元隐函数求导,不同的是要先对各个分量求偏导数,最后叠加。
注:关于隐函数微分除了WIKI,还可以参考:Maht is fun - implict differential。
#sympy.geometry.util.idiff(eq, y, x, n=1)
#Return dy/dx assuming that eq == 0.
x,y,z=symbols('x y z')
expr = x **2 + y ** 2 - 9
idiff(expr, y, x)
x,y,z=symbols('x y z')
expr = x ** 2 + y ** 2 + z ** 2 - 4 * z
idiff(expr, z, x, 2)
注:上式求隐函数
三、多元方程组求导
1,方程组
2,雅可比式(Jacobi)
3,一般方法
这里有一个很复杂的公式,我就不列了,只给出一般的步骤:先求方程组两边求导,再解微分方程组。下面举例并用Python演示
已知
求
分析:两个方程只能确定两个隐函数,而未知量有4个,故这两个隐函数都是二元的。
from sympy import *
init_printing()
x,y = symbols('x y')
u = Function('u')(x,y)
v = Function('v')(x,y)
expr1 = x * u - y * v
expr2 = y * u + x * v - 1
expr1, expr2
expr1.diff(x)
expr1.diff(y)
expr2.diff(x)
expr2.diff(y)
如上,对两边求导,就得到了4个新的方程,如果把偏导数当作未知量,那么就有6个方程,8个未知量。列出方程组,通过消元法将其中4个未知量用另外两个表示出来即可。