多変数の関数 グラフと等位線 4次式、2次方程式、判別式、解
続 解析入門 (原書第2版) (S.ラング(著)、松坂 和夫(翻訳)、片山 孝次(翻訳)、岩波書店)の第3章(多変数の関数)、1(グラフと等位線)の練習問題12.の解答を求めてみる。
のとき、
のとき、
コード
#!/usr/bin/env python3
from sympy import plot, solve, Rational
from sympy.plotting import plot3d
from sympy.abc import x, y
print('12.')
f = x * y ** 2 / (x ** 2 + y ** 4)
colors = ['red', 'green', 'blue', 'brown', 'orange',
'purple', 'pink', 'gray', 'skyblue', 'yellow']
p = plot3d(f, show=False)
p.save(f'sample12_1.png')
xs = []
for c in [-Rational(1, 2), -Rational(1, 4),
Rational(1, 4), Rational(1, 2)]:
xs += solve(f - c, x)
print(xs)
p = plot(*xs,
(y, -10, 10),
ylim=(-10, 10),
legend=True,
show=False)
p.xlabel = y
p.ylabel = x
for o, color in zip(p, colors):
o.line_color = color
print(o, color)
p.xlabel = x
p.ylabel = y
p.save(f'sample12_2.png')
p.show()
入出力結果
% ./sample12.py
12.
[-y**2, y**2*(-2 + sqrt(3)), -y**2*(sqrt(3) + 2), y**2*(2 - sqrt(3)), y**2*(sqrt(3) + 2), y**2]
cartesian line: -y**2 for y over (-10.0, 10.0) red
cartesian line: y**2*(-2 + sqrt(3)) for y over (-10.0, 10.0) green
cartesian line: -y**2*(sqrt(3) + 2) for y over (-10.0, 10.0) blue
cartesian line: y**2*(2 - sqrt(3)) for y over (-10.0, 10.0) brown
cartesian line: y**2*(sqrt(3) + 2) for y over (-10.0, 10.0) orange
cartesian line: y**2 for y over (-10.0, 10.0) purple
%