|
|
Error in inline expression |
|
blueminded |

Forum-Anfänger
|
 |
Beiträge: 14
|
 |
|
 |
Anmeldedatum: 03.12.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 07.12.2012, 22:20
Titel: Error in inline expression
|
 |
Hallo zusammen,
Ich bekomme diese Fehlermeldung. Dabei sind alle konstanten skalar und keine Vektoren.
hat jmd eine Idee wo der Fehler ist?
Error in inline expression ==>
P2-sqrt(P1^2*1e12-(c1^2*rho*P1*1e6*((lambda*L*1e6/D)+2*K_E1*log(P1/P2))))
Inputs must be a scalar and a square matrix.
To compute elementwise POWER, use POWER (.^) instead.
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 07.12.2012, 23:21
Titel:
|
 |
Hallo,
warum verwendest du das veraltete inline statt Function Handles?
Bist du absolut sicher, dass c1 und P1 skalar sind? Die Fehlermeldung legt das Gegenteil nahe.
Ansonsten würde ich die Funktion temporär vereinfachen um zu sehen, an welchem Teil es genau hängt.
Grüße,
Harald
|
|
|
blueminded |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 14
|
 |
|
 |
Anmeldedatum: 03.12.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.12.2012, 10:50
Titel:
|
 |
|
 |
|
ich benutze inline, damit ich die funktion fzero benutzen kann...
ziel ist P2 zu bestimmen.
function y=p2(P1,T1,e,D,L,x,Vpunkt)
rhoNorm=dichte(273.15,101.325,x);
m=rhoNorm*Vpunkt/3600;
rho=dichte(T1,P1,x);
c1=4*m/(pi*(D/1000)^2*rho);
Re1=Reynold(Vpunkt,D,T1,P1,x);
ed=e/D;
lambda=moody(e,D,Re1);
n1=1/(lambda^0.5);
K_E1=0.5*((1/n1)+2)^2*((1/n1)+1)^2/(((2/n1)+2)*((2/n1)+1));
colFun = inline('P2-((P1*1e6)^2-(c1^2*rho*P1*1e6*((lambda*L*1e6/D)+2*K_E1*log(P1/k))))^0.5',...
'P2','P1','c1','rho','lambda','L','D','K_E1');
fi =P1; % startwert für die fzero funktion ( Haaland gleichung)
dfTl = 5e-6;
y = fzero(colFun,fi,optimset('TolX',dfTl,'Display','off'),'P1','c1','rho','lambda','L','D','K_E1');
end
>> f=dpIsotherm(77,40,0.05,350,10,x,200000)
rhoNorm =
44.9844
m =
2.4991e+003
rho =
68.6970
c1 =
378.1170
Re1 =
1.2686e+008
ed =
1.4286e-004
lambda =
0.0128
n1 =
8.8225
K_E1 =
1.0134
colFun =
Inline function:
colFun(P2,P1,c1,rho,lambda,L,D,K_E1) = P2-((P1*1e6)^2-(c1^2*rho*P1*1e6*((lambda*L*1e6/D)+2*K_E1*log(P1/k))))^0.5
Error using fzero (line 289)
FZERO cannot continue because user supplied inline object ==> colFun
failed with the error below.
Error in inline expression ==>
P2-((P1*1e6)^2-(c1^2*rho*P1*1e6*((lambda*L*1e6/D)+2*K_E1*log(P1/k))))^0.5
Inputs must be a scalar and a square matrix.
To compute elementwise POWER, use POWER (.^) instead.
Error in dpIsotherm (line 40)
y =
fzero(colFun,fi,optimset('TolX',dfTl,'Display','off'),'P1','c1','rho','lambda','L','D','K_E1');
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 08.12.2012, 11:23
Titel:
|
 |
Hallo,
und um fzero zu benutzen, kannst du genauso gut (bzw. besser) Function Handles verwenden. Zur Diagnose am einfachsten wäre vermutlich, wenn du diese Funktion in eine separate Datei auslagern würdest. Ich meine aber, das Problem auch so zu sehen:
Im fzero-Aufruf musst du die ' ' um die festen Parameter weglassen.
Grüße,
Harald
|
|
|
blueminded |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 14
|
 |
|
 |
