出于某种原因,我无法在Octave中克服这个问题:
for i=1:n
y(2:(i+1))=y(2:(i+1))-x(i)*y(1:i)
end;
如果我逐步分解(假设n = 3),那么循环不会像这样:
i=1
y(2)=y(2)-x(1)*y(1)
i=2
y(2)=y(2)-x(2)*y(1)
y(3)=y(3)-x(2)*y(2)
i=3
y(2)=y(2)-x(3)*y(1)
y(3)=y(3)-x(3)*y(2)
y(4)=y(4)-x(3)*y(3)
嗯,我一定是错的,因为一步一步做循环的结果并不好,但对于我的生活,我无法弄清楚在哪里。有人可以帮助我吗?
答案 0 :(得分:1)
首先,请原谅我的样式,之前我从未在Stack Overflow中使用过矩阵/向量表示。无论如何,我希望这能让你了解它的内部运作方式:
x = [1,2,3]
y = [1,0,0,0]
第1步:
第一个循环将执行:
y(2)=y(2)-x(1)*y(1)
这些只是标量值,y(2)= 0,x(1)= 1,y(1)= 1。 所以y(2)= 0-1 * 1 = -1,这意味着向量y中的第二个位置将变为-1。
导致y = [1,-1,0,0]
第2步:
下一个循环将执行
这里y(2,3)和y(1,2)是大小为2的向量,其中值是与y中的位置对应的值。计算新向量[-3,2]
后
这将被分配到向量y中的第2和第3位置。导致向量[1,-3,2,0]
。
第3步:
重复步骤2,但这次使用大小为3的向量,并用y矩阵中的2,3,4位置替换结果,得出最终向量y为:[1,-6,11,-6]