学習環境
- Surface
- Windows 10 Pro (OS)
- Nebo(Windows アプリ)
- iPad
- MyScript Nebo - MyScript(iPad アプリ(iOS))
- 参考書籍
解析入門 原書第3版 (S.ラング(著)、松坂 和夫(翻訳)、片山 孝次(翻訳)、岩波書店)の第Ⅵ部(多変数の関数)、第20章(合成微分律と勾配ベクトル)、1(合成微分律)の練習問題9の解答を求めてみる。
とおく。
このとき、
求める勾配ベクトルは
コード
#!/usr/bin/env python3
from unittest import TestCase, main
from sympy import symbols, Function, Matrix, exp, log
print('9.')
xs = symbols('x:5', real=True)
X = Matrix(xs)
r = X.norm()
m = symbols('m', integer=True)
fs = [1 / r, r ** 2, 1 / r ** 3, exp(-r ** 2), log(1 / r), 4 / r ** m]
gradfs = [Matrix([f.diff(x, 1) for x in xs])
for f in fs]
class TestDerivativeChainRule(TestCase):
def test_a(self):
self.assertEqual(gradfs[0], - X / r ** 3)
def test_b(self):
self.assertEqual(gradfs[1], 2 * X)
def test_c(self):
self.assertEqual(gradfs[2], -3 * X / r ** 5)
def test_d(self):
self.assertEqual(gradfs[3], -2 * exp(-r ** 2) * X)
def test_e(self):
self.assertEqual(gradfs[4], -X / r ** 2)
def test_f(self):
for m0 in range(-10, 11):
if m == 1:
continue
self.assertEqual(gradfs[5].subs({m: m0}),
-4 * m0 * X/r ** (m0 + 2))
if __name__ == "__main__":
main()
入出力結果(Zsh、PowerShell、Terminal、Jupyter(IPython))
% ./sample9.py -v
9.
test_a (__main__.TestDerivativeChainRule) ... ok
test_b (__main__.TestDerivativeChainRule) ... ok
test_c (__main__.TestDerivativeChainRule) ... ok
test_d (__main__.TestDerivativeChainRule) ... ok
test_e (__main__.TestDerivativeChainRule) ... ok
test_f (__main__.TestDerivativeChainRule) ... ok
----------------------------------------------------------------------
Ran 6 tests in 0.087s
OK
%
0 コメント:
コメントを投稿