Hello, I want to make function Runge-Kutta orde 4 with equation depend on time, but in MATLAB i get some error

3 次查看(过去 30 天)
I want to use this equation with runge-kutta orde 4
function M1 =fRK4M1(M1)
%M1 =M1(j)+1./(1+exp(-T(j)));
m1 = (50*M1(j+1)*(1-(M1(j+1)/75))-2*(10^-4)*M1(j+1)*M1(j+1)-M1(j+1)*((5*10^-4).*M2(j+1))-((10-3)*(10^-4)*M1(j+1)*M3(j+1))-((100-10)*0.1*M1(j+1)*O(j+1))-((10^-3)*M1(j+1)));
M1 = dt *m1;
end

采纳的回答

Cris LaPierre
Cris LaPierre 2023-5-19
You have not defined j, so in MATLAB, by default that letter is used to create complex numbers. As the error message states, your index must be positive integers.
j+1
ans = 1.0000 + 1.0000i
a=1:5;
a(j+1)
Array indices must be positive integers or logical values.
  2 个评论
cindyawati cindyawati
编辑:Cris LaPierre 2023-5-20
Thank you for your response @Cris LaPierre. So, I must using looping like this? Because j is depend on time
t(1)=0;
dt=0.01; %time interval
t=0:dt:100; %time span
for j = 1:length((t)-1)
T(j+1)=T(j)+dt;
M1 =M1(j)+1./(1+exp(-T(j)));
end
Unrecognized function or variable 'T'.

请先登录,再进行评论。

更多回答(0 个)

Community Treasure Hunt

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

Start Hunting!

Translated by