对于以下伪代码;我认为翻牌数是 2n^3。但是,我不确定这是否正确,因为 for 循环让我对此表示怀疑。(注:aij 和 xij 分别表示矩阵 A 和 X 的条目)
for =1:
for =1:
for = :
= + *
end
end
end
这不是一个真正的 matlab 问题。这是一种蛮力解决方式。
内部方程有两个翻牌,因此k
循环有2(n-j+1)
个翻牌。
要完成其余的工作,了解从1
到p
的q
总和是p(p+1)/2
的,从1
到p
q^2
是p(p+1)(2p+1)/6
。
j
循环对于从1
到i
的j
是2(n-j+1)
,所以它有2i(n+1)-i(i+1)=2i(n+1/2)-i^2
次翻牌。
总体或i
循环是2i(n+1/2)-i^2
的总和,给出n(n+1)(n+1/2) - n(n+1)(2n+1)/6 = n(n+1)(2n+1)/3
。
您可以看到,这与2i^2
的1
到n
之和相同。
检查这一点的一种方法是,例如在 matlab 中,设置一些n
,并将f=0
放在开头并用f=f+2;
替换内部方程,然后结果将是f=n(n+1)(2n+1)/3
。