Trying to plot multiple Euler curves with 3 different step values.
3 次查看(过去 30 天)
显示 更早的评论
Ive gotten this far and have tried other methods but i think this is kind of the way i needed to go. Any help would be great! Thanks! I havent had much or really any Matlab training.
clear t
clear x
a = 0;
b = 30;
x0 = 6;
h = (b-a)/N;
t(1)= a;
x(1) = x0;
for N=60
x(n+1)=x1;
for N=300
x(n+1)=x2;
for N=3000
x(n+1)=x3;
t(n+1)=t(n)+ h;
x(n+1)= x(n)+ h.*0.65.*x(n).*(1-(x(n)/5.4));
end
hold on
plot(t,x3)
end
hold on
plot(t,x2)
end
hold on
plot(t,x1)
0 个评论
回答(2 个)
Sulaymon Eshkabilov
2021-9-30
There are a few unknowns and flaws in your code, e.g.:
N, x1, x2, x3 are not known
Within loops: N=60, N = 300, N = 3000 are not correctly defined. If you need to compute x and t for n times, then the loops need to be n=1:60, n=1:300, n=1:3000
Sulaymon Eshkabilov
2021-9-30
Here is the corrected complete code that computes x1, x2, x3 along with t1, t2, t3 and plots their values accordingly:
a = 0;
b = 30;
x0 = 6;
N = 10;
h = (b-a)/N;
t(1)= a;
x(1) = x0;
for n=1:60
x1(n) = x(n);
t1(n) = t(n);
for n=1:300
x2(n)=x(n);
t2(n)=t(n);
for n=1:3000
x3(n)=x(n);
t3(n)=t(n);
t(n+1)=t(n)+ h;
x(n+1)= x(n)+ h*0.65.*x(n)*(1-(x(n)/5.4));
end
end
end
plot(t1,x1, 'ro-')
hold on
plot(t2,x2, 'g*--')
plot(t3,x3, 'b-')
legend('t_1 vs. x_1 (N=60)', 't_2 vs. x_2 (N=300)', 't_3 vs. x_3 (N=3000)')
xlabel('t_1, t_2, t_3')
ylabel('x_1, x_2, x_3')
grid on
Note that all plot commands are taken outside of the loop that significantly speeds up the simulation.
You should still consider the memory allocation before the loop to speed up the simulation using zeros(), eg. that is a small exercise for you.
Good luck!
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!