2009-05-29 1 views
1

У меня нет большого опыта работы с Matlab. Я знаю, что вы можете построить уравнения с 2-х переменными, как это:Как построить нелинейную систему из трех уравнений с 3 символьными переменными в MATLAB?

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

Как бы вы построить три уравнения с три символическими переменными?

Пример система будет:

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. Вот как сделать это с первым уравнением сверху:

func1 = @(x, y) sqrt(1-x.^2-y.^2); 
ezsurf(func1); 

Это должно показать верхнюю половину шара.

Чтобы отобразить все три уравнения вместе, вы можете сделать следующее:

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

При повороте сюжета, вы заметите, что, как представляется, две точки, где все три поверхности пересекаются, давая вам два решения для системы уравнений.

+0

Спасибо. Это очень полезно, и я принимаю ваш ответ. Я знаю, что могу использовать решение (f1, z), например, для его решения для z. Но как мне передать возвращенную функцию ezsurf? Я пробовал f = x^2 + y^2 + z^2-1; f = solve (f, z); func1 = @ (x, y) f; ezsurf (func1); Это явно не работает, но я спрашиваю, есть ли способ сделать это? – miloshadzic

+1

Правильный синтаксис для того, как вы хотите это сделать, будет следующим: f = 'x^2 + y^2 + z^2-1'; f2 = solve (f, 'z'); ezsurf (2 (1)); Оставайтесь на линии; ezsurf (2 (2)); ось равна; Это будет отображать как верх, так и нижнюю часть сферы, к сожалению, с зубчатым разрывом между поверхностями на «экваторе». Чтобы обойти разрыв, вам нужно использовать SURF вместо EZSURF и определить для себя точки x и y, на которых будет отображаться поверхность. – gnovice

+0

Большое спасибо за вашу помощь! – miloshadzic

0

«держать» просто говорит, чтобы не стереть существующие строки & маркеры на текущей оси. вы должны быть в состоянии сделать только

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

Я никогда не использовал ezplot, поэтому не могу помочь вам с этим.

+0

К сожалению, ezplot может работать только с функциями не более двух символических переменных. То, что я ищу, - это способ построения функции из трех переменных. Это не должно быть ezplot. – miloshadzic

+0

К сожалению, я поймал «3 уравнения», но пропустил часть «3 переменные». –

Смежные вопросы