matlab程序出现了错误,不知道哪里出错了
1个回答

这段程序里面错误太多,很多地方莫名其妙:

1、原代码第10行的圆括号误为全角,即“D(1)”应为“D(1)”;

2、原代码第16行的圆括号误为方括号,即“F[1]”应为“F(1)”;

3、原代码第12行的C未定义,不知道本意是什么,这里试着将其改为c;

4、原代码第2-3行定义符号变量基本上没有作用(因为代码的第8行和15行分别对变量进行了赋值),删掉.原来定义成符号变量的副作用有两个:

(1)c成了列向量,后面用到c的地方要注意转换;

(2)a、b、c都是符号变量,第18行的计算结果也是符号类型,无法保存到F中.

5、原代码第21行的循环,由于t2长度为10,要保证G的长度和t2相同才能画图,所以把n+10改为10.

改后的代码如下(需要说明的是,除前两处错误为语法错误容易判断之外,后面三处错误都属于运行时错误,改动只是尽量猜测错误代码的可能目的是什么,但并不保证和作者的本意相同):

clear

A=[2.9 3.6 4.5 5.88 8.1];

B=cumsum(A);

n=length(A);

for i=1:(n-1)

c(i)=(B(i)+B(i+1))/2;

end

C=c;

D=A;D(1)=[];

D=D';

E=[-C;ones(1,n-1)];

c=inv(E*E')*E*D;

c=c';

a=c(1);b=c(2);

F=[];F(1)=A(1);

for i=2:(n+10)

F(i)=(A(1)-b/a)/exp(a*(i-1))+b/a;

end

G=[];G(1)=A(1);

for i=2:10

G(i)=F(i)-F(i-1);

end

t1=2008:2012;

t2=2008:2017;

G

plot(t1,A,'o',t2,G)

运行结果: