利用matlab编写迭代算法进行线性模拟过程出现的问题,希望有高手指点一下
这是我最近在做的一个课题,函数模型是y=ax+b,我利用了最小二乘方法求出了参数a,b的值,但是我还需要利用这个最小二乘求出来的值利用我已有的公式进行迭代求出更精确的a,b的值,我的部分程序是这样的syms x
N=A'*A;
c=A'*L;
x0=inv(N)*c;
v=(L-A*x)'*(L-A*x)/(1+x'*x);
f=inv(N)*(c+x*v);
eps=1e-6;
maxcnt=1000;
x1=x0;
cnt=1;
while cnt<=maxcnt
x2=sub(f,x,x1);
if abs(x1-x2)<eps
break;
end
[cnt,x1,x2]
cnt=cnt+1;
end
其中的矩阵A,L我都有真值代入的,但是,每次运行都会出现问题
第一个问题时:??? Error using ==> sym.minus
Array dimensions must agree.
Error in ==> zongti at 8
f=inv(N)*(c+x*(L-A*x)'*(L-A*x)/(1+x'*x));
第二个问题是:?? Error using ==> reshape
To RESHAPE the number of elements must not change.
Error in ==> sym.double at 45
D = reshape(eval(X),siz);
Error in ==> sym.subs at 165
NEWf = double(sym(maple('map','F',char(sym([NEWexpr{:}])))));
Error in ==> zongti at 14
x2=subs(f,x,x1);
请问谁能指点一下我,我编的程序逻辑上我都看了一下,没什么问题,但是运行的时候就有问题了,还有就是在这部中if abs(x1-x2)<eps,x1和x2都是一个二行一列的矩阵,这两个矩阵怎么有效的进行比较