Ich verwende OdePkg in Octave, um ein System von steifen ODEs, z. durch ode5r:Anpassung von Parametern von ODEs bei Verwendung von ODE-Löser octave/matlab
function yprime = myODEs(t,Y,param)
yprime = [
- param(1) * Y(1); # ODE for Y(1)
param(1) * Y(1) - param(2) Y(2) * Y(3); # ODE for Y(2)
param(2) Y(2) * Y(3) # ODE for Y(3)
# etc.
];
time_span = [1, 24] # time span of interest
Y0 = [1.0, 1.1, 1.3] # initial values for dependent variables Y
param = [7.2, 8.6, 9.5] # parameters, to be optimized
[t, Y] = ode5r(@myODEs, time_span, Y0, ..., param);
Der Solver speichert die abhängigen Variablen Y in einer Matrix mit Bezug auf die Zeit t (Vektor):
t Y(1) Y(2) Y(3)
0.0 1.0 1.1 1.3
0.1 ... ... ...
0.5 ... ... ...
0.9 ... ... ...
... ... ... ...
4.0 ... ... ...
... ... ... ...
24.0 ... ... ...
I die Parameter in param passen soll, so dass die resultierenden Variablen Y besten meine Referenzwerte passen, zB:
t Y(1) Y(2) Y(3)
0.5 1.1 N/A N/A
1.0 1.9 N/A N/A
4.0 2.3 2.7 2.1
5.0 N/A 2.6 2.2
24.0 0.9 1.5 2.0
Welche Octave/Matlab (andere Sprachen sind willkommen) Routine kann führen Sie einen Multi-Parameter (Least-square/Spline) passen? Wie ist es möglich Parametersätze für verschiedene Anfangswerte zu kombinieren Y0 in der Anpassung? Ich würde mich freuen, wenn Sie mir ein paar Tipps und Möglichkeiten geben könnten.
Mit freundlichen Grüßen, Simon
Ihre ersten Vorschläge klingt wie, was ich will. Ich möchte nur sicherstellen, dass ich dich richtig verstanden habe: 1. Ich wickle meinen Octave Solver in ein passendes Modul. Welche der kleinsten Quadrat- und/oder Spline-Routinen, die bei der Multiparameter-Anpassung effektiv sind, können Sie empfehlen? 2. Die Anpassung gibt mir einen Fehler zwischen Modell Ergebnis und tatsächlichen Daten für jedes y (t). Nimmt der Solver dann die Summe aller Fehler als Fitnessindikator für jede Kombination von Parametern? 3. Heute habe ich neue Datensätze (für verschiedene Anfangswerte) extrahiert Wie ist es möglich, solche Daten innerhalb einer Anpassung zu kombinieren? (Ich poste die Daten, wenn hilfreich) – SimonSalman
Oh, ja, ich meinte diese Koeffizienten von "Fitness-Indikator". Ich denke, ich muss mich nicht darum kümmern, da das Teil des kleinsten Quadrats ist. Ich kann das Modell nur mit einem Satz von Anfangswerten gleichzeitig ausführen. Ich sehe also nicht, wie ich die Datensätze zusammenführen kann, wenn sie auf unterschiedlichen Ausgangswerten basieren. – SimonSalman