|
|
|
lsqcurvefit border Problem |
|
| darkvigor |

Forum-Newbie
|
 |
Beiträge: 2
|
 |
|
 |
Anmeldedatum: 24.02.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 24.02.2012, 16:50
Titel: lsqcurvefit border Problem
|
 |
| |
 |
|
Hallo zusammen,
bin ein Neuling im Bereich der Matlab Programmierung und hoffe ihr könnt mir bei meinem Problem helfen, da ich schon seit drei Tagen vergeblich nach einer Lösung suche.
Ich habe folgendes Progi geschrieben, mit dem ich die optimalen Stuetzstellen für eine numerische Integration berechnen möchte:
x0=[0 0.25 0.75 1 1.25 1.75]*pi; %Startpositionen
delta_F=0; %Differenz der Flächeninhalte soll 0 betragen
syms t; F_ref=int(-(1-(0.75-2*sin(t)).^2).*sin(t),t,0,2*pi);
F_ref=double(F_ref)
%Einstellungen für die Funktion
options=optimset('TolFun',1.0e-15,'TolX',1.0e-15); %Abbruch, falls Funktionswertdifferenz oder x-Wertdiff kleiner oder
%gleich 1.0e-15
lb=zeros(1,length(x0)); %untere Grenze
ub=ones(1,length(x0))*2*pi; %obere Grenze
options.MaxFunEvals = 5000;
x_optimal=lsqcurvefit('fun',x0,F_ref,delta_F,lb,ub,options)
Dabei sollen lb=0 und ub 2pi sein. Meine Funktion fun sieht dabei wie folgt aus:
function delta_F = fun( stuetzstelle,F_ref)
%Funktion zur Berechnung des Flächeninhaltes mit der Trapezrnegel
f=inline('(-(1-(0.75-2*sin(x)).^2).*sin(x))'); % Kraftfunktion in y-Richtung
ystuetz=f(stuetzstelle);
%Berehcnung der Flächeninhalte
F=trapz(stuetzstelle,ystuetz);
%Differenz zwischen zu optimierendem und richtigem Flächeninhalt
delta_F= F - F_ref;
Wenn ich bei den Grenzen nun [] und [], so läuft das Progi ohne Probleme durch und ich erhalte Ergebnisse für die Stuetzstellen, jedoch teilweise nicht im gewünschten Intervall. Wenn ich jedoch lb und ub als Grenzen eingebe erhalte ich folgende Fehlermeldung:
Error using lsqncommon (line 8
The Levenberg-Marquardt algorithm does not handle bound constraints and the
trust-region-reflective algorithm requires at least as many equations as
variables; aborting.
Error in lsqcurvefit (line 254)
[xCurrent,Resnorm,FVAL,EXITFLAG,OUTPUT,LAMBDA,JACOB] = ...
Error in Optimal (line 2
x_optimal=lsqcurvefit('fun',x0,F_ref,delta_F,lb,ub,options)
Hat jmd. vielleicht einen Tipp für mich, wie ich das Problem lösen kann?
Gruß
|
|
|
|
|
|
| darkvigor |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 2
|
 |
|
 |
Anmeldedatum: 24.02.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 01.03.2012, 00:32
Titel:
|
 |
|
Bin jetzt selber auf die Lösung des Problems gestoßen. Dela_f und F_ref waren nicht in der richtigen Dimension.
|
|
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| RSS
Hosted by:
Copyright © 2007 - 2026
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.
|
|