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

1 visualizzazione (ultimi 30 giorni)
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

Risposta accettata

Cris LaPierre
Cris LaPierre il 19 Mag 2023
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 Commenti
cindyawati cindyawati
cindyawati cindyawati il 20 Mag 2023
Modificato: Cris LaPierre il 20 Mag 2023
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'.

Accedi per commentare.

Più risposte (0)

Community Treasure Hunt

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

Start Hunting!

Translated by