迭代最小二乘法matlab

我是小白,想要解决图片上的方程,迭代完了之后应该是s等于300,q等于400

img


所以我写了一个循环的代码

img


但是运行出来的结果是

img


不是应得的数据,为什么啊

你好,你的程序没错的,但是for i = 1:50,循环里面不需要i=i+1了,我给你改成这样就行:

q = 700; s = 0;
N = 50;
data1 = zeros(N,2);
data2 = zeros(N,2);
for i = 1:1:N
    qs = [0.7, 0.4; 0.3,0.6]*[q;s];
    q = round(qs(1));
    s = round(qs(2));
    data1(i,:) = [i,q];
    data2(i,:) = [i,s];
end
plot(data1(:,1), data1(:,2),'r--')
hold on
plot(data2(:,1), data2(:,2),'b-')
legend('Q','S')

其中data1和data2的第一列是循环迭代次数,第二列分别是每次迭代的Q和S

img