Интегральный расчет с параметрами и возрастными зависимостями - PullRequest
0 голосов
/ 28 января 2019

У меня есть рабочая функция интеграла, которую я хотел бы расширить.Я хочу рассмотреть различные параметры в зависимости от возраста.

param_1938 for ages >=76
param_1945 for ages 66 to75
param_1955 for ages 61 to 65

Рабочая функция, которую я хотел бы расширить, выглядит следующим образом

x=(0:1:106)';
mu_x=@(t) f_lx(t,param_in);
for ii=1:size(x,1)-61
    l_x(ii,1) = exp(-integral(mu_x,0,60+ii));
end
%%
function res=f_lx(x,param)
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

Я думаю изменить параметр param_in в f_lx(x,param) на f_lx(x,param1938,param_1945,param_1955).Как я могу это сделать?

Поправка: это математическое выражение того, что я пытаюсь сделать

enter image description here

1 Ответ

0 голосов
/ 28 января 2019

Вы можете определить изменяемый вход на лету в вашем цикле и соответственно переопределить функцию

x=(0:1:106)';
for ii=1:size(x,1)-61
    age = 60 + ii; 
    % Define p for the age bracket of the current 'age'
    if age < 66
       p = param_1955;
    elseif age < 76
       p = param_1945;
    else
       p = param_1938;
    end
    % Define a new function, param_in defined by p
    mu_x = @(t) f_lx(t, p);
    % Integrate the new function
    l_x(ii,1) = exp( -integral(mu_x, 0, age) );
end  
...