|
|
Symbolic Math: mehrdimensionale Differentialgleichung lösen |
|
Blaubaer |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 03.09.2008, 13:03
Titel: Symbolic Math: mehrdimensionale Differentialgleichung lösen
|
|
Hallo!
Nachdem ich das ganze Netz danach abgesucht und nichts gefunden hab, hier meine Frage. Hoffentlich bin ich im richtigen Thread
Also ich möchte eine Differentialgleichung lösen die ungefähr so aussieht:
'(DB)=[a1 0;a12 a2]*B+diag(B*transpose(B))*[1 0;beta12 0])' , 'B(0)=[0;0]'
Das Problem ist das dsolve anscheinend keine zweidim Fkt als Eingabe mag. Ich kann die Gleichung ja auch nicht splitten, da in der Gleichung ja B^2 vorkommt.
Es muss doch irgendeine Möglichkeit geben diese Gleichung zu lösen, oder?
Wäre super wenn jemand eine Idee hätte.
Vielen Dank schon mal!
|
|
|
|
|
Bijick |
Ehrenmitglied
|
|
Beiträge: 914
|
|
|
|
Anmeldedatum: 18.06.07
|
|
|
|
Wohnort: Nürnberg
|
|
|
|
Version: R2006b, R2008b
|
|
|
|
|
|
Verfasst am: 03.09.2008, 14:04
Titel:
|
|
Hallo Blaubaer,
ja, Du bist richtig hier, herzlich Willkommen.
Prinzipiell kommt Matlab gut damit klar, wenn die gesuchte Funktion von mehreren Variablen (B1, B2) abhängig ist, und natürlich ist die Ableitung dann ein Gradient und hat auch zwei Einträge.
In der Hilfe findet sich ein Beispiel mit der "van der Pol equation". Da ist das genauso.
Wenn Du Probleme mit der Umsetzung hast, poste doch Deinen Code und eventuell auftretende Fehlermeldungen hier.
Herzliche Grüße
Bijick
_________________
>> why
|
|
|
Blaubaer |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 03.09.2008, 15:01
Titel:
|
|
Hallo Bijick,
danke für deine schnelle Antwort. Eigentlich will die Lsg zu folgender DGL:
dsolve('(DB)=transpose([-a1 0;a12 a2])*B+diag(B*transpose(B))*[1 0;beta12 0]','B(0)=[0; 0]')
aber da bekomme ich die Fehlermeldung ??? Error using ==> dsolve at 300 at offset 50, `;` unexpected
Das bedeuted wohl das dsolve bereits mit Matrizen überfordert ist
Bei dem vereinfachten Problem
dsolve('(DB)=[a1 a2]+B','B=[1 1]')
bekome ich die Fehlermeldung
??? Error using ==> dsolve at 300
Error, (in PDEtools/NumerDenom) invalid input: PDEtools/NumerDenom expects its 1st argument, ee, to be of type algebraic, but received [-a1, -a2]
Ich habe wirklich schon sehr lange rumprobiert aber nichts funktioniert.
In meiner Matlab Hilfe finde ich leider auch kein Bsp für die Lsg einer DGL mit einer Fkt die ins 2-dimensionale abbildet.
Danke nochmal für Lsgvorschläge.
Blaubaer
|
|
|
Bijick |
Ehrenmitglied
|
|
Beiträge: 914
|
|
|
|
Anmeldedatum: 18.06.07
|
|
|
|
Wohnort: Nürnberg
|
|
|
|
Version: R2006b, R2008b
|
|
|
|
|
|
Verfasst am: 03.09.2008, 15:43
Titel:
|
|
Hallo Blaubär,
entschuldige, ich war bisher auf dem falschen Dampfer und dachte, dass Du eine DGL numerisch lösen willst. Du möchtest aber analytisch mithilfe der Symbolic Math Toolbox lösen, oder? Die habe ich hier nicht zur Verfügung, aber ich könnte morgen mal nachschauen. Vielleicht weiß auch jemand anderes Rat.
Falls ich richtig liege, werde ich das Thema dann in die Kategorie Toolboxen verschieben. Mein Fehler.
Bis morgen, herzliche Grüße
Bijick
_________________
>> why
|
|
|
Blaubaer |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 03.09.2008, 15:55
Titel:
|
|
Hallo Bijick,
ja ich möchte die DGL numerisch lösen. Und da hat die Toolbox offensichtlich Probleme mit den Matrizen. Und viele andere Probleme.
Danke fürs Verschieben.
Es wäre echt super wenn jemand eine Idee zum Lösen dieser Gleichung hat.
Viele Grüße
Blaubaer
Edit: Das ist doch jetzt ein Tippfehler, oder?
Du meinst symbolisch? Sonst macht ja dsolve keinen Sinn.
Ich verschiebe mal...
mfg nschlange
|
|
|
Verschoben: 03.09.2008, 16:08 Uhr von nschlange Von Programmierung nach Toolboxen |
nschlange |
Ehrenmitglied
|
|
Beiträge: 1.320
|
|
|
|
Anmeldedatum: 06.09.07
|
|
|
|
Wohnort: NRW
|
|
|
|
Version: R2007b
|
|
|
|
|
|
Verfasst am: 03.09.2008, 16:16
Titel:
|
|
Hi,
ich beziehe mich mal auf das vereinfachte Problem.
Kannst Du nicht einfach umschreiben:
in
mit B(1)=x und B(2)=y ?
Das sähe dann so aus:
Oder meinst Du was anderes?
_________________
Viele Grüße
nschlange
"Chuck Norris ejakuliert fluessigen Stahl!"
|
|
|
Blaubaer |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 03.09.2008, 17:00
Titel:
|
|
|
|
|
Hallo nschlange,
ja, das war natürlich ein Tippfehler... Danke fürs verschieben und deine Antwort.
Bei dem einfachen Bsp kommt tatsächlich eine Lsg raus. Das Problem bei mir ist, das meine Fkt B ins 2Dimensionale abbildet B(t)=(B1(t),B2(t)) und in der Abbleitung von B1 dann B2 vorkommt. Wenn ich die DGL also umschreibe in zwei DGL würde der Befehl so ausschauen:
dsolve('(DB1)=delta1-a1*B1-0.5*B1^2+0.5*beta*B2^2','(DB2)=delta2-a12*B1-a2*B2')
Das liefert mir dann den Fehler
??? Error using ==> maple at 129
Error, invalid input: rhs received [B2(t) =&where(_a,{[diff(_b(_a),_a)*_b(_a)+1/2*(a12^2*beta*_a^2+2*a12^2*delta1+2*_b(_a)*delta2+2*a12*a2*_b(_a)+2*_b(_a)*a12*a1-_b(_a)^2+2*delta2*a2*_a-2*_b(_a)*a2*_a-2*delta2*a12*a1-delta2^2+2*a2*_a*a12*a1-a2^2*_a^2)/a12
= 0, _a = B2(t), _b(_a) = diff(B2(t),t), B2(t) = _a, t = Int(1/_b(_a),_a)+C1]}), B1(t) = (-diff(B2(t),t)+delta2-a2*B2(t))/a12],
which is not valid for its 1st argument, expr
Was hat das zu bedeuten, kommt dsolve mit den Gleichungen nicht zurecht oder hab ich irgendeinen blöden Fehler drin?
Grüße
Blaubaer
|
|
|
nschlange |
Ehrenmitglied
|
|
Beiträge: 1.320
|
|
|
|
Anmeldedatum: 06.09.07
|
|
|
|
Wohnort: NRW
|
|
|
|
Version: R2007b
|
|
|
|
|
|
Verfasst am: 03.09.2008, 18:07
Titel:
|
|
Hi,
das ist doch zwei gekoppelte DGLs, oder?
Keine Ahnung, ob man sowas symbolisch lösen kann.
Von Hand würde man glaube ich versuchen, die zu entkoppeln.
Da muss ich aber auch erstmal in die Bücher gucken.
_________________
Viele Grüße
nschlange
"Chuck Norris ejakuliert fluessigen Stahl!"
|
|
|
nschlange |
Ehrenmitglied
|
|
Beiträge: 1.320
|
|
|
|
Anmeldedatum: 06.09.07
|
|
|
|
Wohnort: NRW
|
|
|
|
Version: R2007b
|
|
|
|
|
|
Verfasst am: 04.09.2008, 07:54
Titel:
|
|
Moins,
wenn man zusätzlich Anfangsbedingungen angibt kommt zwar keine Fehlermeldung, aber auch keine Lösung:
_________________
Viele Grüße
nschlange
"Chuck Norris ejakuliert fluessigen Stahl!"
|
|
|
Blaubaer |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 04.09.2008, 09:09
Titel:
|
|
Morgen!
Ja, das habe ich auch schon ausprobiert. Bei meinen Anfangsbed B1(0)=0 und B2(0)=0 kommt eben auch keine Lsg. Aber wenn es schon ohne Nebenbed einen Fehler gibt....
Diese DGL scheint aber schon lösbar zu sein, weil sie eine von vielen in einem Paper ist. Und mit den gefundenen Lösungen wird später noch kräftig rumgerechnet. Zitat zu meinem Problem:
"These ODEs, which can be solved easily through numerical integration start-
ing from the initial conditions A(0)=0 and B(0) =0_{1xN}.
Das einzige was mir jetzt noch einfällt ist zu versuchen die DGL zu 'entkoppeln'.
Andere Lösungsvorschläge wären echt super.
Danke für deine Mühe nschlange!
Blaubaer
|
|
|
nschlange |
Ehrenmitglied
|
|
Beiträge: 1.320
|
|
|
|
Anmeldedatum: 06.09.07
|
|
|
|
Wohnort: NRW
|
|
|
|
Version: R2007b
|
|
|
|
|
|
Verfasst am: 04.09.2008, 09:15
Titel:
|
|
Blaubaer hat Folgendes geschrieben: |
"These ODEs, which can be solved easily through numerical integration start-
ing from the initial conditions A(0)=0 and B(0) =0_{1xN}.
|
Hm, dann versuch doch lieber sie numerisch zu lösen.
Siehe Bijicks ersten Tipp.
_________________
Viele Grüße
nschlange
"Chuck Norris ejakuliert fluessigen Stahl!"
|
|
|
Bijick |
Ehrenmitglied
|
|
Beiträge: 914
|
|
|
|
Anmeldedatum: 18.06.07
|
|
|
|
Wohnort: Nürnberg
|
|
|
|
Version: R2006b, R2008b
|
|
|
|
|
|
Verfasst am: 04.09.2008, 09:49
Titel:
|
|
Hallo Blaubaer,
ich hab' jetzt noch mal Maple direkt gefüttert mit
Zitat: |
ics := B1(0) = 0, B2(0) = 0
ode1 := B1(x) = delta1 - a1 B1(x) - 0.5 B1(x)^2 + 0.5 beta B2(x)^2
ode2 := B2(x) = delta2 - a12 B1(x) - a2 B2(x)
s = dsolve([ode1, ode2, ics]) |
Aber da gibt es auch keine Lösung. (Ebensowenig ohne Anfangsbedingungen.)
Und im paper steht dann ja auch wieder "numerical integration". Heißt das nicht, dass die auch keine analytische Lösung gefunden haben? Oder ist sie angegeben, damit mit ihr weiter "rumgerechnet" werden kann?
Soweit meine Erkenntnisse.
Herzliche Grüße
Bijick
_________________
>> why
|
|
|
Blaubaer |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 05.09.2008, 18:18
Titel:
|
|
Hallo!
Also eigentlich würde ich schon gerne damit rumrechnen. Ich brauche B im Kalman Filter und einige andere Fkten sind von B abh. Aber da offensichtlich keine analytische Lsg existiert, bleibt mir nur die numerische Lsg.
Allerdings ist mir nicht ganz klar warum die Formulierung hinter dem % eine andere Lsg gibt als die gesplittete Formulierung? Da sollte doch eigentlich dasselbe rauskommen!
function solution = DEsolve ()
a1=0.5;
a2=0.4;
a12=0.1;
delta1=0.9;
delta2=0.8;
beta=0.4;
function dB = funcB(t,B)
dB=zeros(2,1);
%dB=[delta1;delta2]-transpose([a1 0;a12 a2])*B-0.5*(B(1)^2*[1;0]+B(2)^2*[beta;0])
dB(1)=delta1-a1*B(1)-a12*B(1)-0.5*(B(1))^2-0.5*beta*(B(2))^2;
dB(2)=delta2-a2*B(2);
end
ode45(@funcB, [0 5],[0 0])
end
Danke euch beiden!
Viele Grüße
Blaubaer
|
|
|
Blaubaer |
Gast
|
|
Beiträge: ---
|
|
|
|
Anmeldedatum: ---
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 06.09.2008, 07:20
Titel:
|
|
Hallo,
hab den Fehler gefunden: B(2)*a12
Schönes WoEnde noch!
Grüße
Blaubaer
|
|
|
|
|
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.
|
|