2020年5月21日木曜日

学習環境

解析入門 原書第3版 (S.ラング(著)、松坂 和夫(翻訳)、片山 孝次(翻訳)、岩波書店)の第Ⅵ部(多変数の関数)、第20章(合成微分律と勾配ベクトル)、4(保存律)の練習問題1の解答を求めてみる。


  1. C である定数とすると、 問題のベクトル場 F は

    F X = C 1 X · X X

    ポテンシャル関数は

    ϕ X = C log X

    実際に勾配ベクトルを求めてみる。

    g r a d ϕ X = g r a d C log X = C g r a d log X

    偏微分を考える。

    X = x 1 , , x n

    とおく。

    x i log X = x i log k = 1 n x k 2 = 1 k = 1 n x k 2 · x i k = 1 n x k 2 = x i k = r n x k 2 k n n x k 2

    よって、

    g r a d ϕ X = C 1 X · X X

コード

#!/usr/bin/env python3
from unittest import TestCase, main
import random
from sympy import symbols, Matrix, log
from sympy.plotting import plot3d
print('1.')

C = symbols('C')
xs = symbols('x:2', real=True)
X = Matrix(xs)
f = C * X / X.norm() ** 2
phi = C * log(X.norm())
grad_phi = Matrix([phi.diff(xi, 1) for xi in xs])


class TestPotential(TestCase):
    def test(self):
        self.assertEqual(f, grad_phi)


p = plot3d(phi.subs({C: 1}),
           show=True)
p.save('sample1.png')

if __name__ == "__main__":
    main()

入出力結果(Zsh、PowerShell、Terminal、Jupyter(IPython))

% ./sample1.py -v
1.
test (__main__.TestPotential) ... ok

----------------------------------------------------------------------
Ran 1 test in 0.087s

OK
%

0 コメント:

コメントを投稿