Я пытаюсь подготовить код модели, чтобы понять массив и цикл. Когда я компилирую код, я получаю следующую ошибку.
Проблема инициализации несовместима из-за следующего уравнения: 0! = 1 = 1.0 - I [0] Ошибка при инициализации. Сохранение результатов и выход.
Используйте -lv = LOG_INIT -w для получения дополнительной информации. Процесс моделирования завершился неудачно. Выходит с кодом -1.
Я попытался настроить номера массивов, чтобы увидеть, решает ли это. Не удалось отследить причину сбоя кода.
class flu
parameter Real beta = 10.0/(40*8*24);
parameter Real gamma= 3.0/(15*24);
parameter Real dt = 0.1;
parameter Real D = 30;
parameter Integer N_t = integer(D*24/dt);
parameter Integer array = integer(N_t*dt);
//parameter Real time[array];
Real S[array] ;
Real I[array] ;
Real R[array] ;
initial equation
S[0] = 50;
I[0] = 1;
R[0] = 0;
equation
for n in 0:(array-1) loop
S[n+1] = S[n] - dt*beta*S[n]*I[n];
I[n+1] = I[n] + dt*beta*S[n]*I[n] - dt*gamma*I[n];
R[n+1] = R[n] + dt*gamma*I[n];
end for;
annotation(
__OpenModelica_simulationFlags(lv = "LOG_STATS", outputFormat = "mat", s = "dassl"));end flu;
В результате я ожидаю получить три кривые.