Calculate integral with an external formula
    조회 수: 6 (최근 30일)
  
       이전 댓글 표시
    
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??
댓글 수: 0
채택된 답변
  David Goodmanson
      
      
 2017년 10월 11일
        
      편집: David Goodmanson
      
      
 2017년 10월 11일
  
      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
  David Goodmanson
      
      
 2017년 10월 12일
				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.
추가 답변 (0개)
참고 항목
카테고리
				Help Center 및 File Exchange에서 Debugging and Analysis에 대해 자세히 알아보기
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


