2020年5月21日木曜日

学習環境

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


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

    FX=C1X·XX

    ポテンシャル関数は

    ϕX=ClogX

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

    gradϕX=gradClogX=CgradlogX

    偏微分を考える。

    X=x1,,xn

    とおく。

    xilogX=xilogk=1nxk2=1k=1nxk2·xik=1nxk2=xik=rnxk2knnxk2

    よって、

    gradϕX=C1X·XX

コード

#!/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 コメント:

コメントを投稿