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

konvexe in stückweise lineare Funktion Optimierungsproblem

 

optim

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.03.2018, 23:07     Titel: konvexe in stückweise lineare Funktion Optimierungsproblem
  Antworten mit Zitat      
Hallo liebe Leute,

ich habe ein Problem mit der Umsetzung in Matlab. Bin jetzt nicht sonderlich professionell in Matlab unterwegs, deswegen verzeiht die Fehler. Ich hoffe ihr könnt mir weiterhelfen. Schon mal vielen Dank. Smile

Ich habe ein Satz an Messwerten bzw. eine konvexe Funktion g(x) auf dem Intervall [a,b]. Diese soll anhand einer stückweisen linearen Funktion f(x) optimal angenähert werden. Für ein simples Beispiel und zur Prüfung der Plausibilität bin ich mit n=2 Linearen gestartet.

f(x) wird dargestellt als:

fn(x) = y(n) + ( y(n+1) -y(n) / x(n+1) -x(n) ) * (x -x(n)) für für n = [1,2]

mit der Gültigkeit x(n)< x < x(n+1)

Daraus ergeben sich 3 Stützstellen:

[y(1),x(1)] [y(2),x(2)] [y(3),x(3)] mit folgende Bedingungen

(x(1) = a) < x(2) < (x(3)=b)

Das Optimierungsproblem dargestellt durch min |g(x)-f(x)|


Das sieht ja mathematisch noch alles gut aus und das kann ich auch nachvollziehen. Da ist bestimmt auch nicht alles richtig Embarassed aber ich kriege den Sprung zu den Messwerten bzw. zu einem Vektor nicht hin.

Also wie stellt man dieses Problem konkret in Matlab bzw. für fmincon da ?
Wie bekomme ich die Stützpunkt aus meinen Messwerten heraus ?

Ich habe mich dran versucht und eher selbst das Optimum grafisch gesucht. Das geht soweit für 2 Lineare. Aber es sollen deutlich mehr werden und z.B. fmincon verwendet werden.

Ich hoffe es ist nicht all zu wirr. Crying or Very sad


Code:


clc; clear

%Konvexe Funktion
x = -10:0.1:10;
f = x.^2;

a= 1;       %Startpunkt
b = length(x); % Endpunkt


%% Einfache Schleife mit manueller Wahl des Stützpunkts
%
k=101;              %Optimaler Punkt

for i=a:b           %Erstellt Funktion
if x(i)<= x(k)
    g(i) = ((f(a) + ((f(k)- f(a))/(x(k)-x(a))).*(x(i)-x(a))));
elseif x(i) > x(k)
    g(i) = ((f(k) + ((f(b)- f(k))/(x(b)-x(k))).*(x(i)-x(k))));
else
    g(i)=0;
end
end
jopt=sum((g-f).^2);            %Fehler im optimalen Punkt

plot(x,f);
hold on
plot(x,g);

%%  Berechnet Fehler -> optimum bei 0 bzw. x(101)


for k= a:b    
for i=a:b           %Erstellt Punkte der Funktion
if x(i)<= x(k)
    g(i) = ((f(a) + ((f(k)- f(a))/(x(k)-x(a))).*(x(i)-x(a)))); %-f(i)
elseif x(i) > x(k)
    g(i) = ((f(k) + ((f(b)- f(k))/(x(b)-x(k))).*(x(i)-x(k))));
else
    g(i)=0;
end
end
j(k)=sum((g-f).^2);
end

plot(a:b,j)

 


optim

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.03.2018, 15:57     Titel: Keiner einen Ansatz ?
  Antworten mit Zitat      
Hat keiner einen Ansatz oder ähnliches ?

LG Tim
 
optim

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.03.2018, 20:40     Titel: Hat sich erledigt
  Antworten mit Zitat      
Hat sich erledigt. Kann geschlossen werden !
 
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.