WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

lsqnonlin mit Nebenbedingungen

 

Trut

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.02.2023, 14:24     Titel: lsqnonlin mit Nebenbedingungen
  Antworten mit Zitat      
Hallo zusammen,

ich stehe vor folgendem Optimierungsproblem: Ich möchte mir drei zeitlich konstante Zielgrößen (x1,x2,x3) aus zeitlich veränderliche Inputdaten (a,b,c,d) vieler Versuche über eine Gleichung der Form: (x1*a^x2*(x3*b-c))-d=0 fitten. Dazu habe ich aus all meinen Versuchen die Inputdaten in Vektoren geschrieben und anschließend x1,x2, x3 über
Code:

options = optimoptions('lsqnonlin','Algorithm','trust-region-reflective','Display','none');
fun = @(x) (x(1) .* a.^x(2) .* (x(3) .*b - c)) - d;          
x0 = [1 1 1];
lb = [-Inf -Inf -Inf];
ub = [Inf Inf Inf];
[x,resnorm,residual,exitflag] = lsqnonlin(fun,x0,lb,ub,options);

optimiert.

Wie kann ich nun mehrere Nebenbedingungen formulieren, so dass x1(t) = const., x2(t) = const. , x3(t) = const. gilt?

Ich hatte mir das so vorgestellt, dass ich x2 und x3 festhalte und die Gleichung dann nach x1 umschreibe. Dadurch bekomme ich ein x1(t), für welches ich zu jedem Zeitpunkt die quadratische Abweichung vom optimierten x1 berechne und minimiere.

Ist es möglich mehrere Nebenbedingungen in lsqnonlin zu integrieren oder gibt es eine elegantere Lösung für das Problem?

Beste Dank und viele Grüße
Trut


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 06.02.2023, 16:16     Titel:
  Antworten mit Zitat      
Hallo,

ich verstehe die Frage nicht. lsqnonlin dürfte dir bei deinem Code einen Vektor x mit drei Elementen ausgeben, die x1, x2 und x3 entsprechen. Es gibt da gar keine zeitliche Abhängigkeit.

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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Trut

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.02.2023, 16:27     Titel:
  Antworten mit Zitat      
Hallo Harald,

das ist richtig, dass lsqnonlin mir einen Vektor mit drei Elementen zurückgibt.

Ich versuche es anders zu formulieren: Wenn ich beispielsweise x1 und x2 festhalte und anschließend x3(t) über die zeitabhängigen Inputparameter eines einzelnen Versuchs (also einer kleinen Menge aller Inputparameter) a,b,c,d zurückrechne

Code:
                           
x3_ruck(i,j,t) = (d(t)./ (x1 .* a(t) .^ x2) + (c(t))) ./ (b(t));

 

bekomme ich auch eine starke Zeitabhängigkeit in x1(t), welche ich gerne mit einer zusätzlichen Bedingung verhindern würde.

Mein eigentliches Ziel ist, dass die drei optimierten Größen versuchs- und damit zeitunabhängig werden.

Viele Grüße
Trut
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 06.02.2023, 16:31     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Ich versuche es anders zu formulieren: Wenn ich beispielsweise x1 und x2 festhalte und anschließend x3(t) über die zeitabhängigen Inputparameter eines einzelnen Versuchs (also einer kleinen Menge aller Inputparameter) a,b,c,d zurückrechne

Warum sollte man das tun? Ich halte das ehrlich gesagt nicht für sinnvoll.

Zitat:
Mein eigentliches Ziel ist, dass die drei optimierten Größen versuchs- und damit zeitunabhängig werden.

Das sind sie doch?

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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Trut

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.02.2023, 09:06     Titel:
  Antworten mit Zitat      
Hallo Harald,

ich bin ehrlich gesagt auch noch nicht sicher, ob das sinnvoll ist, aber ich würde gerne in irgendeiner Weise überprüfen, ob die drei optimierten Parameter tatsächlich in der Lage sind die Zeitabhängigkeit eines Teils der Inputparameter herauszunehmen. Mir fiel keine andere Methode ein, oder würdest Du behaupten, dass ich das implizit durch die Optimierung schon annehme?

Viele Grüße
Trut
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 10.02.2023, 17:00     Titel:
  Antworten mit Zitat      
Hallo,

was man z.B. machen könnte: Datenpunkte mit scatter plotten und nach Zeit einfärben um zu sehen, ob es bestimmte Muster gibt.

Man kann natürlich auch die Kurve an verschiedene Teile der Daten separat anpassen und schauen, wie stark die Unterschiede sind.

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 ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Trut

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.02.2023, 15:50     Titel:
  Antworten mit Zitat      
Hallo Harald,

danke für die Tipps. Das werde ich mal versuchen!

Viele Grüße
Trut
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 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.