Octave 中的基本 for 循环扩展
Basic for loop in Octave expanded
出于某种原因,我无法在 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)
嗯,我一定是错的,因为一步一步做循环时结果不好,但对于我的生活我无法弄清楚它在哪里。有人可以帮我吗?
首先,请原谅我的造型,我以前从未在 Stack Overflow 中使用过 matrices/vector 表示。无论如何,我希望这能让您了解它的内部工作原理:
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中的第2个位置会变成-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]
出于某种原因,我无法在 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)
嗯,我一定是错的,因为一步一步做循环时结果不好,但对于我的生活我无法弄清楚它在哪里。有人可以帮我吗?
首先,请原谅我的造型,我以前从未在 Stack Overflow 中使用过 matrices/vector 表示。无论如何,我希望这能让您了解它的内部工作原理:
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中的第2个位置会变成-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]