Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   
Bücher:

Studierende:
Praktikant Toolentwicklung Matlab (m/w)
Branche: Beratung, Expertise, Fahrzeugtechnik, Fahrzeugteile, Technische Dienstleistungen
MBtech Group GmbH & Co. KGaA - Fellbach

Abschlussarbeit / Praktikum: Entwicklung Matlab (m/w)
Branche: Informationstechnologie, Elektrotechnik, Elektronik
GIGATRONIK Technologies GmbH - Ulm

Werkstudent (m/w) im Bereich Hochfrequenzmesstechnik
Branche: Mess-, Regel-, Automatisierungstechnik, Telekommunikation, Nachrichtentechnik
ROHDE & SCHWARZ GmbH & Co. KG - München

Bachelor-/ Masterarbeit in der Softwareentwicklung
Branche: Fahrzeugtechnik, Fahrzeugteile
über Campusjäger GmbH - Karlsruhe

Praktikant/Werkstudent (m/w) für 5G Research- & Development-Aktivitäten
Branche: Elektrotechnik, Elektronik, Mess-, Regel-, Automatisierungstechnik, Telekommunikation, Nachrichtentechnik
ROHDE & SCHWARZ GmbH & Co. KG - München

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, 12: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: 17.531
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     Beitrag Verfasst am: 14.03.2017, 12: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, 14: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: 17.531
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     Beitrag Verfasst am: 14.03.2017, 14: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, 15: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: 17.531
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2014a
     Beitrag Verfasst am: 14.03.2017, 16: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, 14: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 - 2017 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.