0
У меня проблема с matlab ode45. Когда я пишу систему y (1) и y (2), она работает, но когда я использую больше, она говорит Попытка получить доступ к y (4); индекс вне границ, потому что numel (у) = 3 Вот код моей программы, плз проверить это `Matlab. Попытка получить доступ к y (4); индекс за пределами, потому что numel (y) = 3
function ode_epidemic()
global alfa beta hama delta lambda myu
global nfunc
nfunc=0;
alfa=1; beta=1; hama=1; delta=1; lambda=1; myu=1;
options = odeset('RelTol',1e-5);
sol = ode45(@epidemic,[0 20],[5; 0.1; 0],options);
figure
hold on;
xlabel('x','FontSize',11)
ylabel('y','FontSize',11)
plot(sol.x,sol.y(1,:),'-',...
sol.x,sol.y(2,:),'-.',...
sol.x,sol.y(3,:),'.','LineWidth',2)
hold off;
grid 'on'
disp('number of iteration')
iter=length(sol.x)
disp('number calculation of F')
nfunc
iter1=iter-1;
h=zeros(iter1,1);
x=zeros(iter1,1);
for i=1:iter1
h(i)=sol.x(i+1)-sol.x(i);
x(i)=sol.x(i);
end
figure
hold on;
xlabel('x');ylabel('y');
plot(x,h,'LineWidth',2);
hold off;
grid 'on'
end
function dy = epidemic(t,y)
global alfa beta hama delta lambda myu
global nfunc
nfunc=nfunc+1;
dy=zeros(4,1);
dy(1)=2*t*y(1)*y(4);
dy(2)=10*t*y(1)^5*y(4);
dy(3)=2*t*y(4);
dy(4)=-2*t*(y(3)-1);
end
`