2020年4月28日火曜日

学習環境

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


  1. 点 P、 Q は原点を中心とする半径1の球面 上の点なので、

    P = Q = 1

    である。

    0 t 1 L t = O P + t Q - P = O 1 - t P + t Q = O 1 - t P = - t Q 1 - t P = - t Q 1 - t P = t Q 1 - t = π t = 1 2

    また、

    1 - 1 2 P = - 1 2 Q P = - Q

コード

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

print('12.')

t = symbols('t')
p = Matrix([1 / sqrt(2), 1 / sqrt(2 * sqrt(2)), sqrt(2 * sqrt(2))])
q = Matrix([-1 / sqrt(2), -1 / sqrt(2 * sqrt(2)), -sqrt(2 * sqrt(2))])
l = p + t * (q - p)


class Test(TestCase):
    def test_t(self):
        self.assertEqual(solve([o for o in l]), {t: Rational(1, 2)})

    def test_pq(self):
        for pi, qi in zip(p, q):
            self.assertEqual(pi, -qi)


pp = plot3d_parametric_line(*l, (t, 0, 1), show=False)
x, y = symbols('x, y')
for o in plot3d(*[s * sqrt(1 - x ** 2 - y ** 2) for s in [-1, 1]],
                (x, -1, 1),
                (y, -1, 1),
                show=False):
    pp.append(o)

pp.show()
pp.save('sample12.png')


if __name__ == "__main__":
    main()

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

% ./sample12.py -v
12.
test_pq (__main__.Test) ... ok
test_t (__main__.Test) ... ok

----------------------------------------------------------------------
Ran 2 tests in 0.022s

OK
%

0 コメント:

コメントを投稿