2009-05-29 13 views
1

私はMatlabに多くの経験がありません。私はあなたがこのような2つの変数と方程式をプロットすることができます知っている:MATLABで3つの記号変数を持つ3つの方程式の非線形システムをプロットするにはどうすればよいですか?

ezplot(f1) 
hold on 
ezplot(f2) 
hold off; 

どのようにして記号変数と3つの方程式をプロットでしょうか?

例示的なシステムは次のようになります。

x^2+y^2+z^2-1=0 
2*x^2+y^2-4*z=0 
3*x^2-4y+z^2=0 

3式の任意のシステムをプロットする方法があった場合、それは理想的です。

答えて

4

私はezsurfがあなたの望むものに近いと信じています。最初にそれぞれの方程式をzのために解き、その方程式の関数を作り、それをezsurfとプロットする必要があります。上記の最初の式を使って行う方法は次のとおりです。

球の上半分が表示されます。

次の操作を行うことができ、一緒にすべての3つの方程式を表示するには:

func1 = @(x, y) sqrt(1-x.^2-y.^2); 
func2 = @(x, y) 0.5.*x.^2+0.25.*y.^2; 
func3 = @(x, y) sqrt(4.*y-3.*x.^2); 
ezsurf(func1, [-1 1 -1 1]); 
hold on; 
ezsurf(func2, [-1 1 -1 1]); 
ezsurf(func3, [-1 1 -1 1]); 
axis([-1 1 -1 1 0 1]); 

と結果のプロットは、次のようになります。プロットを回転させることにより

enter image description here

を、あなたは気づくでしょう3つの面がすべて交差する2つの点があり、方程式系の2つの解を与えているようです。

+0

ありがとうございます。これは非常に役に立ち、私はあなたの答えを受け入れています。 私はsolve(f1、z)を使ってzを解くことができます。しかし、返された関数をどのようにezsurfに渡すのでしょうか? 私は試しました f = x^2 + y^2 + z^2-1; f = solve(f、z); func1 = @(x、y)f;func1 = @(x、y)f; ezsurf(func1); それは明らかに機能しませんが、私はそれを行う方法があるのですか? – miloshadzic

+1

正しい構文は、次のようになります。f = 'x^2 + y^2 + z^2-1'; f2 = solve(f、 'z'); ezsurf(f2(1));つかまっている; ezsurf(f2(2));軸は等しい。これは球の頂点と底面の両方をプロットしますが、不幸にも「赤道」のサーフェス間のギザギザの不連続性があります。不連続性を回避するには、EZSURFの代わりにSURFを使用し、サーフェスがレンダリングされるxおよびyポイントを自分で定義する必要があります。 – gnovice

+0

ありがとうございました! – miloshadzic

0

"hold on"は、現在の軸上の既存の行&のマーカーを消去しないことを示しています。あなただけができるはずです

ezplot(f1); 
hold on; 
ezplot(f2); 
ezplot(f3); 
hold off; 

私はezplotを使ったことがないので、あなたはそれを手伝ってはいけません。

+0

残念ながら、ezplotは2つ以上のシンボリック変数の関数でしか動作できません。私が探しているのは、3つの変数の関数をプロットする方法です。それはエズプロットである必要はありません。 – miloshadzic

+0

おっと、私は "3つの方程式"をキャッチしましたが、 "3つの変数"の部分は見逃しました。 –

関連する問題