我试图在for
循环中绘制不同颜色的3条不同的线条。但是只显示了循环中的最后一种颜色。
hold on
for N = [20, 200, 2000]
f=@(t,u)cos(3*t)-sin(5*t)*u;
a=0; b=4; ua=2;
h=(b-a)/N;
t=a+(0:N)*h; U=zeros(size(t));
U(1)=ua;
for n=1:N
U(n+1)=U(n)+h*f(t(n),U(n));
end
for color=['r' 'g' 'b']
plot(t,U,'color',color)
end
end
答案 0 :(得分:1)
问题在于,您将每条曲线绘制在自身顶部三次,以便仅显示最后一种颜色。解决此问题的一种简单方法是使用单独的循环变量和两个新向量,而不是您尝试的方法。我还在for
循环之外移动了一些常见定义:
hold on
NN = [20 200 2000];
colors=['rgb'];
f=@(t,u)cos(3*t)-sin(5*t)*u;
a=0; b=4; ua=2;
for jj = 1:3
N = NN(jj);
h=(b-a)/N;
t=a+(0:N)*h;
U=zeros(size(t));
U(1)=ua;
for n=1:N
U(n+1)=U(n)+h*f(t(n),U(n));
end
plot(t,U,'color',colors(jj))
end