Optimization with a Least Squares Solver - Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Bücher:

Fachkräfte:
Informatiker (m/w) für den Bereich Toolkette Embedded Software
Weiterentwicklung einer MATLAB-/Simulink-Toolkette, Automatisierung der Code-Generierung mit TargetLink und Embedded Coder
cbb-Software GmbH - Stuttgart

Softwareentwickler (m/w) automatische Codegenerierung
Umsetzung, Neuprogrammierung und Weiterentwicklung in Simulink, TargetLink und C
EFS - Ingolstadt, Wolfsburg

Senior Engineer Electrical (m/w) zur analytischen Modellierung und Simulation von Umrichtersystemen
Entwicklung von Regelungsalgorithmen für Frequenzumrichter durch Modellierung und Simulation
Woodward Kempen GmbH - Kempen

Senior Software Entwickler Automotive Embedded (w/m)
Modelbased Softwareentwicklung für Automotive Steuergeräte
ESG Elektroniksystem- und Logistik-GmbH - Fürstenfeldbruck, Ingolstadt

Prüfingenieur im Bereich Hardware (m/w)
Vorbereitung, Durchführung und Auswertung von entwicklungsbegleitenden Testfällen hinsichtlich Funktion, Umwelt und Dynamik
HOPPECKE Batterien GmbH & Co. KG - Zwickau

weitere Angebote

Partner:


Vermarktungspartner


Forum
      Option
[Erweitert]
  Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Optimization with a Least Squares Solver

 

SerKuz
Forum-Anfänger

Forum-Anfänger


Beiträge: 42
Anmeldedatum: 07.11.12
Wohnort: ---
Version: MATLAB R2016b
     Beitrag Verfasst am: 14.03.2017, 13:15     Titel: Optimization with a Least Squares Solver
  Antworten mit Zitat      
Hallo,

ich versuche folgenden Code:
Code:

options = optimoptions('lsqnonlin','Display','off','OutputFcn',@bananaout);
vfun = @(x)[10*(x(2) - x(1)^2),1 - x(1)];
[x,resnorm,residual,eflag,output] = lsqnonlin(vfun,x0,[],[],options);
title 'Rosenbrock solution via lsqnonlin'
 

aus https://de.mathworks.com/help/optim.....unction-minimization.html
nachzuvollziehen.
Dabei frage ich mich wie die Entwickler von der Rosenbrock-Funktion:

<br />
f(x,y) = (1 - x)^2 + 100(y-x^2)^2
<br />
auf die Funktion:
Code:
vfun = @(x)[10*(x(2) - x(1)^2),1 - x(1)];

kommen.



Hat jemand eine Idee ?

Mfg
SerKuz
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 18.822
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     Beitrag Verfasst am: 14.03.2017, 13:52     Titel:
  Antworten mit Zitat      
Hallo,

meine Vermutung ist, dass es keinen direkten Zusammenhang gibt.

Der von dir genannte Teil bezieht sich ja auf Least Squares Solver. Das ist vor allem dann interessant, wenn man vektorwertige Zielfunktionen hat. Zuvor war die Zielfunktion aber skalarwertig.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
SerKuz
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 42
Anmeldedatum: 07.11.12
Wohnort: ---
Version: MATLAB R2016b
     Beitrag Verfasst am: 14.03.2017, 15:33     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:
Hallo,

meine Vermutung ist, dass es keinen direkten Zusammenhang gibt.

Der von dir genannte Teil bezieht sich ja auf Least Squares Solver. Das ist vor allem dann interessant, wenn man vektorwertige Zielfunktionen hat. Zuvor war die Zielfunktion aber skalarwertig.

Grüße,
Harald


Hallo Harald,

hmmm, aber die finden ja das Minimum mit der vfun. Also die Entwickler schreiben folgendes:
Zitat:

To use |lsqnonlin|, do not write your objective as a sum of squares. Instead, write the underlying vector that |lsqnonlin| internally squares and sums.

Aber wenn ich die Funktion ausmultipliziere und den Vektor auf \mathbb{R}^6 erhöhe, also:
Code:

vfun = @(x)[10*(x(2) - x(1)^2),1 - x(1)];
% aendere zu:
vfun=@(x)[  sqrt(100*x(1)^4),...
            sqrt(-200*x(1)^2*x(2)),...
            sqrt(x(1)^2),...
            sqrt(-2*x(1)),...
            10*x(2),...
            1];
 

komme ich nicht auf das Minimum.

Mfg
SerKuz
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 18.822
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     Beitrag Verfasst am: 14.03.2017, 15:50     Titel:
  Antworten mit Zitat      
Hallo,

die Wurzel ist nicht assoziativ, also sqrt(a+b) \ne sqrt(a) + sqrt(b). Zudem verstehe ich nicht, warum du das auf \mathbb{R}^6 erhöhst. Es wird ja letztlich eine skalare Funktion optimiert, nämlich
f = (10*(x(2) - x(1)^2))^2 + (1 - x(1))^2
bzw. die Wurzel von f.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
SerKuz
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 42
Anmeldedatum: 07.11.12
Wohnort: ---
Version: MATLAB R2016b
     Beitrag Verfasst am: 14.03.2017, 16:03     Titel:
  Antworten mit Zitat      
Wie ich verstanden habe, wird bei dem Algorithmus folgendes gemacht:
a := 100\cdot (y - x^2)^2 -> \sqrt{a} = 10(y -x^2)\\
<br />
b := (1 - x)^2 -> \sqrt{b} = (1 - x)
Und

<br />
\begin{pmatrix}
<br />
\sqrt{a}\\ 
<br />
\sqrt{b}
<br />
\end{pmatrix}
<br />
entspricht dem vfun-Vektor.

Mfg
SerKuz


P.S.:
Wieich auf den Vektor mit 6 Einträgen komme, so dachte ich aus jeder Komponente der ausmultiplizierter Rosenbrock-Funktion wurzel zu ziehen und sie als Vektoreintrag für den Algorithmus zu benutzen.

[EDITED, Jan, Bitte kein Top-Quoting der gesamten vorherigen Nachricht. Danke!]
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 18.822
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     Beitrag Verfasst am: 14.03.2017, 17:25     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Wie ich verstanden habe

Dem ist nicht so. Es wird quadriert und dann die Summe minimiert.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
SerKuz
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 42
Anmeldedatum: 07.11.12
Wohnort: ---
Version: MATLAB R2016b
     Beitrag Verfasst am: 20.03.2017, 15:21     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:
Hallo,

Zitat:
Wie ich verstanden habe

Dem ist nicht so. Es wird quadriert und dann die Summe minimiert.

Grüße,
Harald

Hallo Harald,

bei der MKQ wird doch das Residium quadriert und die Summe davon minimiert.

Andersrum gefragt. Wenn ich eine skalare Funktion habe, z.B.:
f(x,y) = x^3 - x^2y + x^2y^2 - y^3
Wie übergebe ich die Daten an den lsnolin-Algorithmus ?

Mfg SerKuz
Private Nachricht senden Benutzer-Profile anzeigen
 
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
.



goMatlab ist ein Teil des goForen-Labels
goForen.de goMATLAB.de goLaTeX.de goPCB.de


 Impressum  | Nutzungsbedingungen  | Datenschutz  | Werbung/Mediadaten | Studentenversion | FAQ | goMatlab RSS Button RSS


Copyright © 2007 - 2018 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
Partner: LabVIEWforum.de

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.