Verfasst am: 23.05.2009, 16:28
Titel: Richtungsfeld einer Differentialgleichung plotten
Hi,
ich bin noch ziemlich neu hier und hab mal ne Frage zum plotten eines Richtungsfeldes einer DGL.
Ich schreibe zur Zeit eine Facharbeit in Mathe und bräuchte zur genaueren Erläuterung selbstgeplottete Bespiele für ein Richtungsfeld (der zuständige Befehl heißt "quiver" ).
Da ich noch kaum mit Matlab gearbeitet habe bin ich noch ziemlich unsicher und freue mich über jeden tip.
Bisher habe ich erstmal x und y belegt mit:
[x,y] =meshgrid(-10:0.5:10);
und versucht für die DGL y'(x)= -y/x oder y'=x²+y² auf diese Weise darzustellen, aber entweder komme ich nicht weiter oder ich bekomme nur singuläre lösungen.
irgendwie hilft diese Beschreibung nicht wirklich. Etwas Code wäre hilfreich (bitte mit der Code-Umgebung), der zeigt, was du im Moment machst und dann nochmal die Beschreibung, was gemacht werden soll.
Also ich verstehe nicht was an diesen drei zeilen falsch sein soll
Code:
[x,y]=meshgrid(-10:0.5:10); % ich spanne mir ein gatter mit allen x und y koorinaten auf
dy=x^2+y^2; % das soll die DGL sein quiver(x,y,ones(size(x)),dy) %Erzeugung des Richtungsfeldes mit Hilfe von Vektoren (ones(size(x)), dy)
in deinem code multiplizierst du matrizen miteinander, besser so (auf die Punkte achten):
Code:
[x,y]=meshgrid(-10:0.5:10); % ich spanne mir ein gatter mit allen x und y koorinaten auf
dy=x.^2+y.^2; % das soll die DGL sein quiver(x,y,ones(size(x)),dy) %Erzeugung des Richtungsfeldes mit Hilfe von Vektoren (ones(size(x)), dy)
kann mir jetzt vielleicht noch jemand sagen wie ich die Vektoren alle gleichlang plotten kann, damit das Richtungsfeld einheitlich aussieht?
Code:
[x,y]=meshgrid(-10:0.5:10); % ich spanne mir ein gatter mit allen x und y koorinaten auf
dy=x.^2+y.^2; % das soll die DGL sein quiver(x,y,ones(size(x)),dy,3) %Erzeugung des Richtungsfeldes mit Hilfe von Vektoren (ones(size(x)), dy)
habe zunächst mal deinen Wertebereich etwas geändert, damit man überhaupt etwas sieht.
Um gleiche Längen zu erhalten musst du die Vektoren nur normieren.
Code:
[x,y]=meshgrid(-3:.2:3); % ich spanne mir ein gatter mit allen x und y koorinaten auf
dy=x.^2+y.^2; % das soll die DGL sein norm=sqrt(dy.^2+1);
quiver(x,y,ones(size(x))./norm,dy./norm,0.3) %Erzeugung des Richtungsfeldes mit Hilfe von Vektoren (ones(size(x)), dy)
Die letzte Zahl, welche quiver als Argument übergeben wird skaliert die Länge der Pfeile (sonst macht das Matlab automatisch; 0 bedeutet keine Skalierung, also hier Länge 1.
[x,y]=meshgrid(-3:.2:3,-5:.2:5); % ich spanne mir ein gatter mit allen x und y koorinaten auf
dy=x.^2+y.^2; % das soll die DGL sein norm=sqrt(dy.^2+1);
quiver(x,y,ones(size(x))./norm,dy./norm,0.3) %Erzeugung des Richtungsfeldes mit Hilfe von Vektoren (ones(size(x)), dy) hold on;
ezplot('tan(2*x+3*x)*x',[-3,3,-5,5]);
Hey, ich habe versucht nach dieser Anleitung das Richtungsfeld einer DGL zu plotten, was aber nicht funktionierte...
die Gleichung: dy=1+y(x)^2
dazu habe ich die Anfangsbedingung: y(pi/4)=-1
mein Code bis jetzt:
dsolve('Dy=1+y(x)^2','y(pi/4)=-1','x') %Anfangsbedingung in Gleichung einsetzen und lösen
Y=ans;
ezplot(Y,[-5,5])
hold on
[x,y]=meshgrid(-10:.5:10);
dy=1+y(x)^2 %welche Gleichung muss hier hin?
norm=sqrt(dy.^2+1);
quiver(x,y,ones(size(x))./norm,dy./norm,0.3)
Die DGL wird mir geplottet, das Richtungsfeld hingegen nicht.
Es erscheint die Fehlermeldung: "Subscript indices must either be real positive integers or logicals."
Kann mir jemand weiterhelfen?
Grüße
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.