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

DGL 1. Grades ... sollte einfach sein.

 

juniata
Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 12.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 12.05.2011, 16:29     Titel: DGL 1. Grades ... sollte einfach sein.
  Antworten mit Zitat      
Hi,

ich bin ein ganz junger Matlabbenutzer und versuche mich gerade am Lösen einer ganz einfachen DGL 1. Ordnung mit ODE45. Überall finde ich nette Beispiele zum Lösen von DGLn höherer Ordnung bzw. Systemen, oder es wird davon ausgegangen, dass der Leser ordentliche Vorkenntnisse hat. Vielleicht kann mir hier jemand helfen. Wie würde z.B. y'=y aussehen, m-file und Aufruf.

Konkret will ich mir die Blochgleichung DeltaM=[M0-Mz(t)]Deltat ansehen, erstmal mit M0 als Konstante, dann zeitabhänig und die Zeitschritte sollen dann variiert werden.

Wäre echt nett, wenn mir jemand helfen könnte.

Viele Grüße!
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 12.05.2011, 16:47     Titel:
  Antworten mit Zitat      
Hallo,

die Funktion:
Code:
function dy = f(t, y)
dy = y;

der Aufruf:
Code:
[t, y] = ode45(@f, [0 1], 0)


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
juniata
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 12.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.05.2011, 12:20     Titel:
  Antworten mit Zitat      
Okay! Wenn ich jetzt die Nullstelle noch auf 1 setze, werden mir auch nicht nur Nullen ausgespuckt Smile
Danke!
Private Nachricht senden Benutzer-Profile anzeigen
 
juniata
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 12.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.05.2011, 13:42     Titel:
  Antworten mit Zitat      
Hi,

ich versuche gerade, ähnlich wie in folgendem Beispiel für mehrere Werte von a Lösungen ausspucken zu lassen und dann in einem Fenster zu plotten.

Beispiel ohne ODE:
Code:

function s=signal(max)
n=(1:0.1:10)';
for a=10:30:max
s(:,a)=sin(a/180*pi).*((cos(a/180*pi)).^(n-1)).*exp(-((n-1).*100)/200);
end
plot(n,s)
 

Meine DGL, die gelöst werden soll, sieht so aus:
dy/dt=((cos(a)^n)-y)
und a soll Werte durchlaufen z.B. a=10:10:90

Hat da jemand eine Idee, wie ich das unterbringe?

Vielen Dank!

Edit by _Peter_: Bitte Codeumgebung verwenden. Danke.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 23.05.2011, 14:45     Titel:
  Antworten mit Zitat      
Hallo,

ich vermute, dir ist geholfen, wenn ich mein Beispiel so anpasse, dass es einen Parameter annimmt?
Die Funktion:
Code:
function dy = f(t, y,a)
dy = a*y;  


Der Aufruf:
Code:
[t, y] = ode45(@(t,y) f(t, y, a), [0 1], 1)


Über das a kannst du dann eine Schleife laufen lassen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
juniata
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 12.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 24.05.2011, 17:01     Titel:
  Antworten mit Zitat      
function dy = f(t, y, a)
n=(1:1:50)';
t1=200;
for a=10:10:90
dy = (((cos(a)).^t)-y)./t1;
end
??
Ich bekomme immer die Fehlermeldung, dass a undefined sei.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 24.05.2011, 19:00     Titel:
  Antworten mit Zitat      
Hallo,

ich bin davon ausgegangen, dass die Schleife außerhalb sein soll, sprich dass die DGL für jeweils konstante Werte von a gelöst werden soll.

Bei dir sieht es so aus, als ob innerhalb der DGL variiert werden soll? Davon abgesehen ist es nicht sinnvoll, dy in der for-Schleife laufend zu überschreiben.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
Verschoben: 24.05.2011, 21:52 Uhr von _Peter_
Von Sonstige MATLAB Fragen nach Programmierung
 
juniata
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 12
Anmeldedatum: 12.05.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 25.05.2011, 09:47     Titel:
  Antworten mit Zitat      
Soll sie auch, nur weiß ich dann garnich, wo ich's hinpacken soll. Muss mich wohl nochmal grundlegend damit befassen. Klingt logisch!
Danke jedenfalls!!!
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 25.05.2011, 10:12     Titel:
  Antworten mit Zitat      
Hallo,

nochmal bezogen auf mein Beispiel:
Code:
a = 10:10:90;
for I = 1:length(a)
[t{I}, y{I}] = ode45(@(t,y) f(t, y, a(I)), [0 1], 1)
end


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
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 - 2025 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.