学習環境
- Surface
- Windows 10 Pro (OS)
- Nebo(Windows アプリ)
- iPad
- MyScript Nebo - MyScript(iPad アプリ(iOS))
- 参考書籍
解析入門 原書第3版 (S.ラング(著)、松坂 和夫(翻訳)、片山 孝次(翻訳)、岩波書店)の第Ⅵ部(多変数の関数)、第20章(合成微分律と勾配ベクトル)、4(保存律)の練習問題3の解答を求めてみる。
求めるポテンシャル関数の1つは、
実数に勾配ベクトル、偏微分係数を計算してみる。
コード
#!/usr/bin/env python3
from unittest import TestCase, main
from sympy import symbols, Matrix, log
from sympy.plotting import plot3d
print('3.')
xs = symbols('x:2', real=True)
X = Matrix(xs)
k = symbols('k')
r = X.norm()
f = X / r ** k
phi = -1 / ((k - 2) * r ** (k - 2))
phi2 = log(r)
grad_phi = Matrix([phi.diff(xi, 1) for xi in xs])
grad_phi2 = Matrix([phi2.diff(xi, 1) for xi in xs])
class TestPotential(TestCase):
def test(self):
self.assertEqual(f.simplify(), grad_phi.simplify())
def test2(self):
self.assertEqual(f.subs({k: 2}).simplify(),
grad_phi2.simplify())
p = plot3d(phi.subs({k: 1}),
show=False)
p.save('sample3_1.png')
p = plot3d(phi2, show=False)
p.save('sample3_2.png')
for k0 in range(3, 6):
p = plot3d(phi.subs({k: k0}),
show=False)
p.save(f'sample3_{k0}.png')
p.show()
if __name__ == "__main__":
main()
入出力結果(Zsh、PowerShell、Terminal、Jupyter(IPython))
% ./sample3.py -v
3.
test (__main__.TestPotential) ... ok
test2 (__main__.TestPotential) ... ok
----------------------------------------------------------------------
Ran 2 tests in 0.325s
OK
%
0 コメント:
コメントを投稿