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)

    运行结果: