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

Error in inline expression

 

blueminded
Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 03.12.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.12.2012, 22:20     Titel: Error in inline expression
  Antworten mit Zitat      
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.
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 07.12.2012, 23:21     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
blueminded
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 03.12.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.12.2012, 10:50     Titel:
  Antworten mit Zitat      
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');
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 08.12.2012, 11:23     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
blueminded
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 03.12.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.12.2012, 11:42     Titel:
  Antworten mit Zitat      
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);
Private Nachricht senden Benutzer-Profile anzeigen
 
dmjr
Forum-Century

Forum-Century


Beiträge: 199
Anmeldedatum: 02.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.12.2012, 12:17     Titel:
  Antworten mit Zitat      
So wie ich das sehe, ist bei der Funktion nur P2 variabel?

Code:
colfun=@(P2)P2-((P1*1e5)^2-(c1^2*rho*P1*1e5*((lambda*L*1e6/D)+2*K_E1*log(P1/P2))))^0.5
y = fzero(colFun,fi,optimset('TolX',dfTl,'Display','off'))
 


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.
Private Nachricht senden Benutzer-Profile anzeigen
 
blueminded
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 03.12.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.12.2012, 12:43     Titel:
  Antworten mit Zitat      
D, P1, L werden beim aufrufen des funktions eingegeben.
colfun ist die funktion die ich brauche wenn ich fzero verwende..
Private Nachricht senden Benutzer-Profile anzeigen
 
dmjr
Forum-Century

Forum-Century


Beiträge: 199
Anmeldedatum: 02.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.12.2012, 14:27     Titel:
  Antworten mit Zitat      
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.
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 08.12.2012, 22:17     Titel:
  Antworten mit Zitat      
Hallo blueminded,

Bitte benutze die Code-Umgebung für Matlab Code. Danke.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
blueminded
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 03.12.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.12.2012, 13:08     Titel:
  Antworten mit Zitat      
jetzt hats geklappt..

der fehler lag darin, wie ihr vermutet habt, dass colfun (fi) nicht reel war..

danke schön
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.