WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Richtungsfeld einer Differentialgleichung plotten

 

Gammaquant
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 23.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.05.2009, 16:28     Titel: Richtungsfeld einer Differentialgleichung plotten
  Antworten mit Zitat      
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.

mfg
Gammaquant
Private Nachricht senden Benutzer-Profile anzeigen


steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.022
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2023b
     Beitrag Verfasst am: 25.05.2009, 07:47     Titel:
  Antworten mit Zitat      
Moin,

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.

Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Gammaquant
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 23.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.05.2009, 18:38     Titel:
  Antworten mit Zitat      
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)


Gruß
Gammaquant
Private Nachricht senden Benutzer-Profile anzeigen
 
mr_endres
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 78
Anmeldedatum: 11.06.08
Wohnort: Unterfranken
Version: ---
     Beitrag Verfasst am: 27.05.2009, 12:57     Titel:
  Antworten mit Zitat      
Hallo,

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)
 


das sieht aber immer noch nicht gerade übersichtlich und schön aus


mfg
Johannes
Private Nachricht senden Benutzer-Profile anzeigen
 
Gammaquant
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 23.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 27.05.2009, 20:48     Titel:
  Antworten mit Zitat      
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)

(in der Mitte des Richtungsfeldes werden sie bei dieser Funktion immer kleiner vom Betrag)

mfg
Gammaquant
Private Nachricht senden Benutzer-Profile anzeigen
 
mr_endres
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 78
Anmeldedatum: 11.06.08
Wohnort: Unterfranken
Version: ---
     Beitrag Verfasst am: 28.05.2009, 13:48     Titel:
  Antworten mit Zitat      
Hallo,

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.

mfg
Johannes
Private Nachricht senden Benutzer-Profile anzeigen
 
Gammaquant
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 23.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.05.2009, 16:00     Titel:
  Antworten mit Zitat      
ok danke

jetzt aber noch eine Frage, wie füge ich eine Lösungskurve, beispielsweise y=tan(2*x+3*x)*x, in das Richtungsfeld ein?
Private Nachricht senden Benutzer-Profile anzeigen
 
mr_endres
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 78
Anmeldedatum: 11.06.08
Wohnort: Unterfranken
Version: ---
     Beitrag Verfasst am: 30.05.2009, 09:40     Titel:
  Antworten mit Zitat      
z.B. so:

Code:

[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]);
 



mfg
Johannes
Private Nachricht senden Benutzer-Profile anzeigen
 
Gammaquant
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 23.05.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 30.05.2009, 09:50     Titel:
  Antworten mit Zitat      
Vielen vielen dank Very Happy

lg
Gammaquant
Private Nachricht senden Benutzer-Profile anzeigen
 
carlfr

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.12.2017, 19:57     Titel:
  Antworten mit Zitat      
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? Smile
Grüße
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

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.