2020年5月19日火曜日

学習環境

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


  1. g r a d f x , y = g r a d x 2 + x y + y 2 = 2 x + y , x + 2 y g r a d f - 1 , 1 = - 2 + 1 , - 1 + 2 = - 1 , 1

    方向微分係数について。

    - 1 , 1 · - 1 , 1 - 1 , 1 = - 1 , 1 2 - 1 , 1 = 1 + 1 = 2

コード

#!/usr/bin/env python3
from unittest import TestCase, main
from sympy import symbols, Matrix, sqrt
from sympy.plotting import plot3d

print('7.')

x, y = symbols('x, y', real=True)
f = x ** 2 + x * y + y ** 2
gradf = Matrix([f.diff(o, 1) for o in [x, y]])
a = {x: -1, y: 1}
gradfa = gradf.subs(a)


class TestGrad(TestCase):
    def test_direction(self):
        self.assertEqual(gradfa, Matrix([-1, 1]))

    def test_directional_derivative(self):
        self.assertEqual(gradfa.norm(), sqrt(2))


p = plot3d(f, show=False)
p.xlabel = x
p.ylabel = y
p.save('sample7.png')
p.show()

if __name__ == "__main__":
    main()

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

% ./sample7.py -v
7.
test_direction (__main__.TestGrad) ... ok
test_directional_derivative (__main__.TestGrad) ... ok

----------------------------------------------------------------------
Ran 2 tests in 0.002s

OK
%

0 コメント:

コメントを投稿