MATLAB画图没有报错但无图形

问题描述:

MATLAB画图没有报错但无图形
题目:用改进欧拉法画dy/dx=x+y,并与精确解y(x)=2e^x-1-x比较
h=0.1;
x=1:1:11;
y(1)=1;
y2(1)=1;
for i=1:1:10
k1=x(i)+y(x(i));
k2=x(i)+h+y(x(i))+h*k1;
y(i+1)=y(x(i))+h/2*(k1+k2);
y2(i+1)=2*exp(x(i+1))-1-x(i+1);
end
plot(x,y2,'r',x,y,'g')
axis([0 1 1 3.5])
set(gca,'xtick',[0 0.5 1])
set(gca,'xticklabel','0|0.5|1')
set(gca,'ytick',[1 1.5 2 2.5 3 3.5])
set(gca,'yticklabel','1|1.5|2|2.5|3|3.5')
legend('精确解','前向Eula法')
h=0.1;
x=0:0.1:1;
y(1)=1;
y2(1)=1;
for i=1:1:10
k1=x(i)+y(x(i));
k2=(x(i)+h)+(y(x(i))+h*k1);
y(i+1)=y(x(i))+h/2*(k1+k2);
y2(i+1)=2*exp(x(i+1))-1-x(i+1);
end
plot(x,y2,'r',x,y,'g')
axis([0 1 1 3.5])
set(gca,'xtick',[0 0.5 1])
set(gca,'xticklabel','0|0.5|1')
set(gca,'ytick',[1 1.5 2 2.5 3 3.5])
set(gca,'yticklabel','1|1.5|2|2.5|3|3.5')
legend('精确解','前向Eula法')
如果这样写,那么怎么样修改不出现“ Attempted to access y(0); index must be a positive integer or logical.”
1个回答 分类:综合 2014-11-12

问题解答:

我来补答
你的x=0:0.1:1,得到的数组第一位x(1)=0;然后用 k1=x(i)+y(x(i)),就出现了y(0)的情况,matlab里面的矩阵下标是从1开始的,不能出现0,也不能出现小数,所以你想用这种y(x(i))赋值的话,必须保证x矩阵(向量)都是正整数,所以你要不想换步长与初值,那就得考虑换y的下标了,换成y(i)试试?
k1=x(i)+y(x(i));
k2=(x(i)+h)+(y(x(i))+h*k1);
y(i+1)=y(x(i))+h/2*(k1+k2);
里面的y(x(i))都换成y(i)
 
 
展开全文阅读
剩余:2000