2020年5月15日金曜日

学習環境

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


  1. g r a d f x , y = g r a d 10 + 6 cos x cos y + 3 cos 2 x + 4 cos 3 y = - 6 sin x cos y - 6 sin 2 x , - 6 cos x sin y - 12 sin 3 y g r a d f π 3 , π 3 = - 6 · 1 2 · 3 2 - 6 · 3 2 , - 6 · 1 2 · 3 2 = - 9 3 2 , - 3 3 2

    よって、温度の最大増加の向きは

    - 9 3 2 , - 3 3 2

    最大減少向きは

    9 3 2 , 3 3 2

コード

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

print('3.')

x, y = symbols('x, y')
f = 10 + 6 * cos(x) * cos(y) + 3 * cos(2 * x) + 4 * cos(3 * y)
gradf = Matrix([f.diff(o, 1) for o in [x, y]])
p = {x: pi / 3, y: pi / 3}
gradfp = gradf.subs(p)


class TestGrad(TestCase):
    def test(self):
        self.assertEqual(gradfp,
                         Matrix([-9 * sqrt(3) / 2, - 3 * sqrt(3) / 2]))


p0 = plot3d(f,
            (x, -5, 5),
            (y, -5, 5),
            show=False)
p0.show()
p0.save('sample3.png')


if __name__ == "__main__":
    main()

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

% ./sample3.py -v
3.
test (__main__.TestGrad) ... ok

----------------------------------------------------------------------
Ran 1 test in 0.001s

OK
%

0 コメント:

コメントを投稿