Error message from integral calculation

1 回表示 (過去 30 日間)
Orongo
Orongo 2018 年 4 月 7 日
コメント済み: Steven Lord 2018 年 4 月 9 日
Hi, I'm calculating the survival function (lx) that is expressed with an integral such as
to calculate this I have created following program
% main.m
param_1938 = [2.06441912000572E-07/1000,0.197642212387667/100000,1.23947876070978/10];
mu_x=@(t) f_lx(param_1938);
l_x = exp(-integral(@(t) mu_x(t),0,106));
%f_lx.m
function res=f_lx(param)
x=(0:1:106)';
a=param(1);
b=param(2);
c=param(3);
res = zeros(size(x));
ind = x>100;
res(ind) = a+b*exp(c*100)+(x(ind)-100)*0.001;
res(~ind) =a+b*exp(c*x(~ind));
end
This result in the error message
Error using integralCalc/finalInputChecks (line 515)
Output of the function must be the same size as the input. If FUN is an array-valued integrand, set the 'ArrayValued' option to true.
Error in integralCalc/iterateScalarValued (line 315)
finalInputChecks(x,fx);
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);
I'm not seeing where this goes wrong. Please can anyone shed some light on this??

回答 (1 件)

Steven Lord
Steven Lord 2018 年 4 月 7 日
You want to integrate with respect to x, not with respect to your parameters. See the "Parameterized Function" example on the documentation page for the integral function and the "Parameterizing Functions" page linked in the Topics section on that page to see how to integrate a parameterized function like yours.
  2 件のコメント
Orongo
Orongo 2018 年 4 月 9 日
Ok, I changed the code a bit but still getting same error though.
% main
param_1938 = [2.06441912000572E-07/1000,0.197642212387667/100000,1.23947876070978/10];
mu_x=@(t) f_lx(t,param_1938);
l_x = exp(-integral(mu_x,0,106));
Steven Lord
Steven Lord 2018 年 4 月 9 日
And you changed f_lx to accept the first input argument as x and does not overwrite the array integral passed into your integrand function with a vector of a fixed length?

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeProgramming についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by