2020年5月6日水曜日

学習環境

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



    1. gradfx,y,z=gradx2+y2+z2=2x,2y,2zgradf6,2,3=26,2,3

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

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

      法線の方程式は、

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

    2. gradxy+yz+zx-1=y+z,z+x,x+ygradf1,1,0=1,1,2

      接平面の方程式。

      x+y+2z=2

      法線の方程式。

      X=1,1,0+t1,1,2

    3. gradx2+xy2+y3+z+1=2x+y2,2xy+3y2,1gradf2,-3,4=13,15,113x+15y+z=26-45+4=-15X=2,-3,4+t13,15,1

    4. grad2y-z3-3xz=-3z,2,-3z2-3xgradf1,7,2=-6,2,-12-3=-6,2,-15-6x+2y-15z=-6+14-30=-22X=1,7,2+t-6,2,-15

    5. gradx2y2+xz-2y3=2xy2+z,2x2y-6y2,xgradf2,1,4=8,2,2=24,1,14x+y+z=8+1+4=13X=2,1,4+t4,1,1

    6. gradsinxy+sinyz+sinxz=ycosxy+zcosxz,xcosxy+zcosyz,ycosyz+xcosxzgradf1,π2,0=0,0,π2+1π2+1z=0z=0X=1,π2,0+t0,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 コメント:

コメントを投稿