matlab 做图问题,请赐教……急。为什么x轴不是以0为起点?我要的是y随x在(0,30】内的变化,求高手修改

x=0:1:1;y=(346500*0.0613*(1+0.0613).^x)./((1+0.0613).^x-1);
Warning: Divide by zero.
>> x=1:1:2;y=(346500*0.06265*(1+0.06265).^x)./((1+0.06265).^x-1);
>> x=2:1:3;y=(346500*0.06391*(1+0.06391).^x)./((1+0.06391).^x-1);
>> x=3:1:4;y=(346500*0.06535*(1+0.06535).^x)./((1+0.06535).^x-1);
>> x=4:1:5;y=(346500*0.06662*(1+0.06662).^x)./((1+0.06662).^x-1);
>> x=5:1:30;y=(346500*0.06871*(1+0.06871).^x)./((1+0.06871).^x-1);
>> plot(x,y)

第1个回答  2010-12-24
你的程序有下面几个问题:
1、你的程序执行完之后,x是从5到30,x从0到4的值,没有记录在y中;
2、你的程度应该是分段函数,有个分段;
相邻2个分段的定义域 不应有重复的点;
下面,我把每个分段的定义域随便改了下,你可以根据需要再做修改:

x = 0:1:1; y = (346500*0.0613*(1+0.0613).^x)./((1+0.0613).^x-1);
% Warning: Divide by zero.
x = 2:1:2; y = [y (346500*0.06265*(1+0.06265).^x)./((1+0.06265).^x-1)];
x = 3:1:3; y = [y (346500*0.06391*(1+0.06391).^x)./((1+0.06391).^x-1)];
x = 4:1:4; y = [y (346500*0.06535*(1+0.06535).^x)./((1+0.06535).^x-1)];
x = 5:1:5; y = [y (346500*0.06662*(1+0.06662).^x)./((1+0.06662).^x-1)];
x = 6:1:30; y = [y (346500*0.06871*(1+0.06871).^x)./((1+0.06871).^x-1)];
x = 0:30;
plot(x,y);
xlim([0 30]); % 用于限定图形中x轴的min、max值
第2个回答  2010-12-24
X=[];Y=[];x=[];y=[];
x=0.1:0.1:1;y=(346500*0.0613*(1+0.0613).^x)./((1+0.0613).^x-1);
X=[X x];Y=[Y y];
x=1:1:2;y=(346500*0.06265*(1+0.06265).^x)./((1+0.06265).^x-1);
X=[X x];Y=[Y y];
x=2:1:3;y=(346500*0.06391*(1+0.06391).^x)./((1+0.06391).^x-1);
X=[X x];Y=[Y y];
x=3:1:4;y=(346500*0.06535*(1+0.06535).^x)./((1+0.06535).^x-1);
X=[X x];Y=[Y y];
x=4:1:5;y=(346500*0.06662*(1+0.06662).^x)./((1+0.06662).^x-1);
X=[X x];Y=[Y y];
x=5:1:30;y=(346500*0.06871*(1+0.06871).^x)./((1+0.06871).^x-1);
X=[X x];Y=[Y y];
plot(X,Y);

PS:一楼没有误解了楼主的意思了吧;二楼改的好像不对,我试过了;三楼纯属偏题!本回答被提问者采纳
第3个回答  2010-12-24
人家不是说的很清楚吗?Warning: Divide by zero.
当x=0时,y的表达式里零做除数了!
而且(0,30],左端是开区间,说明x不能等于零。
建议第一段这样画图:
x=0.1:0.1:1;y=(346500*0.0613*(1+0.0613).^x)./((1+0.0613).^x-1);
其他段不用变。
第4个回答  2010-12-24
>> x=0:0.001:1;y=(346500*0.0613*(1+0.0613).^x)./((1+0.0613).^x-1);
你使用这个函数吧,还有你的Matlab版本是不是很久了啊?
相似回答