Calculate integral with an external formula

I calculating an integral over a function that is defined in seperate m-file. My program looks like:
% main.m
mu_x=@(t) lx(t);
l_x = exp(-integral(@(t) mu_x(t),0,98));
% lx.m
function res=lx(x)
a=0.006782872;
b=5.44781E-08;
c=0.137849468;
if x>97
res = a+b*exp(c*97)+(x-97)*0.001;
else
res=a+b*exp(c*x);
end
I expect lx(x)=lx(98) => res=a+b*exp(c*97)+(x-97)*0.001; to be calculated but instead res=a+b*exp(c*x) is done. I want to keep this if-function in lx.m, is there anyway I can do this? Also, what is going wrong??

 채택된 답변

David Goodmanson
David Goodmanson 2017년 10월 11일
편집: David Goodmanson 2017년 10월 11일

0 개 추천

Hi Lenovo,
Your 'if' check is not working correctly, because the res function takes vector input for x. One way to do the task is to create an index that shows whether or not x > 97:
x = 0:.01:120;
plot(x,lx(x)) % demo
function res=lx(x)
a=0.006782872;
b=5.44781E-08;
c=0.137849468;
res = zeros(size(x));
ind = x>97;
res(ind) = a+b*exp(c*97)+(x(ind)-97)*0.001;
res(~ind) =a+b*exp(c*x(~ind));
end

댓글 수: 3

Orongo
Orongo 2017년 10월 12일
Thanks that improved the value. I'm checking my calculation in Excel and values for x>97 still don't reconcile. The calculations I'm doing is:
For x=98 I calculate 0.0067828+5.447812E-08*EXP(0.137849*97)+(98-97)*0.001 = 0.0427247 and the same solution in Matlab gives me 0.3853352. I'm still not grasping the full picture what's happening here.
I just plugged your expression
0.0067828+5.447812E-08*EXP(0.137849*97)+(98-97)*0.001
verbatim into Matlab, changed EXP to exp and got 0.0427, just like the demo plot in the posted answer gives and Excel gives. So I do not know where the .385 might be coming from.
Orongo
Orongo 2017년 10월 15일
Ok. Thanks. I still getting the problem and will close this discussion and open a new one because I think the problem is rippling.

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

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 MATLAB에 대해 자세히 알아보기

질문:

2017년 10월 11일

댓글:

2017년 10월 15일

Community Treasure Hunt

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

Start Hunting!

Translated by