Skocz do zawartości
red_fork

Wykres 3D w Matlabie - problem!!!

Rekomendowane odpowiedzi

Chce zrobic wykres funkcji dwuargumentowej podanej wzorem macierzowym:

F(x,y)=0.5* [x y] * A * [x;y] + [x y]* b

gdzie A to macierz 2X2 a b to wektor 1X2

 

Próbuje wiec zrobić to tak:

 

[x,y]=meshgrid(-5:0.2:5,-5:0.2:5) - siatka

z=0.5* [x y] * A * [x;y] + [x y]* b

mashc(x,y,z)

 

Problem w tym, ze x i y to wektory i przez to w równaniu z=.... nie zgadzaja sie wymiary macierzy... Jak to zrobić?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Chce zrobic wykres funkcji dwuargumentowej podanej wzorem macierzowym: 

F(x,y)=0.5* [x y] * A * [x;y] + [x y]* b 

gdzie A to macierz 2X2 a b to wektor 1X2 

 

Próbuje wiec zrobić to tak: 

 

[x,y]=meshgrid(-5:0.2:5,-5:0.2:5) - siatka 

z=0.5* [x y] * A * [x;y] + [x y]* b 

mashc(x,y,z) 

 

Problem w tym, ze x i y to wektory i przez to w równaniu z=.... nie zgadzaja sie wymiary macierzy... Jak to zrobić?

nie mam pojecia kiedy ostatni raz algebre widziales ale:

[x,y]=meshgrid(-5:0.2:5,-5:0.2:5)

wygeneruje Ci nie wektory tylko macierze !!.

x i y beda macierazmi 51x51

wygwneruj sobie po prostu

x = -5:0.2:5;

x = x';

y = -5:0.2:5;

y = y';

transponowanie tego na na celu ustawienie x i y jako pionowe wektory

(jak rozumiem chciales otrzymac siatke)

 

tu matematyki nie przeskoczysz

z=0.5* [x y] * A * [x;y] + [x y]* b

trzebaby transponowac x i y dla tego dzialania: A * [x;y]

[x;y] daje macierz 102x1 a powinna do tego mnozenia dac 52x2

z = 0.5* [x y] * A * [x';y']

teraz z bedzie macierza 51x51

[x y]* b mnozenie 51x2 przez 1x2 jest niemozliwe wypadaloby trzbsponowac tym razem b

[x y]* b' co daje macierz 51x1 a czego matlab w zyciu nie doda do 51x51

teraz pytanie czy interesuje cie replikacja wiersza 51x1 na macierz 51x51 czy tez odjecie od konkretnego wiersza ??

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Nie wiem jak zinterpretowac koncowke ale :

x = -5:0.2:5; x = x'; y = -5:0.2:5; y = y'; A = [2 0;0 0.5];b = [2;0];z1 = 0.5* [x y] * A * [x';y'];z2 = [x y]*b;
oczywiscie zakres x i y jest przykladowy

 

teraz element niepewny przypuszczam ze chodzi o odjecie z2 (51x1) od kazdego wiersza z1 czyli:

z3 = repmat(z2,1,51);z = z1 + z3;meshc (x,y,z);
ladnie sie rysuje (chwilke trwa);

oczywiscie 51 wynika z ilosci elementow w x i y !!

 

pewnie moznaby sprobowac innej operacji na z2 moze uzupelnienie do wielkosci z1 zerami ??

ale to juz kwestia interpretacji :)

Moze znajdzie sie jakis maniak algebry ktory wyjasni jak to rozpatrywac :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...