Anmeldedatum: 03.12.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.12.2012, 11:42
Titel:
|
 |
|
 |
|
Ich kannte handles vorher nicht..ich finde es tatsächlich besser als inline..danke für den tipp..
so jetzt habe ich die function korrigiert. und bekomme eine andere Fehlermeldung , die meiner Meinung nach nicht logisch ist.
function y=P2(P1,T1,e,D,L,x,Vpunkt)
rhoNorm=dichte(273.15,101.325,x)
m=rhoNorm*Vpunkt/3600
rho=dichte(T1,P1,x)
c1=4*m/(pi*(D/1000)^2*rho)
Re1=Reynold(Vpunkt,D,T1,P1,x)
ed=e/D
lambda=moody(e,D,Re1)
n1=1/(lambda^0.5)
K_E1=0.5*((1/n1)+2)^2*((1/n1)+1)^2/(((2/n1)+2)*((2/n1)+1))
colFun =@(P2,P1,c1,rho,lambda,L,D,K_E1)P2-((P1*1e5)^2-(c1^2*rho*P1*1e5*((lambda*L*1e6/D)+2*K_E1*log(P1/P2))))^0.5
fi =10e5;
dfTl = 100;
y = fzero(colFun,fi,optimset('TolX',dfTl,'Display','off'),P1,c1,rho,lambda,L,D,K_E1);
end
>> f=dpIsotherm(77,40,0.05,350,10,x,200000)
rhoNorm =
44.9844
m =
2.4991e+003
rho =
68.6970
c1 =
378.1170
Re1 =
1.2686e+008
ed =
1.4286e-004
lambda =
0.0128
n1 =
8.8225
K_E1 =
1.0134
colFun =
@(P2,P1,c1,rho,lambda,L,D,K_E1)P2-((P1*1e5)^2-(c1^2*rho*P1*1e5*((lambda*L*1e6/D)+2*K_E1*log(P1/P2))))^0.5
Error using fzero (line 309)
Function value at starting guess must be finite and real.
Error in dpIsotherm (line 40)
y = fzero(colFun,fi,optimset('TolX',dfTl,'Display','off'),P1,c1,rho,lambda,L,D,K_E1);
|
|
|
dmjr |

Forum-Century
|
 |
Beiträge: 199
|
 |
|
 |
Anmeldedatum: 02.10.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.12.2012, 12:17
Titel:
|
 |
So wie ich das sehe, ist bei der Funktion nur P2 variabel?
vereinfacht den Code etwas.
Warum du die Fehlermeldung bekommst kann ich nicht nachvollziehen, da du nicht alle Werte zur Verfügung stellst: D,P1,L fehlen auf jeden Fall.
Was ist denn colfun(fi)? Da kommt doch bestimmt was mit Imaginärteil raus.
|
|
|
blueminded |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 14
|
 |
|
 |
Anmeldedatum: 03.12.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.12.2012, 12:43
Titel:
|
 |
D, P1, L werden beim aufrufen des funktions eingegeben.
colfun ist die funktion die ich brauche wenn ich fzero verwende..
|
|
|
dmjr |

Forum-Century
|
 |
Beiträge: 199
|
 |
|
 |
Anmeldedatum: 02.10.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.12.2012, 14:27
Titel:
|
 |
dmjr hat Folgendes geschrieben: |
Was ist denn colfun(fi)? Da kommt doch bestimmt was mit Imaginärteil raus. |
Mir ist schon klar was colfun ist, nur hast du mal den Anfangswert colfun(fi) bzw. nach der von dir geposteten Syntax colfun(fi,P1,c1,rho,lambda,L,D,K_E1) ausrechnen lassen? Solange das nicht reell ist funktioniert fzero nicht.
|
|
|
Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 08.12.2012, 22:17
Titel:
|
 |
Hallo blueminded,
Bitte benutze die Code-Umgebung für Matlab Code. Danke.
Gruß, Jan
|
|
|
blueminded |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 14
|
 |
|
 |
Anmeldedatum: 03.12.12
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 09.12.2012, 13:08
Titel:
|
 |
jetzt hats geklappt..
der fehler lag darin, wie ihr vermutet habt, dass colfun (fi) nicht reel war..
danke schön
|
|
|
|
|
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 - 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.
|
|