Excel:如果在某些空间布局中input循环计算将不会收敛
我用Excel循环计算发现了一个奇怪的行为。 启用后(通过选项),循环引用可用于迭代。 在我的例子中,我使用了牛顿的方法 。 我看到的问题是当我在一定的空间布局中input单元格公式时,迭代不会收敛。 如果我使用不同的布局, 它会收敛 。 这是一个错误,还是我错过了什么? 以下是如何重现它(Excel 2010,2011testing):
f(x)= x * ln(x)
- 新的Excel工作簿。
-
创build一个“水平”布局:
2.1制作标签。 在单元格A1-F1中,写入x_start,x_old,x_new,f(x),f'(x),f-goal
2.2设置单元格公式(按此顺序):
- A2 = 4
- B2 = IFERROR(C2,A2)
- C2 = B2-D2 / E2
- D2 = B2 * LN(B2)-F2
- E2 = LN(B2)+1
- F2 = 10
-
创build一个“垂直”布局:
3.1制作标签。 在单元格A4-A9中,写入x_start,x_old,x_new,f(x),f'(x),f-goal
3.2设置单元格公式(按此顺序):
- B4 = 4
- B5 = IFERROR(B6,B4)
- B6 = B5-B7 / B8
- B7 = B5 * LN(B5)-B9
- B8 = LN(B5)+1
- B9 = 10
-
创build一个“双列”布局:
4.1制作标签。 在单元格E4-E6中,写入x_start,x_old,x_new。 在单元格H4-H6中写入f-目标f(x),f'(x)。
4.2设置单元格公式(按此顺序):
- F4 = 4
- F5 = IFERROR(F6,F4)
- F6 = F5-G5 / G6
- G5 = F5 * LN(F5)-G4
- G6 = LN(F5)+1
- G4 = 10
解决scheme应收敛在x_old和x_new在约5.728926,其中f(x)几乎为零。 现在按F9或Shift-F9重新计算单元格值。 它只收敛于“双列”布局,意味着价值观不会改变(几乎没有)。 水平和垂直布局随机更改数字,不要接近答案。
你可以检查上面的公式对于预期的variables是完全一样的(通过为每个布局分配x_old单元格来确定一个固定的值,数字将完美匹配)。我是疯了还是这是一个错误?
Excel对循环引用使用不同的计算过程。
循环中的单元格从左到右和从上到下计算,直到达到最大迭代或更改限制。
所以这可能是为什么融合依赖于空间安排(但我没有详细看你的例子)。