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

Porbleme bei der Optimierung mit leastsq

 

Gastengineer

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.02.2015, 19:26     Titel: Porbleme bei der Optimierung mit leastsq
  Antworten mit Zitat      
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 Sad

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:
Code:

thetaMESS(j,1) = (MData(j,3) - theta0)/(MData(j,2) - theta0);
 

(theta0 ist ne konstante Anfangstemperatur).
Gleichzeitig berechne ich mir auch noch die dimensionslose Temperatur nach dem Duhamelschen prinzip:
Code:

thetaDIM(j,1) = THETA(c0, MData(j,1));
 

alles in einer for-Schleife.
Dabei ist die Funktion THETA wie folgt definiert:
Code:

function y = THETA(c, t)
    y = 1 - erfcx( const(c, t) );
endfunction
 

mit der Funktion const
Code:

function k = const(c, t)
    k = c(1)*(t./( c(2)*c(3)*c(4) ))^(1/2);
endfunction
 

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.
Code:

[f, copt] = leastsq(list(myerror, time, thetaMESS), c0);
yopt0 = THETA(copt0, time);
 

wobei myerror wieder eine eigenständige Funktion ist
Code:

function e = myerror(c, t, n)
    e = THETA(c, t) - n;
endfunction
 

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: ---
     Beitrag Verfasst am: 03.02.2015, 17:35     Titel:
  Antworten mit Zitat      
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
 
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.