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

Annäherung an Maximum von "unbekanntem" f(x)

 

BlackDread
Forum-Century

Forum-Century


Beiträge: 212
Anmeldedatum: 11.05.11
Wohnort: ---
Version: 2015a
     Beitrag Verfasst am: 27.05.2011, 14:43     Titel: Annäherung an Maximum von "unbekanntem" f(x)
  Antworten mit Zitat      
Guten Nachmittag,

hoffe ihr könnt mir helfen/mich beraten Wink

ich habe eine Funktion
Code:
Rsq = fcn(x)
in der eine multiple Regression durchgeführt wird. Die Daten die zur Regression verwendet werden können über x beeinflusst werden. Nun möchte ich das x finden, für das Rsq maximal wird.
Rsq hat den Wertebereich [0;1]
x > 0, Obergrenze keine... derzeitiger x-Wert für maximales Rsq ist 10.4

Code:

x = 0.1;
step = 0.1;

Rsq = fcn(x);
while(1)
    if(Rsq < 0.9995)
        x = x + step;
        Rsq = fcn(x);
    else
       break;
    end
end
 

Habt ihr eventuell eine Idee wie ich das besser machen kann? Da bis x = 10.4, ja einige Iterationen benötigt werden, wobei wenn ich "step" anders einstell ja die Genauigkeit abnimmt. Wäre über ein paar Tipps erfreut.
Danke schonmal für eure Mühen

LG Chris

Zuletzt bearbeitet von BlackDread am 27.05.2011, 16:23, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen


BlackDread
Themenstarter

Forum-Century

Forum-Century


Beiträge: 212
Anmeldedatum: 11.05.11
Wohnort: ---
Version: 2015a
     Beitrag Verfasst am: 27.05.2011, 16:22     Titel:
  Antworten mit Zitat      
Hab mal n bisschen getestet. Scheint zumindestens für die Funktion fcn --> f(x) = (1 - (x-5.4)^2) zu funktionieren(ist ja ähnlich meiner Fkt da x > 0 und f(x) = [0;1]).
Über Verbesserungsvorschläge freue ich mich natürlich Wink
werde am Montag versuchen das in mein Projekt zu integriergen. Jetzt ist erst mal Wochenende!

Wünsch euch allen ein Schönes Wink

LG Chris
Code:

x = 0.1;
x_old = 0;
step = 1;
exit = 0;

val = fcn(x);
val_old = fcn(x_old);

while(exit == 0)
    if val > val_old
        val_old = val;
        x_old = x;
        x = x + step;
        val = fcn(x);
    elseif val_old > val
        while(1)
            x = x_old;
            if(step<0.001)
                exit = 1;
                break;
            end
            step = step/2;
            x1 = x + step;
            x2 = x - step;
            val1 = fcn(x1);
            val2 = fcn(x2);
            if(val1>val2)
                x_old = x1;
            else
                x_old = x2;
            end
           
        end
    end
end
[/code]
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.