这段程序里面错误太多,很多地方莫名其妙:
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)
运行结果: