Plot Population growth function with different values of b using for loop

I need to plot population growth model with different values of b
where b>d
and b=d
using for loops. Both results should be visible on the same graph with different colors.
Here is my function and intial value, but I am not getting how to get the plot .
H=@(t,N)[b*N-d*N];
[T,Y]=ode45(H,[0:1:time],[N0]);
Intitial value
b= 0.1 0.001
d=0.001
N0=400
I need two line for each b on the same plot.

답변 (1개)

f = @(t,b,d,N0) N0*exp((b-d)*t);
t = 0:0.1:10;
N0 = 400;
b = [0.1 0.001].';
d = 0.001;
plot(t,f(t,b,d,N0))
grid on

댓글 수: 10

Saira
Saira 2023년 2월 2일
편집: Saira 2023년 2월 2일
As per requirement, I have to use forloop and ODE function. and T should be from 0 to 400. Sorry forget to mention
b = [0.1 0.001];
d = 0.001;
N0 = 400;
time = 400;
hold on
for i = 1:numel(b)
H=@(t,N)[b(i)*N-d*N];
[T,Y] = ode45(H,[0:1:time],[N0]);
plot(T,Y)
end
hold off
grid on
Thanks, I was getting the same results.
But when I try an individual plots by putting b=.01, and b=.001. I get the results as attached. and you can see the plots dimentions are totally different. They should be same, either by putting in the seperate function or function inside a loop.
Why you are too getting totally different plots for the same function and same inputs?
Torsten
Torsten 2023년 2월 2일
편집: Torsten 2023년 2월 2일
Show us the two codes for which you mean you get different results for the same input.
Include them as text here, not as a PNG file.
function[T,Y]=model_growth(par,time)
b=par(1);
d=par(2);
N0=par(3);
H=@(t,N)[b*N-d*N];
[T,Y]=ode45(H,[0:1:time],[N0]);
end
Commands: when b=d
par=[0.01 0.01 400];
time=500;
[~,Y]=model_growth(par,time)
plot(T,Y)
and
par=[0.01 0.001 400];
time=500;
[~,Y]=model_growth(par,time)
plot(T,Y)
I don't understand your point.
The parameters are different for the two cases - so the results are different.
You are right, I think that was what I was doing wrong. but
par=[0.01 0.01 400];
time=500;
[T,Y]=model_growth(par,time)
plot(T,Y)
This gives a straight line at 400 point when I use it in indivdual function, but at 0 when in a loop. Can you elaborate, what is going on here.
Maybe 400 looks like 0 in the loop plot because the second plot gives such large results for N.
Look at the plot from my code above. The red line looks like 0 because the blue line gets up to about 7e19, but is 400.
Thank you so much.
I have just started coding so don't know these subtle changes.

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터File Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

태그

질문:

2023년 2월 1일

댓글:

2023년 2월 2일

Community Treasure Hunt

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

Start Hunting!

Translated by