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

überbestimmtes LSG mit Zuastzbedingung lösen

 

HannaLerntMATLAB

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.03.2015, 18:46     Titel: überbestimmtes LSG mit Zuastzbedingung lösen
  Antworten mit Zitat      
Hallo,

ich möchte ein überbestimmte lineares Gleichungssystem der Form

A*x=b mit der Zusatzbedingung, das A(1:3,1:3) eine Orthogonalmatrix ist.

Wie kann ich das in MATLAB lösen?


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 09.03.2015, 21:06     Titel:
  Antworten mit Zitat      
Hallo,

da die Orthogonalitätsbedingung nichtlinear in den Elementen ist, würde ich fmincon mit der nichtlinearen Nebenbedingung Q*Q' - I = 0 verwenden.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.03.2015, 10:39     Titel: Funktion gibt falsches Ergebnis aus...
  Antworten mit Zitat      
Hallo, danke für den Tip.
Ich habe das ganze jetzt einmal ausprobiert. Mein MATLAB-code sieht so aus:
Die Funktion, die ich minimieren möchte:

Code:

function(OPEfun, x)=OPEfun(x, b, A)
l=1:length(b);
temp=[];
for x=1:1:length(b)
    temp=vertcat(temp,norm(b-A*x)^2);
end
OPEfun=sum(temp(l));
end
 


Meine Bedingung:

Code:

function(c,ceq)=mycon(x)
c=[];
ceq=x(1:3,1:3)*x(1:3,1:3).'-eye(3,3);
end
 


damit wende ich die Funktion so an:
Code:

fun=@(x)OPEfun(x,b, A);
x=fmincon(fun,x0,[],[],[],[],[],[],@mycon);
 


Ist das so im groben richtig? Es kommt allerdings ziemlicher Quatsch dabei heraus. kann es sein, dass fmincon relativ schnell in ein lokales Minimum oder so etwas läuft und deswegen nicht den richtigen Wert ausgibt? Wenn ja, wie kann man das verhindern?
Vielen Dank schonmal,
Hanna
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 10.03.2015, 19:05     Titel:
  Antworten mit Zitat      
Hallo,

wenn ich das richtige sehe, wird x in der Zielfunktion als Index überschrieben, bevor es verwendet wird. Das kann dann nicht klappen.

Auch die Syntax mit ( ) für mehrere Ausgabeargumente ist zumindest in MATLAB nicht gültig.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.03.2015, 09:50     Titel:
  Antworten mit Zitat      
Hallo

das ist richtig Very Happy Die () sind bei mir auch [] Klammern.

Wo wird mein x denn überschrieben? Ich bin mir nicht sicher, welche Stelle du meinst.
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.492
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 11.03.2015, 18:34     Titel:
  Antworten mit Zitat      
Hallo,

diese Stelle:
Code:

Da wird x als Schleifenindex verwendet, und somit der Input x überschrieben.

Grüße,
Harald
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
.





 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.