Лабораторная работа 8 Популяция
Скачать 204 Kb.
|
Лабораторная работа №8Популяция1.Постановка задачиНеобходимо рассмотреть процесс изменения популяризации города (планеты). В изменении популяризации участвуют два процесса: гибель и рождаемость. необходимо рассмотреть несколько вариантов зависимости размера населения от различных заданных первичных параметров. 2.ИдеализацияНе учитываем среду обитания Не учитываем ресурсы Не учитываем несистематизированное изменение популяризации, такое как, например, гибель населения от катастроф 3.Модель Мальтуса3.1.ТеорияВведём параметры: n(t) - зависимость населения от времени. α - характеристика рождаемости ß - характеристика смертности Обе характеристики таковы, что: Введём зависимость dn от dt — прирост популяции за короткий промежуток времени Для получения зависимости n(t) необходимо, очевидно, чтобы dt стремилось к нулю. Получаем дифференциальное уравнение Решаем его: При решении этого уравнения мы предположили, что в начальный момент времени население составляло n0 человек. Получили экспоненциальную зависимость. Рассмотрим её влияние, смоделировав эту зависимость 3.2.Код Matlabz1.m global alpha betta n0 np; np=100; n0=100; alpha=0.9; betta=0.5;%n/n0; startt=0; maxt=7; starty=100; colors=['b','r','g','y','m','c','k']; experiments=7; alphas=alpha:-0.1:alpha-0.1*experiments; p=zeros(experiments); for i=1:experiments %if (i<=experiments/2) alpha=alphas(i); %end; t=[startt maxt]; [t,Y]=ode45('func',t,n0); Y=Y(Y>=0 & Y<=1000 ); t=t(Y>=0 & Y<=1000 ); p(i)=plot(t,Y,colors(mod(i,length(colors))+1)); hold on; end; legend1=legend(strcat('a=',num2str(alphas')),'Location','NorthWest'); ylabel popularity; xlabel time; grid on; title(strcat('Модель Мальтуса при b=',num2str(betta), ' (зависимость от a)')); hold off; func.m function f=func(t,y) global alpha betta n0; f=(alpha-betta).*y; end 3.3.Результат MatlabЗависимость размера популяции от коэффициента alpha Увеличенно ОчОчевидно, что данная модель мало похожа на реальное расположение дел на Земле: в зависимости от начальной разницы между α и ß, популяция либо растёт до бесконечности, либо опускается до нуля. Всё, что мы можем делать, это указать начальные значения α и ß. 4.Равновесная численность4.1.ТеорияПусть у численности населения есть асимптота, равная какой-то установившейся, назовём её равновесной, численности. Для получения такой модели установим коэффициент рождаемости α, а смертность ß сделаем равной 1-n/np, где np - равновесная численность. В таком случае, чем численность больше равновесной, тем выше смертность населения. Получаем следующее уравнение: Решим его Применим начальные условия Получили общую формулу, которую можно сразу же проверить в Matlab’е 4.2.Код проверки Matlabglobal alpha betta n0 np; np=400; n0=800; alpha=0.2; betta=0.5; startt=0; maxt=12; colors=['b','r','g','y','m','c','k']; t=[startt maxt]; [t,Y]=ode45('func2',t,n0); Y=Y(Y>=0 & Y<=1000 ); t=t(Y>=0 & Y<=1000 ); plot(t,Y,'g'); hold on; Y2=np*n0*exp(alpha.*t)./(np-n0*(1-exp(alpha.*t))); plot(t,Y2,'+r'); ylabel popularity; xlabel time; grid on; hold off; 4.3.Результат проверки MatlabОчевидно, что теоретическое и практическое значение совпадают, однако мы будем использовать экспериментальный способ нахождения популяции (решение задачи Коши) 4.4.Зависимость популяции от αКод задачи Matlab func2.m function f=func2(t,y) global alpha betta n0 np; f=alpha*(1-y./np).*y; end z2.m global alpha betta n0 np; np=100; n0=400; alpha=0.4; betta=0.5;%n/n0; startt=0; maxt=12; starty=100; colors=['b','r','g','y','m','c','k']; experiments=7; alphastep=0.05; alphas=alpha:-alphastep:alpha-alphastep*experiments; p=zeros(experiments); for i=1:experiments %if (i<=experiments/2) alpha=alphas(i); %end; t=[startt maxt]; [t,Y]=ode45('func2',t,n0); Y=Y(Y>=0 & Y<=1000 ); t=t(Y>=0 & Y<=1000 ); p(i)=plot(t,Y,colors(mod(i,length(colors))+1)); hold on; end; legend1=legend(strcat('a=',num2str(alphas'))); %set(legend1,'Location','NorthWest'); ylabel popularity; xlabel time; grid on; title(strcat('Модель с равновесной численностью, np=',num2str(np),', n0=',num2str(n0), ' (зависимость от a)')); hold off; Результат Matlab Очевидно, что в зависимости от разницы между текущей популяцией и равновесной, α либо увеличивает скорость стремления к равновесной, либо уменьшает. 4.5.Зависимость популяции от начальнойКод задачи Matlab z3.m global alpha betta n0 np; np=400; n0=800; alpha=0.2; betta=0.5; startt=0; maxt=12; starty=100; colors=['b','r','g','y','m','c','k']; experiments=7; alphastep=0.05; n0step=100; n0s=n0:-n0step:n0-n0step*experiments; p=zeros(experiments); for i=1:experiments n0=n0s(i); t=[startt maxt]; [t,Y]=ode45('func2',t,n0); Y=Y(Y>=0 & Y<=1000 ); t=t(Y>=0 & Y<=1000 ); p(i)=plot(t,Y,colors(mod(i,length(colors))+1)); hold on; end; legend1=legend(strcat('n0=',num2str(n0s'))); %set(legend1,'Location','NorthWest'); ylabel popularity; xlabel time; grid on; title(strcat('Модель с равновесной численностью, np=',num2str(np),', a=',num2str(alpha), ' (зависимость от n0)')); hold off; Результат Matlab Видно, что размер популяции стремиться стать равновесным, что мы и добивались. 5.Другие распределения5.1.Sin зависимостьПопробуем внести небольшую погрешность в равновесную модель равновесной численности. Сперва рассмотрим такую зависимость α: α(t)=α*sin(t)^2; Код Matlab function f=func2(t,y) global alpha betta n0 np; f=alpha.*(sin(t).^2).*(1-y/np).*y; end Результат Matlab 5.2.Зависимость с погрешностьюВносим случайную погрешность и в коэффициент α, и в коэффициент ß: α(t)=α+randn(1); ß(t)=(1-n/np)+randn(1) Код Matlab function f=func3(t,y) global alpha betta n0 np; f=(alpha+randn(1)).*(1-y/np+randn(1)).*y; end Результат Matlab Зависимость от n0 Зависимость от α ИтогиДовольно очевидно, что смоделировать изменение популяции населения — довольно сложная задача. Все идеализированные модели довольно далеки от реальной картины постоянного изменения численности населения, даже за вычетом непредвиденных обстоятельств, резко меняющих показания. Однако модель, в которую внесён фактор случайности, приводит к довольно интересным показаниям, довольно правдиво показывая непредвиденность в численности населения. |