Pythonで『微積分B』(微分法)を学ぶ

4348 ワード

ジルコニウム本節では,多重複合関数導出法則,多重暗黙関数導出,多重暗黙関数配列導出の3つのサブトピックを含む多重関数導数(微分)の計算方法を紹介する.
一、多重複合関数チェーンガイド法
1,一元複合関数「チェーンガイド法」を振り返ると,一元複合関数の導出方法である「チェーンガイド法」(chain rule):
y=f(u),u=g(x)⇒dydx=dydu⋅dgdx
「チェーンガイド法」という名前はとてもイメージ的で、外から内へ層ごとに導きを求めて、チェーンのようです.実際,「チェーン伝導法」は一元複合関数だけでなく,多重複合関数にも適用できる.2,一元と多重複合関数「鎖導法」
z=f(u,v),u=φ(t),v=ψ(t)⇒dzdt=∂z∂ududt+∂z∂vdvdt
ジルコニウムは上記のように、各成分の上にあり、外から内へ層ごとに導かれる.異なることに,外層はバイアス導関数(二元関数),内層は導関数(一元関数)である.3,多重と多重複合関数「鎖導法」
z=f(u,v),u=φ(x,y),v=ψ(x,y)⇒⎧⎩⎨⎪⎪⎪⎪⎪⎪∂z∂x=∂z∂u∂u∂x+∂z∂v∂v∂x∂z∂y=∂z∂u∂u∂y+∂z∂v∂v∂y
ジルコニウムは上記のように、各成分の上にあり、外から内へ層ごとに導かれる.異なるのは,バイアス導関数を用いることである.注意:導出法則については、次のリンクも参照できます.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.html4,全微分形式不変性  振り返ると、一元関数微分は形式不変性を有し、多重関数全微分も形式不変性を有し、以下の通りである.
z=f(u,v)⇒dz=∂z∂udu+∂z∂vdv
u,vがx,yの関数であれば,チェーンガイド法により得ることができる.
u=φ(x,y),v=ψ(x,y)⇒dz=∂z∂xdx+∂z∂ydy
上の2つの全微分式を観測すると,自己変数置換後,全微分の形態は変わらないことが分かった.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

exysin(x+y)
z.diff(x), z.diff(y)

(yexysin(x+y)+exycos(x+y),xexysin(x+y)+exycos(x+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)

(etcos(t)+sin(t),−etsin(t)+etcos(t)+cos(t))
二、多重複合暗黙関数の導出
1,一元隠関数導出  まず一元隠関数の導出過程を振り返る:方程式F(x,y)=0に対して、一元関数y=y(x)を決定することができ、従って一元隠関数と呼ばれる.両側は同時にxを導き、「チェーンガイド法」を適用し、dydxの式を整理します.たとえば、次のようにします.
x2+y2=9→dx2dx+dy2dx=0→dx2dx+dy2dydydx=2x+2ydydx=0→dydx=−xy
2,一元暗黙関数バイアス法  方程式F(x,y)=0に対してもう一つの導出方法がある
dydx=−FxFy
すなわち,この暗黙関数の導関数を決定するためにバイアス導関数を用い,負の数に逆数関係を加えることに注意した.3,多重暗黙関数導出
F(x,y,z)=0∂z∂x=−FxFz,∂z∂y=−FyFz
注意:隠関数微分については、WIKIに加えて、Math 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)

−xy
x,y,z=symbols('x y z')
expr = x ** 2 + y ** 2 + z ** 2 - 4 * z
idiff(expr, z, x, 2)

1(z−2)2(−x2z−2−z+2)
注:上式は隠し関数x 2+y 2+z 2−4 z=0の2次偏導数∂z∂xを求める
三、多元方程式グループの導出
1,方程式グループ
{F(x,y,u,v)=0G(x,y,u,v)=0
2,ヤコビ式(Jacobi)
J=∂(F,G)∂(u,v)=∣∣∣∣∣∂F∂u∂G∂u∂F∂v∂G∂v∣∣∣∣∣
3,一般的な方法次に例を挙げてPythonで既知のデモを行います
{xu−yv=0yu+xv=1
求める
∂u∂x,∂u∂y,∂v∂x,∂v∂y
解析:2つの方程式は2つの暗黙関数しか決定できませんが、未知量は4つあるので、この2つの暗黙関数は2元です.
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

(xu(x,y)−yv(x,y),xv(x,y)+yu(x,y)−1)
expr1.diff(x)

x∂∂xu(x,y)−y∂∂xv(x,y)+u(x,y)
expr1.diff(y)

x∂∂yu(x,y)−y∂∂yv(x,y)−v(x,y)
expr2.diff(x)

x∂∂xv(x,y)+y∂∂xu(x,y)+v(x,y)
expr2.diff(y)

x∂∂yv(x,y)+y∂∂yu(x,y)+u(x,y)
以上のように,両側を導くと4つの新しい方程式が得られ,バイアス導関数を未知量とすると6つの方程式,8つの未知量がある.方程式のグループをリストし、4つの未知量を消元法で他の2つで表すとよい.