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

Linearisierung mit fminsearch

 

ITSE
Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 16.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.08.2010, 16:18     Titel: Linearisierung mit fminsearch
  Antworten mit Zitat      
Hallo zusammen

ich bin gerade dabei ein Modell um den Arbeitspunkt zu linearisieren.

xdot=A*x + b*u

Im Arbeitspunkt (AP) sind
u = [0 160]'
und
xdot = [0 0 0 0 0 0 0 0 0 0]'

ich habe auch ein m-file welches mir für einen fixen x- und u-Vektor mein xdot berechnet.

Nun möchte ich mir mit fminsearch mein xAP bestimmen um damit dann die A Matrix und meinen b Vektor zu ermitteln.

Nun ab hier habe ich echt keine Ahnung mehr (bin MatLab Anfänger)

Habe versucht der fminsearch Funktion obiges u zu übergeben muss ihr aber wohl auch noch einen Start x-Vektor übergeben wenn ich das richtig verstanden habe.
fminsearch liefert mir ja als Ergebnis nur einen skalar oder?
Wenn ich einen Vektor suche muss ich dann automatisch mit einer for-Schleife arbeiten?

Hoffe ich habe alles verständlich erklärt. Wenn mir wer helfen kann wäre ich echt dankbar.

Gruß Thomas

contship.m
 Beschreibung:

Download
 Dateiname:  contship.m
 Dateigröße:  4.77 KB
 Heruntergeladen:  403 mal
Private Nachricht senden Benutzer-Profile anzeigen


ITSE
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 16.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.08.2010, 10:31     Titel:
  Antworten mit Zitat      
HI


Habe jetzt mein u fix in die Funktion mit rein geschrieben. Und übergebe nur einen x Vektor an fminsearch.

Code:
function xdot = contshipfixu(x)

u=[0 160];
%
if (length(x) ~= 10),error('x-vector must have dimension 10 !');end
if (length(u) ~= 2),error('u-vector must have dimension 2 !');end

L = 175;
V = sqrt(x(1)^2 +x(2)^2);

% Überprüfung der übergebenen Geschwindigkeit

if V == 0,error('The ship must have speed greater than zero');end

delta_max = 10;     % max Ruderwinkel (deg)
Ddelta_max = 5;     % max Ruderrate (deg/s)
n_max = 160;        % max Wellengeschwindigkeit (rpm)

% Dimensionslose Zustände und Eingaben

delta_c = u(1);
n_c = u(2)/60*L/V;

u = x(1)/V;   v = x(2)/V;
p = x(3)*L/V; r = x(4)*L/V;
phi = x(5);   psi = x(6);
delta = x(9); n = x(10)/60*L/V;

[b]% Berechnungen der Parameter etc. habe ich mal aufgrund der Übersichtlichkeit gelöscht[/b]

% Dimensions Zustandsableitungen

xdot =[                             1/m11*X*V^2/L
  -(-m33*m44*Y+m32*m44*K+m42*m33*N)/(m22*m33*m44-m32^2*m44-m42^2*m33)*V^2/L
  (-m32*m44*Y+K*m22*m44-K*m42^2+m32*m42*N)/(m22*m33*m44-m32^2*m44-m42^2*m33)*V^2/L^2
  (-m42*m33*Y+m32*m42*K+N*m22*m33-N*m32^2)/(m22*m33*m44-m32^2*m44-m42^2*m33)*V^2/L^2
                                        p*V/L
                                    cos(phi)*r*V/L
                             (cos(psi)*u-sin(psi)*cos(phi)*v)*V
                             (sin(psi)*u+cos(psi)*cos(phi)*v)*V
                                      delta_dot
                                         n_dot              ];



Mein Problem ist nun das fminsearch ja nur einen Skalar und keine Vektoren ausgibt.
Gibt es da einen trick für?
Code:

xstart = [1 1 1 1 1 1 1 1 1 1]
 
xend=fminsearch('myfunction',xstart);


Liefert einen Fehler da xend ein Vektor sein müßte, aber fminsearch ja nur einen Skalar ausgeben kann.

Gruß Thomas
Private Nachricht senden Benutzer-Profile anzeigen
 
ITSE
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 16.08.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.08.2010, 14:01     Titel:
  Antworten mit Zitat      
HI

also ich komme der Sache immer näher. Habe nun ein xAP, uAP (beide für spätere Berechnungen wichtig) und eine Gütefunktion definiert, welche ich letztendlich minimiere.

Code:
function Guete = contshipfixu(x)

uAP=[0 160];
u=uAP;
%
if (length(x) ~= 10),error('x-vector must have dimension 10 !');end


% Hier stehen variablen und Berechnungen wer interesse hat kann sich das Modell unter dem ersten Post anschauen.

xdot =[                             1/m11*X*V^2/L
  -(-m33*m44*Y+m32*m44*K+m42*m33*N)/(m22*m33*m44-m32^2*m44-m42^2*m33)*V^2/L
  (-m32*m44*Y+K*m22*m44-K*m42^2+m32*m42*N)/(m22*m33*m44-m32^2*m44-m42^2*m33)*V^2/L^2
  (-m42*m33*Y+m32*m42*K+N*m22*m33-N*m32^2)/(m22*m33*m44-m32^2*m44-m42^2*m33)*V^2/L^2
                                        p*V/L
                                    cos(phi)*r*V/L
                             (cos(psi)*u-sin(psi)*cos(phi)*v)*V
                             (sin(psi)*u+cos(psi)*cos(phi)*v)*V
                                      delta_dot
                                         n_dot              ];



Guete = sqrt(dot(xdot,xdot));


Mein fminsrcipt sieht wie folgt aus:

Code:
clear
home
close all


%Startparameter
global x;
global Guete;
global uAP;
global xAP;

uAP = [0 160];
x0=[1 1 1 1 1 1 1 1 1 1];

 
[x, Guete] = fminsearch('contshipfixu',x0);


mein Problem ist nun das xAP einen negativen Wert beinhaltet. Wie kann ich sowas verhindern?

Mfg Thomas
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 - 2025 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.