2020年5月1日金曜日

学習環境

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


  1. x = a cos t y = b sin t x 2 a 2 + y 2 b 2 = a 2 cos 2 t a 2 + b 2 sin 2 t b 2 = cos 2 t + sin 2 t = 1 F t = a cos t , b sin t

コード

#!/usr/bin/env python3
from unittest import TestCase, main
import random
from sympy import symbols, sin, cos, pi, solve, plot
from sympy.plotting import plot_parametric

print('15.')

x, y, t = symbols('x, y, t', real=True)
a = 2
b = 1
eq = x ** 2 / a ** 2 + y ** 2 / b ** 2 - 1
ys = solve(eq, y)
x0 = a * cos(t)
y0 = b * sin(t)


class Test(TestCase):
    def test(self):
        for _ in range(10):
            self.assertEqual(
                float((x0 ** 2 / a ** 2 + y0 ** 2 / b ** 2)
                      .subs({t: random.randrange(-10, 10)})),
                1)


px = plot(*ys, (x, -5, 5), ylim=(-5, 5),
          legend=True,
          show=False)
colors = ['red', 'green', 'blue', 'brown', 'orange',
          'purple', 'pink', 'gray', 'skyblue', 'yellow']

for o, color in zip(px, colors):
    o.line_color = color
px.save('sample15_1.png')

pt = plot_parametric(x0, y0,
                     xlim=(-5, 5),
                     ylim=(-5, 5),
                     show=True)
pt.save('sample15_2.png')

if __name__ == "__main__":
    main()

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

% ./sample15.py -v
15.
test (__main__.Test) ... ok

----------------------------------------------------------------------
Ran 1 test in 0.010s

OK
%

0 コメント:

コメントを投稿