Plot-befehle < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 22:44 Mo 24.03.2008 | Autor: | Riley |
Hallo,
wir kann man denn in Matlab einen Kegel plotten?
Ich würde gerne sehen wie dieser rotierte aussieht:
[mm] $L_r^3 [/mm] = [mm] \left\{ \pmat{x_1 \\x_2\\x_3} \in \IR^3: \left\| \pmat{x_1\\x_2\\x_3} \right\|_2 \leq 2 \cdot x_2 \cdot x_3, x_3 \geq 0 \right\}$
[/mm]
Ich hatte mir das so überlegt
xx=-2:0.1:2;
yy=xx;
[X,Y]=meshgrid(xx,yy);
Z=???
mesh(X,Y,Z);
das Problem ist aber, wie ich diese Ungleichung als Funktion eingeben kann?
Viele Grüße,
Riley
|
|
|
|
Hallo,
> Hallo,
> wir kann man denn in Matlab einen Kegel plotten?
> Ich würde gerne sehen wie dieser rotierte aussieht:
>
> [mm]L_r^3 = \left\{ \pmat{x_1 \\x_2\\x_3} \in \IR^3: \left\| \pmat{x_1\\x_2\\x_3} \right\|_2 \leq 2 \cdot x_2 \cdot x_3, x_3 \geq 0 \right\}[/mm]
>
> Ich hatte mir das so überlegt
>
> xx=-2:0.1:2;
> yy=xx;
> [X,Y]=meshgrid(xx,yy);
> Z=???
> mesh(X,Y,Z);
>
> das Problem ist aber, wie ich diese Ungleichung als
> Funktion eingeben kann?
>
bist du dir darueber im klaren, dass durch [mm] L_r [/mm] eine volumetrische menge gegeben ist und nicht eine flaeche? wegen dem [mm] $\le$-zeichen. [/mm] die grenzflaeche (die eigentlich interessant ist) erhaeltst du, wenn du statt dem [mm] $\le$ [/mm] ein =-zeichen setzt. Dann wird aus deiner beschreibung eine niveauflaechen-gleichung in [mm] R^3. [/mm] Niveauflaechen (oder auch level sets genannt) kannst du in MATLAB leicht mit dem isosurface-befehl plotten.
gruss
matthias
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 17:40 Do 27.03.2008 | Autor: | Riley |
Hallo,
danke für den Befehl. Ich hatte die Definition aber falsch aufgeschrieben. Es ist
[mm] L_r^{n+2} [/mm] = [mm] \{ \vektor{ \overline{x} \\ x_{n+1} \\ x_{n+2}} \in \IR^{n+2} : \| \overline{x} \|_2^2 \leq 2 x_{n+1} x_{n+2} \}
[/mm]
Dann müsste ja
[mm] L_r^3 =\{ x \in \IR^3 : x_1^2 \leq 2 x_2 x_3 \} [/mm] gelten, versteh ich das mit dem Balken so richtig?
Und dann müsste ich für die Niveauflächen [mm] x_1^2 [/mm] = 2 [mm] x_2 x_3 [/mm] eingeben. In den Bspen des "help- menüs" ist isosurface immer in den "patch"-Befehl eingebunden...?
Wie kann ich eigentlich die Matrix finden, die den Lorentzkegel [mm] L^3 [/mm] = [mm] \{ \vektor{x_1 \\ x_2 \\ x_3 }: \sqrt{x_1^2 + x_2^2} \leq x_3 \} [/mm] in den rotierten [mm] L_r^3 [/mm] umwandelt?
VG, Riley
|
|
|
|
|
> Hallo,
> danke für den Befehl. Ich hatte die Definition aber falsch
> aufgeschrieben. Es ist
>
> [mm]L_r^{n+2}[/mm] = [mm]\{ \vektor{ \overline{x} \\ x_{n+1} \\ x_{n+2}} \in \IR^{n+2} : \| \overline{x} \|_2^2 \leq 2 x_{n+1} x_{n+2} \}[/mm]
>
> Dann müsste ja
>
> [mm]L_r^3 =\{ x \in \IR^3 : x_1^2 \leq 2 x_2 x_3 \}[/mm] gelten,
> versteh ich das mit dem Balken so richtig?
>
sollte stimmen, ja.
> Und dann müsste ich für die Niveauflächen [mm]x_1^2[/mm] = 2 [mm]x_2 x_3[/mm]
> eingeben. In den Bspen des "help- menüs" ist isosurface
> immer in den "patch"-Befehl eingebunden...?
patch rendered dann die niveau-flaeche. kopier einfach das bsp. aus der hilfe und setze deine levelset-fkt. ein.
>
> Wie kann ich eigentlich die Matrix finden, die den
> Lorentzkegel [mm]L^3[/mm] = [mm]\{ \vektor{x_1 \\ x_2 \\ x_3 }: \sqrt{x_1^2 + x_2^2} \leq x_3 \}[/mm]
> in den rotierten [mm]L_r^3[/mm] umwandelt?
>
weiss ich jetzt spontan auch nicht.
> VG, Riley
gruss
Matthias
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 21:00 Mo 31.03.2008 | Autor: | Riley |
Hi Matthias,
das Bsp aus dem help-menü sieht so aus:
[x y z v] = flow;
p = patch(isosurface(x, y, z, v, -3));
isonormals(x,y,z,v, p)
set(p, 'FaceColor', 'red', 'EdgeColor', 'none');
daspect([1 1 1])
view(3)
camlight; lighting phong
Wenn ich da [mm] x=\sqrt{2yz} [/mm] einsetze, kommt eine Fehlermeldung, irgendwie passt das nicht. Wie hast du das gedacht?
Viele Grüße, Riley
|
|
|
|
|
> Hi Matthias,
> das Bsp aus dem help-menü sieht so aus:
>
> [x y z v] = flow;
> p = patch(isosurface(x, y, z, v, -3));
> isonormals(x,y,z,v, p)
> set(p, 'FaceColor', 'red', 'EdgeColor', 'none');
> daspect([1 1 1])
> view(3)
> camlight; lighting phong
>
> Wenn ich da [mm]x=\sqrt{2yz}[/mm] einsetze, kommt eine
> Fehlermeldung, irgendwie passt das nicht. Wie hast du das
> gedacht?
>
> Viele Grüße, Riley
also, du musst zunaechst ein 3dim. gitter generieren und dann auf diesem gitter die level set funktion definieren. etwa so
[X,Y,Z]=meshgrid(x,y,z);
phi=X.^2-2*Y.*Z;
dann ist dein kegel gleich [mm] $\phi^{-1}(0)$. [/mm] plotten kannst du ihn mit
p = patch(isosurface(X, Y,Z, phi, 0));
isonormals(X, Y,Z, phi, p)
set(p, 'FaceColor', 'red', 'EdgeColor', 'none');
daspect([1 1 1])
view(3)
camlight; lighting phong
sollte so funktionieren.
gruss
M.
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 10:39 Do 03.04.2008 | Autor: | Riley |
Hallo Matthias,
ah, vielen Dank, so viele Befehle... kommt das so hin ? [Dateianhang nicht öffentlich]
Also ist das wirklich ein Doppelkegel?
Viele Grüße,
Riley
Dateianhänge: Anhang Nr. 1 (Typ: jpg) [nicht öffentlich]
|
|
|
|
|
Hallo Riley,
> Hallo Matthias,
> ah, vielen Dank, so viele Befehle... kommt das so hin ?
> [Dateianhang nicht öffentlich]
> Also ist das wirklich ein Doppelkegel?
sieht doch gut aus, oder? wie eine schraegstehende sanduhr. wenn du die aufloesung des gitters noch ein wenig erhoehst, sieht vermutlich auch die schnittstelle in der mitte sauberer aus. und wenn du mit den achsen-ranges spielst, wird es auch noch mehr wie ein doppelkegel aussehen.
gruss
matthias
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 19:42 Fr 04.04.2008 | Autor: | Riley |
Hallo Matthias,
danke für die Hilfe. Ich hab mal versucht Schrittweite 0.01 zu nehmen, da rechnet er sehr lange und dann kommt eine Fehlermeldung!?
Noch eine Frage, ich hab nun noch versucht die Funktion
f(x,y) = [mm] x^2 [/mm] - 3xy + [mm] y^2 [/mm] zu plotten:
x=-2:0.1:2;
yy=xx;
[X,Y]=meshgrid(xx,yy);
Z=X.^2.-3*X.*Y.+Y.^2;
mesh(X,Y,Z)
Dann kam aber diese Fehlermeldung:
Z=X.^2.-3*X.*Y.+Y.^2; |
Error: "identifier" expected, "+" found.
Was hab ich da nun falsch gemacht?
Viele Grüße,
Riley
|
|
|
|
|
Hi,
> Hallo Matthias,
> danke für die Hilfe. Ich hab mal versucht Schrittweite
> 0.01 zu nehmen, da rechnet er sehr lange und dann kommt
> eine Fehlermeldung!?
das ist vermutlich zu fein... waehle die schrittweite so, dass ein [mm] 150^3 [/mm] gitter rauskommt, das sollte reichen.
>
> Noch eine Frage, ich hab nun noch versucht die Funktion
> f(x,y) = [mm]x^2[/mm] - 3xy + [mm]y^2[/mm] zu plotten:
>
> x=-2:0.1:2;
> yy=xx;
> [X,Y]=meshgrid(xx,yy);
> Z=X.^2.-3*X.*Y.+Y.^2;
> mesh(X,Y,Z)
>
> Dann kam aber diese Fehlermeldung:
> Z=X.^2.-3*X.*Y.+Y.^2; |
> Error: "identifier" expected, "+" found.
>
versuchs mal ohne die dots '.' vor dem + und -. + und - sind sowieso immer elementweise, deshalb brauch man die nicht.
> Was hab ich da nun falsch gemacht?
>
> Viele Grüße,
> Riley
gruss
matthias
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 09:34 Sa 05.04.2008 | Autor: | Riley |
Hi Matthias,
okay, vielen Dank nochmal, es passt!
Viele Grüße,
Riley
|
|
|
|