Problem with undefined variable in integral

5 次查看(过去 30 天)
Hi, I try to solve this integral:
where the functions in lambda are defined in the code. I try want to compute this integral for several values of a like 18,19, and so on. I first tried with a=18 then i compute (without success) pi(18). Here is my code:
if true
cms = @(s) exp(1.39-0.065*s);
cfu = @(u) exp(0.83-0.071*u);
Ifu = @(u) exp(-0.970774-0.077159*u);
sdu = @(u) (-0.67+0.133*u);
mu = @(u) (u-4)/0.8;
pm = @(u,s) (1/sqrt(2*pi*(sdu(u)^2)))*exp(-(1/2*sdu(u)^2)*(s-mu(u))^2);
lambdas = @(s) cms(s)*integral((cfu(u)*Ifu(u)*@(u)pm(u,s)),18,65);
%%%%
cmu = @(u) exp(1.39-0.065*u);
cfr = @(r) exp(0.83-0.071*r);
Ifr = @(r) exp(-0.970774-0.077159*r);
sdr = @(r) (-0.67+0.133*r);
mr= @(r) (r-4)/0.8;
%%%%
pm = @(r,u) (1/sqrt(2*pi*(sdr(r))^2))*exp(-(1/2*sdr(r)^2)*(u-mr(r))^2);
lambdau = @(u) cmu(u)*integral((cfr(r)*Ifr(r)*@(r)pm(r,u)),18,65);
%Try to compute pi for a=20 pi(20)
integral(exp(20-s)*lambdas(s)*exp(-integral(lambdau(u),18,s)),18,20) ;
end
I always get this error : Undefined function or variable 's'.
Any suggestion to correct it? Sorry but I'm quite new to matlab.. maybe I'm doing a really silly mistake.

回答(1 个)

Walter Roberson
Walter Roberson 2016-1-28
integral( @(s) exp(20-s)*lambdas(s)*exp(-integral(@(u) lambdau(u),18,s)),18,20) ;
  1 个评论
Martina
Martina 2016-1-28
Hi, thank you.. but with your suggestion I obtain:
Error using mupadmex Error in MuPAD command: Not a square matrix. [(Dom::Matrix(Dom::ExpressionField()))::_power]
Error in sym/privBinaryOp (line 835) Csym = mupadmex(op,args{1}.s, args{2}.s, varargin{:});
Error in ^ (line 229) B = privBinaryOp(A, p, 'symobj::mpower');
Error in @(u,s)(1/sqrt(2*pi*(sdu(u)^2)))*exp(-(1/2*sdu(u)^2)*(s-mu(u))^2)
Error in @(u)pm(u,s)
Error in sym>funchandle2ref (line 1172) S = x(S{:});
Error in sym>tomupad (line 989) x = funchandle2ref(x);
Error in sym (line 142) S.s = tomupad(x,'');
Error in sym/privResolveArgs (line 810) argout{k} = sym(arg);
Error in sym/privBinaryOp (line 834) args = privResolveArgs(A, B);
Error in * (line 219) X = privBinaryOp(A, B, 'symobj::mtimes');
Error in @(s)cms(s)*integral((cfu(u)*Ifu(u)*@(u)pm(u,s)),18,65)
Error in @(s)exp(20-s)*lambdas(s)*exp(-integral(@(u)lambdau(u),18,s))
Error in integralCalc/iterateScalarValued (line 314) fx = FUN(t);
Error in integralCalc/vadapt (line 132) [q,errbnd] = iterateScalarValued(u,tinterval,pathlen);
Error in integralCalc (line 75) [q,errbnd] = vadapt(@AtoBInvTransform,interval);
Error in integral (line 88) Q = integralCalc(fun,a,b,opstruct);

请先登录,再进行评论。

Community Treasure Hunt

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

Start Hunting!

Translated by