我有一个函数(对于SIR模型),然后是一个解决此函数的脚本,并将其与我试图使该模型拟合的数据进行比较。因此,我试图运行for循环来更改函数中的参数,以优化拟合。我想知道如何在for循环中更改我的(r)和(a)参数而不必手动更改它们:
function ydot=epidemic(t,y)
r=0.000001;
a=1/3;
ydot=zeros(3,1);
ydot(1)=-r*y(1)*y(2);
ydot(2)=r*y(1)*y(2)-a*y(2);
ydot(3)=a*y(2);
end
和
[t,y]=ode45('epidemic',[0:222], [70500,1,0])
由于
答案 0 :(得分:2)
您可以使用以下内容:将r和参数添加到函数
function ydot=epidemic(t,y,r,a)
ydot=zeros(3,1);
ydot(1)=-r*y(1)*y(2);
ydot(2)=r*y(1)*y(2)-a*y(2);
ydot(3)=a*y(2);
end
然后将函数传递给ode45,就像那样
r = 0.000001 ;
a = 1/3 ;
[t,y]=ode45(@(t,y)epidemic(t,y,r,a),[0:222], [70500,1,0])
基本上,@(t,y)流行病(t,y,r,a)定义了一个带参数(t,y)的新函数,其中r和a使用的是上面定义的值。
然后你可以将所有这些放在for循环中。