What does this error mean and how do I fix it?

조회 수: 1 (최근 30일)
Aaron
Aaron 2013년 11월 20일
댓글: Walter Roberson 2013년 11월 20일
I received the following error and am not sure how to correct it? I've copied my 3 function files below.
This thing is really beating me up!
>> project2
Error using feval
Undefined function 'eqns' for input arguments of type 'double'.
Error in fsolve (line 218)
fuser = feval(funfcn{3},x,varargin{:});
Error in project2 (line 42)
sol = fsolve(@eqns,[-100e-3 -80e-3]) % Solve for values of psid and psis
Caused by:
Failure in initial user-supplied objective function evaluation. FSOLVE
cannot continue.
Main Program:
function y = project2(pH,ckcl)
global Eo Ef N F R T c0 c10 c20 c30 c40 z z1 z2 z3 z4 ka kb L W h u
z = 1;
z1 = 1;
z2 = -1;
z3 = 1;
z4 = -1;
T = 300;
R = 8.314;
F = 96490;
Eo = 1;
Ef = 7.08e-10;
N = 1.3285e-5;
ka = 10^(-8+3);
kb = 10^(-2.5-3);
L = 4.5e-3;
W = 50e-6;
h = 200e-9;
u = 10e-3;
pH = 8;
Cckcl = logspace(0.1,500,100);
for i = 1:length(Cckcl)
ckcl = Cckcl(i)
if pH<= 7
c10 = 10^(-pH+3);
c20 = ckcl;
c30 = ckcl + 10^(-pH+3) - 10^(-(14-pH)+3);
c40 = 10^(-(14-pH)+3);
c0 = ckcl + 10^(-pH+3);
else
c10 = 10^(-pH+3);
c20 = ckcl + 10^(-pH+3) - 10^(-(14-pH)+3);
c30 = ckcl;
c40 = 10^(-(14-pH)+3);
c0 = ckcl + 10^(-(14-pH)+3);
end
kaba = sqrt((Eo*Ef*R*T)/(2*z^2*F^2*c0));
sol = fsolve(@eqns,[-100e-3 -80e-3]) % Solve for values of psid and psis
psis = sol(1);
psid = sol(2);
psid_ckcl(i) = psid;
I = quadl(@finite,0,h/2) % Solve for the integral of streaming current
G = (-W/u*L)*I;
G_ckcl(i) = G;
end
plot(ckcl,psid_ckcl) % Figure 1
plot(ckcl,G_ckcl) % Figure 2
First function program (eqns):
function y = eqns(psi)
global N F R T c10 c20 c30 c40 z z1 z2 z3 z4 ka kb Eo Ef L W h kaba Cs psi
Cs = 0.3;
Hs = c30*exp(-F*psi(1)/(R*T));
sigs = -F*N*(ka-kb*Hs^2)/(ka+Hs+kb*Hs^2);
sigd = sign(psi(2))*sqrt(2*Ef*R*T*((c10*(-1*exp(-(z1*F*psi(2))/(R*T))))+(c20*(-1*exp(-(z1*F*psi(2))/(R*T))))+(c30*(-1*exp(-(z1*F*psi(2))/(R*T))))+(c40*(-1*exp(-(z1*F*psi(2))/(R*T))))));
y(1) = Cs*(psid - psis) + sigs;
y(2) = -Cs*(psid - psis) - sigd;
Second function program (finite):
function y = finite(x)
global psid kaba h c10 c20 c30 c40 z1 z2 z3 z4 F R T
temp1 = 1+exp(x*-kaba) * tanh(F*psid/4*R*T);
temp2 = 1-exp(x*-kaba) * tanh(F*psid/4*R*T);
psi = 2*R*T/F * log(temp1./temp2);
pe = F*(z1*c10*exp(-z1*F/R*T*psi)+z2*c20*exp(-z2*F/R*T*psi)+z3*c30*exp(-z3*F/R*T*psi)+z4*c40*exp(-z4*F/R*T*psi));
y = pe.*(x.^2 - h*x);
end
  댓글 수: 3
Aaron
Aaron 2013년 11월 20일
It shows me the path:
>> which -all eqns
E:\Comp. Methods\Course Project 2\Project 2 revision\eqns.m
Walter Roberson
Walter Roberson 2013년 11월 20일
At the command prompt, try
eqns(0)
and see if it can find eqns or not.

댓글을 달려면 로그인하십시오.

답변 (0개)

카테고리

Help CenterFile Exchange에서 Fourier Analysis and Filtering에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by