MATLAB で陰関数をプロットする

MATLAB で f(x,y)=0 というような陰関数を x-y 平面にプロットしたい場合のメモ.



例として x^3+y^3-3xy=0 (デカルトの正葉線) をプロットしたい場合は,

[x, y] = ndgrid(-3:0.01:3,-3:0.01:3); % x,y の範囲は適当に設定
V = x.^3 + y.^3 - 3*x.*y; % ここに関数 f(x,y) を書く.
contour(x, y, V, [0 0],'b'); % ('b' はオプション: 線の色を青に指定)

のようにすればよい.なお x,y はベクトルなので,f(x,y) 内の乗除算,べき乗などは要素毎の演算子 "." をつけないとうまく動かない.



以下は,デカルトの正葉線,カージオイド,リサジュー図形の例.

V = x.^3 + y.^3 - 3*x.*y;

folium

V = (x.^2 + y.^2-2*x).^3-4*x.^2.*y.^2;

cardioid

V = 4*x.^3 - 3*x - (16*y.^5 - 20*y.^3 + 5*y);

lissajous



ちなみに,Mathematica には ImplicitPlot という関数が用意されているほか,

gnuplot でも描く方法はある.