2020年5月7日木曜日

学習環境

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



    1. g r a d f x , y , z = g r a d z - e x sin y = - e x sin y , - e x cos y , 1 g r a d f P = g r a d f log 3 , 3 2 π , - 3 = - e log 3 sin 3 2 π , - e log 3 cos 3 2 π , 1 = 3 , 0 , 1

    2. X = P + t 3 , 0 , 1 = ( log 3 , 3 2 π , - 3 ) + t 3 , 0 , 1

    3. 3 x + z = 3 log 3 - 3

コード

#!/usr/bin/env python3
from unittest import TestCase, main
from sympy import symbols, sin,  cos, exp, log, pi, Matrix

print('2.')

x, y, z = symbols('x:z')
f = z - exp(x) * sin(y)
gradf = Matrix([f.diff(o) for o in [x, y, z]])
p = {x: log(3), y: 3 * pi / 2, z: -3}


class TestGradient(TestCase):
    def test_gradf(self):
        self.assertEqual(gradf, Matrix(
            [-exp(x) * sin(y), -exp(x) * cos(y), 1]))

    def test_gradfp(self):
        self.assertEqual(gradf.subs(p), Matrix([3, 0, 1]))


if __name__ == "__main__":
    main()

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

% ./sample2.py -v
2.
test_gradf (__main__.TestGradient) ... ok
test_gradfp (__main__.TestGradient) ... ok

----------------------------------------------------------------------
Ran 2 tests in 0.005s

OK
%

0 コメント:

コメントを投稿