数学のブログ

多変数の関数 グラフと等位線 4次式、2次方程式、判別式、解

続 解析入門 (原書第2版) (S.ラング(著)、松坂 和夫(翻訳)、片山 孝次(翻訳)、岩波書店)の第3章(多変数の関数)、1(グラフと等位線)の練習問題12.の解答を求めてみる。

x y 2 x 2 + y 4 = c
x y 2 = c x 2 + c y 4
c x 2 - y 2 x + c y 4 = 0
c = 0

のとき、

x y 2 = 0
x = 0 y = 0
c 0

のとき、

x = y 2 ± y 4 - 4 c 2 y 4 2 c
= 1 ± 1 1 - ( 2 c ) 2 2 c y 2
0 < | 2 c | 1 0 < | c | 1 2

コード

#!/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
%