1

我有以下 matlab 代码,用于通过欧拉法逼近微分方程:

% Eulermethod

a=0;
b=0.6;
Steps=6;
dt=(b-a)/Steps;
x=zeros(Steps+1,1);

x(1,1)=1;
y=zeros(Steps+1,1);

for i=1:Steps
    x(i+1,1)=x(i,1)+dt*(x(i,1)*x(i,1)+1);
end
plot(x)

我希望能够在一个图中为几个不同的 Steps 值绘制解图,并让 x 轴从 0 到 0.6 而不是从例如 1 到 100 000 等。可以这样做吗?

4

2 回答 2

2

如果您使用该hold on命令,这将允许您在同一个图形上实现多个绘图。同样,如果您将数据分成x和向量,您可以通过传递 2 个向量而不是一个y向量来将它们相互绘制。plot例如

figure
hold on
for i=1:m
    x = [];
    y = [];
    %% code to populate your vectors
    plot(x,y)
end

您现在应该在同一个图形上同时看到所有绘图。如果要xn0 到 0.6 之间的等距元素组成,可以使用以下linspace命令:

 x = linspace(0.0,0.6,n);

为了区分您的图,您可以将额外的参数传递给函数。例如

 plot(x,y,'r+')

将数据绘制为一系列红色+符号。

于 2012-11-12T14:01:18.137 回答
0

Plot 可以接受更多参数: plot(x_axis,values, modifiers ); 如果x 轴是 M 个元素的向量,则值可以是 MxN 个元素的矩阵,每个元素都用单独的颜色绘制。

于 2012-11-12T14:02:35.903 回答