2020年5月6日水曜日

学習環境

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



    1. g r a d f x , y , z = g r a d x 2 + y 2 + z 2 = 2 x , 2 y , 2 z g r a d f 6 , 2 , 3 = 2 6 , 2 , 3

      よって求める接平面の方程式は

      2 6 , 2 , 3 · x , y , z = 2 6 , 2 , 3 · 6 , 2 , 3 6 x + 2 y + 3 z = 36 + 4 + 9 6 x + 2 y + 3 z = 49

      法線の方程式は、

      x , y , z = 6 , 2 , 3 + t 6 , 2 , 3 x , y , z = t 6 , 2 , 3

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

      接平面の方程式。

      x + y + 2 z = 2

      法線の方程式。

      X = 1 , 1 , 0 + t 1 , 1 , 2

    3. g r a d x 2 + x y 2 + y 3 + z + 1 = 2 x + y 2 , 2 x y + 3 y 2 , 1 g r a d f 2 , - 3 , 4 = 13 , 15 , 1 13 x + 15 y + z = 26 - 45 + 4 = - 15 X = 2 , - 3 , 4 + t 13 , 15 , 1

    4. g r a d 2 y - z 3 - 3 x z = - 3 z , 2 , - 3 z 2 - 3 x g r a d f 1 , 7 , 2 = - 6 , 2 , - 12 - 3 = - 6 , 2 , - 15 - 6 x + 2 y - 15 z = - 6 + 14 - 30 = - 22 X = 1 , 7 , 2 + t - 6 , 2 , - 15

    5. g r a d x 2 y 2 + x z - 2 y 3 = 2 x y 2 + z , 2 x 2 y - 6 y 2 , x g r a d f 2 , 1 , 4 = 8 , 2 , 2 = 2 4 , 1 , 1 4 x + y + z = 8 + 1 + 4 = 13 X = 2 , 1 , 4 + t 4 , 1 , 1

    6. g r a d sin x y + sin y z + sin x z = y cos x y + z cos x z , x cos x y + z cos y z , y cos y z + x cos x z g r a d f 1 , π 2 , 0 = 0 , 0 , π 2 + 1 π 2 + 1 z = 0 z = 0 X = 1 , π 2 , 0 + t 0 , 0 , π 2 + 1

コード

#!/usr/bin/env python3
from sympy import symbols, sin, solve
from sympy.plotting import plot3d

print('1.')

x, y, z, t = symbols('x, y, z, t', real=True)
eqs = [x ** 2 + y ** 2 + z ** 2 - 49,
       x * y + y * z + z * x - 1,
       x ** 2 + x * y ** 2 + y ** 3 + z + 1,
       2 * y - z ** 3 - 3 * x * z,
       x ** 2 * y ** 2 + x * z - 2 * y ** 3 - 10,
       sin(x * y) + sin(y * z) + sin(x * z) - 1]
eqs1 = [6 * x + 2 * y + 3 * z - 49,
        x + y + 2 * z - 2,
        13 * x + 15 * y + z + 15,
        -6 * x + 2 * y - 15 * z + 22,
        4 * x + y + z - 13,
        z]

for i, (eq, eq1) in enumerate(zip(eqs, eqs1)):
    c = chr(ord("a") + i)
    print(f'({c})')
    try:
        zs = solve(eq, z) + solve(eq1, z)
        p = plot3d(*zs,
                   show=False)
        p.save(f'sample1_{c}.png')
    except Exception as err:
        print(err)
p.show()

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

% ./sample1.py
1.
(a)
(b)
<string>:1: RuntimeWarning: divide by zero encountered in true_divide
float division by zero
(c)
(d)
(e)
(f)
multiple generators [tan(x*z/2), tan(y*z/2)]
No algorithms are implemented to solve equation -1 + 2*tan(y*z/2)/(tan(y*z/2)**2 + 1) + 2*tan(x*z/2)/(tan(x*z/2)**2 + 1) + 2*tan(x*y/2)/(tan(x*y/2)**2 + 1)
%

0 コメント:

コメントを投稿