Matlab < Matlab < Mathe-Software < Mathe < Vorhilfe
|
Hallo,
ich habe die DGL
$y''(x) [mm] +(y(x)^2-3y'(x)+y^3(x)=0$
[/mm]
für die Darstellung der periodischen Lösung im Phasenraum soll ich den Flächeninhalt bestimmen.
1. Umschreiben der DGL in ein System 1. Ordnung (hier ist mein Code):
function erg = dgl1(t,y)
erg(1) = y(2);
erg(2) = [mm] -(y(1)^2 [/mm] - 3)*y(2) [mm] -y(1)^3;
[/mm]
erg = erg';
2. Finden der periodischen Lösung und plotten:
(Ich habe erstmal grob geplottet und festgestellt, dass die Lösung
bis 50 eingeschwungen ist, d.h. ich bestimme einfach eine Periode
ab t=50)
[t,y] = ode45('dgl1',[0 50],[1 1],odeset('OutputFcn',@odephas2));
startvektor = y(end,:)
p_laenge = fminbnd('periode',54,58);
% plot der Periode
[t,y] = ode45('dgl1',[50 p_laenge],startvektor,odeset('OutputFcn',@odephas2));
und der Funktion:
function erg = periode(zeit)
[t,y] = ode45('dgl_klausur',[0 50],[1 1]);
vergleich = y(end,:);
[t,y] = ode45('dgl_klausur',[50 zeit],vergleich);
erg = norm(y(end,:)-vergleich,2);
3. Berechnen des Flächeninhalts:
f(t) = [mm] \integral_{0}^{t} {(y'(s))^2 ds}
[/mm]
Das würde ich jetzt gerne über DGLs lösen. Meine Idee dafür:
function erg = dgl2(t,y)
erg = [mm] y(1)^2;
[/mm]
und dann Aufruf aus dem Hauptteil
Als Startwert muss ich nun die erste Ableitung von y an der Stelle 50 nehmen, d.h. die zweite Komponenten aus dem "startvektor".
[t,y] = ode45('dgl2',[50 p_laenge],startvektor(2));
Der letzte y-Wert müsste dann die Fläche beschreiben?!
Da kommt bei mir aber folgendes raus:
$ans = 3.8446e+012$
und das kann wohl nicht sein. Ich habe früher mal 97.6778 berechnet, mir aber dafür keine Notizen mehr gemacht wie ich darauf gekommen bin.
Könnte mir da jemand weiterhelfen?
Gruß
marthasmith
|
|
|
|
>[..... ]
> 3. Berechnen des Flächeninhalts:
>
> f(t) = [mm]\integral_{0}^{t} {(y'(s))^2 ds}
[/mm]
>
> Das würde ich jetzt gerne über DGLs lösen. Meine Idee
> dafür:
>
> function erg = dgl2(t,y)
> erg = [mm]y(1)^2;
[/mm]
> und dann Aufruf aus dem Hauptteil
> Als Startwert muss ich nun die erste Ableitung von y an
> der Stelle 50 nehmen, d.h. die zweite Komponenten aus dem
> "startvektor".
Die zweite Dgl soll doch dem Wert des Integrals genügen - und [mm] $\integral_{50}^{50}{irgendwas} [/mm] dx=$0
>
> [t,y] = ode45('dgl2',[50 p_laenge],startvektor(2));
>
> Der letzte y-Wert müsste dann die Fläche beschreiben?!
> Da kommt bei mir aber folgendes raus:
> [mm]ans = 3.8446e+012[/mm]
>
> und das kann wohl nicht sein. Ich habe früher mal 97.6778
> berechnet, mir aber dafür keine Notizen mehr gemacht wie
> ich darauf gekommen bin.
Ich habe mir da ein paar Notizen mit Mathematica gemacht. Da Du ja weißt, um was es geht, sollte die Syntax von Mathematica deutbar sein. Wenn nicht, frag noch mal nach.
>
> Könnte mir da jemand weiterhelfen?
>
Ich hoffe doch.
> Gruß
>
> marthasmith
>
Gruß zurück,
Peter
|
|
|
|
|
Hallo Peter_Pein,
vielen Dank für die ausführliche Beschreibung (meine Periodenlänge war ja auch keine einzelne, sondern eine doppelte), aber irgendwie hab ich wohl ein Brett vor'm Kopf
(dies ist wieder die DGL, die den Flächeninhalt berechnen soll)
function erg = dgl_klausur2(t,y)
erg(1) = [mm] y(1)^2;
[/mm]
Nun ist mir auch klar, dass [mm] \integral_{50}^{50} {f'(x)^2 dx} [/mm] = 0
sein soll, aber das hilft mir ja für meine Anfangsbedingung nicht
weiter, denn ich muss doch eine Anfangsbedingung f'(50) [ also ein Startwert für y(1)] angeben.
Und was ich habe ist f(50) = 0 [ also erg(1) = 0 , daraus würde ja auch
folgen, dass y(1) = 0 ist].
Das endet aber erfolglos mit einem Ergebnisvektor 0.
Ich würde mich freuen, wenn ich eine Antwort erhalte.
marthasmith
|
|
|
|
|
Hallo Alice,
nach meinen Berechnungen ist [mm] $y'(50)\approx [/mm] 10.316$, aber die Funktion, die das Integral über [mm] $y'(x)^{2}$ [/mm] aufsummiert, muss natürlich bei 50 den Wert Null haben.
[Dateianhang nicht öffentlich]
Ich fürchte wir haben da ein wenig aneinander vorbei geredet. Wäre es nicht doch einfacher, die Werte von $y'(x)$ bis 52.39 ("periode50") auszurechnen, und die Quadrate numerisch zu integrieren? Leider weiß ich nicht, welche Möglichkeiten matlab da bietet :-(
Aber nochmal zusammengefaßt: die Dgl., die die Fläche bestimmen soll (nennen wir sie mal $fl(x)$ ), muss, wenn wir diese Periode ab $x=50$ betrachten, bei 50 den Wert Null haben und ihre erste Ableitung ist [mm] $fl'(x)=y'(x)^{2}$. [/mm] Und dann ist $fl(periode50)$ der gesuchte Wert.
Hoffentlich habe ich mich diesmal etwas verständlicher ausgedrückt...
Alles Gute,
Peter
Dateianhänge: Anhang Nr. 1 (Typ: gif) [nicht öffentlich]
|
|
|
|
|
Hallo Peter,
vielen Dank für deine Antwort, ich werde es einfach nochmal mit einer numerischen Integration machen (matlab hat eine Funktion trapz, die die Trapezregel anwendet).
Auf jeden Fall ist mir jetzt klar wie es funktionieren müsste.
Gruß aus Hamburg
marthasmith
|
|
|
|