2016-06-26 15 views
3

Ohne Verwendung einer Massenmatrix können Odelöser wie ode45 y '= f (t, y) lösen.Was ist die Massenmatrix in ode solvers in MATLAB?

Aber es gibt eine Option der Massenmatrix in Ode Löser für Probleme, die eine "Masse" Matrix beinhalten, M (t, y) y '= f (t, y).

Was genau ist die "Masse" -Matrix? Kommt dieser Begriff aus der Masse der Masse-Feder-System-Schwingung? Ich kann keinen Beispielcode dazu in der Dokumentation finden. Auch scheint es, dass ich Informationen über t und y in f (t, y) in der Gleichung von y '= f (t, y) kodieren kann. In welcher Situation/Beispiel wird M (t, y) y '= f (t, y) entstehen, wo M (t, y) benötigt wird?

Antwort

1

Dies wird vollständig erklärt here in the documentation for odeset. Ja, es kann mit dem Masse/Trägheitsbegriff für Systeme zweiter Ordnung in Verbindung gebracht werden, aber es kann auch andere Parameter in anderen Systemen darstellen, die die gleiche Form haben. Diese Option kann die Effizienz in einigen Fällen verbessern und singuläre (nicht invertierbare) Massenmatrizen handhaben (ungewöhnlich sind physikalische Systeme).

Das Buch Solving ODEs with Matlab (PDF) von Shampine, et al. bietet weitere Details und ein schönes Beispiel (Abschnitt 2.3.2, Seite 105) - siehe batonode in Matlab.

0

Die Massenmatrix kann verwendet werden, um gekoppelte gewöhnliche Differentialgleichungen und algebraische Gleichungen gleichzeitig zu lösen.

Zum Beispiel

y'(1) = 2y(1) + 3(y)^2
y'(2) = 5y(1) - 2y(2)^4
0 = y(1)^3 + y(3) + 2
0 = y(2)^4 + y(4) - 8

kann als unter Verwendung von ode23t mit einer Massenmatrix gelöst werden:

M =
[1 0 0 0
0 0 0 0]

Hinweis als wenige ode Solver nicht gut singuläre Massenmatrix verarbeiten kann. ode23t und ode15s können diese Aufgabe übernehmen.

Für weitere Details siehe: https://se.mathworks.com/help/matlab/ref/odeset.html#input_argument_namevalue_d119e730030