Verfasst am: 01.02.2015, 19:26
Titel: Porbleme bei der Optimierung mit leastsq
Hallo liebe Scilab User,
ich sitz hier an einem kleinen Problem und zwar würde ich gerne eine Funktion über die Methode der kleinsten Fehlerquadrate optimieren aber ich bekomme dauernd einen Fehler:
Zitat:
...
[f, copt] = leastsq(list(myerror, time, thetaMESS), c0);
line 42 of exec file called by :
t\transiente_messmethode.sce', -1
Warning: Syntax "vector ^ scalar" is obsolete. It will be removed in Scilab 6.0.
Use "vector .^ scalar" instead.
!
at line 2 of function const called by :
line 2 of function THETA called by :
line 3 of function __numderivative_fun__ called by :
y = __numderivative_fun__(x, __numderivative_f__(2:$))
in execstr instruction called by :
line 12 of function numderivative_evalf called by :
line 20 of function numderivative_deriv1 called by :
line 137 of function numderivative called by :
line 2 of function Dfun called by :
line 2 of function %opt called by :
line 92 of function leastsq called by :
[f, copt] = leastsq(list(myerror, time, thetaMESS), c0);
line 42 of exec file called by :
t\transiente_messmethode.sce', -1
Warning: Syntax "vector ^ scalar" is obsolete. It will be removed in Scilab 6.0.
Use "vector .^ scalar" instead.
!--error 98
Variable, die durch Scilab Funktion zurückgegeben wurde, ist inkorrekt.
at line 92 of function leastsq called by :
[f, copt] = leastsq(list(myerror, time, thetaMESS), c0);
at line 42 of exec file called by :
t\transiente_messmethode.sce', -1
die Fehlermeldung wiederholt sich ein paar mal deshalb hab ich nur den Schluss eingefügt.
Ich gehe mal davon aus das ich einen Fehler in einer meiner Funktionen habe, leider finde ich ihn selbst nicht
So noch mal kurz um was es überhaupt geht:
Ich habe Messdaten die ich in einer Matrix (MData) speichere (1 spalte=Zeit, 2=Fluidtemp, 3=Wandtemperatur). Daraus berechne ich mir dann die Dimensionslose Temperatur:
c sind die startparameter: c0 = [100 0.3 1300 1500]; und t = Zeit (time = MData(1:size(MData,1)-1,1)).
Jetzt möchte ich die Funktion THETA(c, t) mit dem in Scilab vorhandenen Funktion leastsq nach thetaMESS optimieren in dem mir Scilab den parameter c0 anpasst.
aber bekommen tue ich nur die Fehlermeldung von oben???
Es wäre sehr nett wenn mir jemand bei dem Problem helfen könnte.
Und Falls mein konstrukt zu umständlich sein sollte lade ich gern auch das ganze script hoch.
Vielen Dank schon mal
gruß Gastengineer
Gastengineer
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 03.02.2015, 17:35
Titel:
So liebe Scilab User,
ich konnte mein problem etwas vereinfachen und korrigieren, bekomme aber immer noch eine Fehlermeldung:
Zitat:
!--error 98
Variable, die durch Scilab Funktion zurückgegeben wurde, ist inkorrekt.
at line 92 of function leastsq called by :
[x, copt0] = leastsq(list(myerror, time, m), c0);
at line 37 of exec file called by :
exec('D:\math-files\jonas_masterarbeit\test.sce', -1)
Vllt sagt das einem von euch eher was?
Hier mal mein quellcode:
Code:
clear;
clc;
//------------------------------------------------------------------------------
alpha = 100;
lampda = 0.3;
rho = 1300;
cp = 1500;
time = [1:1:10]';
m = [14.166666984558105 14.166666984558105 15.583333015441895 17.333333969116210 17.333333969116210 19.733333587646484 23.166666030883790 23.166666030883790 24.899999618530273 27.283332824707030];
//------------------------------------------------------------------------------
function k = const(c, t)
k = c(1)*(t./( c(2)*c(3)*c(4))).^(1/2);
endfunction
//------------------------------------------------------------------------------
function y = THETA(c, t)
y = 1 - erfcx( const(c, t));
endfunction
//------------------------------------------------------------------------------
c0 = [alpha lampda rho cp];
f = THETA(c0, time);
//------------------------------------------------------------------------------
function e = myerror(c, t, n)
e = THETA(c, t) - n;
endfunction
//------------------------------------------------------------------------------
[x, copt0] = leastsq(list(myerror, time, m), c0);
xopt0 = THETA(copt0, time);
ich hoffe mal ihr wisst dazu eine Lösung?
Grüße Gastengineer
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
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.