red_fork Opublikowano 28 Maja 2004 Zgłoś Opublikowano 28 Maja 2004 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ć? Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
spicum Opublikowano 28 Maja 2004 Zgłoś Opublikowano 28 Maja 2004 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 ?? Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
red_fork Opublikowano 29 Maja 2004 Zgłoś Opublikowano 29 Maja 2004 Chodzi mi tylko o wykonanie wykresu funkcji: [x F(x,y) = 0.5 * [x y] * A * y] + [x y] * b gdzie np A=[2 0 0 0.5] b=[2 0] Jeśli jest inny sposób na to to prosiłbym o wskazówki.... Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
spicum Opublikowano 29 Maja 2004 Zgłoś Opublikowano 29 Maja 2004 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 :) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...