学習環境
- Surface
- Windows 10 Pro (OS)
- Nebo(Windows アプリ)
- iPad
- MyScript Nebo - MyScript(iPad アプリ(iOS))
- 参考書籍
解析入門 原書第3版 (S.ラング(著)、松坂 和夫(翻訳)、片山 孝次(翻訳)、岩波書店)の第Ⅵ部(多変数の関数)、第19章(多変数の関数)、2(偏微分)の練習問題15、16の解答を求めてみる。
コード
#!/usr/bin/env python3
from unittest import TestCase, main
from sympy import symbols, exp, cos, sin, Derivative, Matrix, pi, Rational
from sympy import sqrt
from sympy.plotting import plot3d
print('15, 16.')
x, y, z = symbols('x, y, z')
xyz = [x, y, z]
f1 = exp(-2 * x) * cos(y * z)
df1 = Matrix([Derivative(f1, o, 1).doit() for o in xyz])
p1 = {x: 1, y: pi, z: pi}
f2 = exp(3 * x + y) * sin(5 * z)
df2 = Matrix([Derivative(f2, o, 1).doit() for o in xyz])
p2 = {x: 0, y: 0, z: pi / 6}
class TestGrad(TestCase):
def test_15(self):
self.assertEqual(
df1.subs(p1),
Matrix([-2 * exp(-2) * cos(pi ** 2),
-pi * exp(-2) * sin(pi ** 2),
-pi * exp(-2) * sin(pi ** 2)])
)
def test_16(self):
self.assertEqual(
df2.subs(p2),
Matrix([Rational(3, 2), Rational(1, 2), - 5 * sqrt(3) / 2])
)
for i, f in enumerate([f1, f2], 15):
for j in range(5):
try:
p = plot3d(f.subs({z: j - 2}), show=False)
p.save(f'sample{i}_{j}.png')
except:
pass
p.show()
if __name__ == "__main__":
main()
入出力結果(Zsh、PowerShell、Terminal、Jupyter(IPython))
% ./sample15.py -v
15, 16.
test_15 (__main__.TestGrad) ... ok
test_16 (__main__.TestGrad) ... ok
----------------------------------------------------------------------
Ran 2 tests in 0.089s
OK
%
0 コメント:
コメントを投稿