Я получил следующее упражнение:Проведение While-цикл в Matlab с массивами
В этом упражнении мы будем использовать очень простую модель земли (земля только), на котором трава растет. Чистая скорость изменения доли площади земли, покрытой травой (A), определяется следующим образом: dA/dt = A ((1-A) .GD), где D - коэффициент смертности (константа 0,1 на 10 миллион лет). Темп роста травы составляет 0,4 на 10 миллионов лет (G). Дискретизируйте это уравнение. Используйте дискретизированное уравнение для вычисления A как функцию времени. Каждый шаг в программе соответствует периоду в 10 миллионов лет. Запустите модель на 200 единиц времени (2 миллиарда лет). Используйте начальное значение для A 0,001. Написать на экран время, в которое стабилизирует прирост (здесь определено как, что изменение в течение одного временного шага становится меньше, чем на 1% от разности между А в момент рассматриваемого по сравнению с начальным значением А.
Теперь я получил этот скрипт:..
clear all
%Define variables
D=0.1;
G=0.4;
A=0.001;
dt=10E6; %timestep
timevector=[];
grassvector=[];
startloop=1;
endloop=200;
%Define the loop
for t=startloop:endloop
A=A.*((((1-A).*G)-D)) + A;
grassvector(t)=A;
timevector(t)=t*dt;
end
plot(timevector, grassvector)
Это далеко, это, кажется, работает отлично, но я не могу понять вторую часть вопроса я думал, что это может быть сделано с помощью цикла в то время, но Matlab держит geking me errors.
clear all
D=0.1;
G=0.4;
A=0.001;
dt=10E6;
t=0;
timevector=[];
grassvector=[];
while A(t+1)-A(t) > 0.01(A(t)-A)
t=(t+1)*dt;
A=A.*((((1-A).*G)-D)) + A;
grassvector(t)=A;
timevector(t)=t*dt;
end
Может кто-нибудь помочь? Спасибо!
В коде есть много опечаток. Вы не можете иметь 'A (0)' в MATLAB. Также нет '*' в '0.01 (A (t) -A)'. И так далее. – NKN
Если ответ ниже удовлетворяет вашему вопросу, пожалуйста, отметьте его при принятии. –