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;
V = (x.^2 + y.^2-2*x).^3-4*x.^2.*y.^2;
V = 4*x.^3 - 3*x - (16*y.^5 - 20*y.^3 + 5*y);
ちなみに,Mathematica には ImplicitPlot という関数が用意されているほか,