|
|
Second-Order Differential Equations |
|
Wurschtl |

Forum-Anfänger
|
 |
Beiträge: 13
|
 |
|
 |
Anmeldedatum: 19.12.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 01.02.2011, 16:30
Titel: Second-Order Differential Equations
|
 |
|
 |
|
Folgende Aufgabe
Write a MATLAB code that solves the following second-order differential equation, using a built-in function ode45(...) over the integration interval 1 <= t <= 2
y''=ycos(2t), y(1)=0, y'(1)=2
Firstly, transform the given equation into a system of two first-order differential equations as described above. Secondly, create a vector-function vecFun=@(t,x)... that contains these first-order differential equations. Then solve the initial value problem using the function ode45(...). The first input argument of ode45(...) should be a vector-function vecFun. Assign the first return value of the function ode45(...) to a variable "time" and the second one to a variable "result".
Hints: A vector function that contains two first-order differential equations should have the following form vecFun=@(t,x)[right part of equation 1; right part of equation 2], where the parameter x is a vector of unknowns x=(x1,x2). The second argument of the function ode45(...) should be an integration interval and the last argument should be a vector of initial values for x1 and x2.
y0=1;
y1=2;
tspan=[1 2];
ODEfun0 = @(t,y0)(y0.*cos(2*t));
ODEfun1 = @(t,y1)(y1.*cos(2*t));
vecFun=@(t,x)[ODEfun0 ODEfun1]
[time,result] = ode45(vecFun,tspan,y)
Nach der letzten Zeile gibts drei Fehler.
Leider sollen wir es ja so machen. Nur mit vecFun gehts net. Habe ich nen Tippfehler, einen im Ansatz oder komplett falsch?
Wäre um Hilfe echt dankbar.
P.s. Screenshoot macht mir auch n paar Probleme
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 01.02.2011, 18:54
Titel:
|
 |
Hallo,
zunächst muss die Differentialgleichung 2. Ordnung in ein System von Differentialgleichungen 1. Ordnung umgeschrieben werden. Üblicherweise setzt man u = x' und stellt dann die DGLen für u und x auf.
Generell stecken in den Fehlermeldungen die wichtigsten Informationen, ihr solltet diese also immer genau ansehen und ggf. hier posten. Z.B. kann MATLAB die Variable y nicht kennen, weil ihr nur y1 und y2 definiert habt.
So gehts besser:
Dabei solltet ihr die im 1. Schritt gefundenen Differentialgleichungen direkt für ODE1 bzw. ODE2 eintragen.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
Wurschtl |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 13
|
 |
|
 |
Anmeldedatum: 19.12.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 01.02.2011, 21:05
Titel:
|
 |
Sehe ich das grad richtig, dass gemeint ist, ich soll ycos(2t) 2 mal ableiten?
Wenn ja bin ich echt saudoof
hab etz folgends
ODEfun = @(t,y)(y.*cos(2*t));
tspan=[1 2];
y=[1 2];
[time1,result1] = ode45(ODEfun,tspan,y);
[time,result] = ode45(ODEfun,tspan,[time1,result1])
Es kommt was raus, aber irgendwie soll ich ja mit vecFun arbeiten.
Soll ich da etz die Ergebnisse, also time 1+2 und result 1+2 in ne Matrix packen?
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 01.02.2011, 21:25
Titel:
|
 |
Hallo,
nein, sollst du nicht.
Du sollst deine Differentialgleichung 2. Ordnung in ein System erster Ordnung umwandeln. Mit zweimal ableiten hat das nichts zu tun.
Den Ansatz hatte ich ja schon geliefert: u = x'. Wenn allgemein x'' = f (t, x, x'), dann folgt
x' = u (nach Definition)
u' (= x'') = f(t, x, u)
... für den Rest siehe oben.
Mehr Details sollte es in Vorlesungsskript /-notizen geben.
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
Wurschtl |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 13
|
 |
|
 |
Anmeldedatum: 19.12.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 02.02.2011, 13:39
Titel:
|
 |
also ich habe mich etz durchgewelzt, aber nichts gefunden, was ich verstehe.
also
tspan=[1 2]
y''=y*cos(2t) y(0)=1, y'(1)=2;
x1(0)=1
x2(1)=2
x1'=x2
also x=[x1 x2]
ode45(f..x1)=result1
ode(45f...x2)=result2
vecFun=@(t,x)[result1 ; result2]
ODEfun=ode45(vecFun,tspan,x)
lieg ich da ungefähr richtig oder eher net?
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 02.02.2011, 20:54
Titel:
|
 |
Hallo,
die Vorlesung kann wohl auch ich nicht ersetzen.
Ich hatte dir eigentlich eine Schritt-für-Schritt Anleitung gegeben, an der du dich durch das Problem hangeln kannst, aber du scheinst mir eher von der Lösung wegzulaufen als zu ihr hin. Setze u = y'. Dann wird aus:
y''=y*cos(2t) y(1)=0, y'(1)=2;
das System
y' = u, y(1) = 0;
u' = y*cos(2t), u(1) = 2;
oder mit y(1) und y(2)
y(1)' = y(2); y(1) (1)= 0;
y(2)' = y(1)*cos(2*t); y(2) (1)= 2;
Angewendet auf meinen ersten Vorschlag ergibt das:
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
Wurschtl |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 13
|
 |
|
 |
Anmeldedatum: 19.12.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 05.02.2011, 12:03
Titel:
|
 |
y=[0 ;2];
tspan=[1 2];
y(1)=0, yonce(1)=2;
ytwo=y*cos(tspan.*2);
vecFun=@(t,y)[y(2); y(1)*cos(2*t)];
[time,result] = ode45(vecFun,tspan,y);
Das ist etz meine Lösung. Stimmt das so?
Zumindest kommt kein Fehler mehr
Und Sorry dass ich so schwer von Begriff war. Nur leider kommt die Vorlesung meist nach der Hausaufgabe
mit dem Befehl:
Entnehmen sie die notwendigen Informationen der help Funktion....
Manchmal bekommen wir auch "Vorschläge" für die Algorithmen, aber der Dozent war diesen Donnerstag leider nicht da. Also der Rechenweg wurde uns diesmal nicht erklärt.
Ich weiß nicht ob es hilft, aber im Jahrgang vor uns haben 90% die erste, 70% die Zweite Klausur NICHT bestanden.
Die dritte Klausur war dann nur noch für einen nicht machbar.
Also die Vorlesungen, Hausaufgaben und Klausuren, naja ich erspare euch meine Meinung.....
Trotzdem Danke für die geduldige Hilfe
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 05.02.2011, 13:53
Titel:
|
 |
Hallo,
das sollte stimmen, ist ja auch im wesentlichen die von mir vorgeschlagene Lösung. Mir ist allerdings schleierhaft, wofür du yonce und ytwo berechnest - sie werden ja später nicht mehr verwendet. y(1) = 0 ist auch überflüssig, da y(1) schon 0 ist. Und dann sind wir wieder bei meinem Code, nur dass ich y0 statt y verwendet habe
Mal aus Neugierde: was studierst du?
Grüße,
Harald
_________________
1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
|
|
|
Wurschtl |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 13
|
 |
|
 |
Anmeldedatum: 19.12.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 05.02.2011, 16:08
Titel:
|
 |
stimmt....
also ich studiere Chemie-Bio-Ingenieurwesen in Erlangen.
|
|
|
|
|
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
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| 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.
|
|