Math 收敛到两个不同的值

Math 收敛到两个不同的值,math,coffeescript,numerical-methods,numerical-analysis,Math,Coffeescript,Numerical Methods,Numerical Analysis,我有一段代码,它基本上是用数值近似法解一个由两个非线性方程组组成的系统 代码: 这两个方程式是: 8cos(θ₁) + 10cos(θ₂) = 12.66 8sin(θ₁) + 10sin(θ₂) = 11.928 在两个块(块1和块2)中,θ₁和θ₂最初都设置为0。然后在其中一个方程中替换一个θ,以找到另一个θ的值。然后在另一个等式中替换第二个θ,以找到第一个θ的值。这是递归完成的,收敛于θ₁和θ₂ 在第一块中,我从替换θ开始₂为0并查找θ的值₁。反之亦然,在第二个区块 现在我的问题是,当块

我有一段代码,它基本上是用数值近似法解一个由两个非线性方程组组成的系统

代码:

这两个方程式是:

8cos(θ₁) + 10cos(θ₂) = 12.66
8sin(θ₁) + 10sin(θ₂) = 11.928
在两个块(块1和块2)中,
θ₁
θ₂最初都设置为
0
。然后在其中一个方程中替换一个θ,以找到另一个θ的值。然后在另一个等式中替换第二个θ,以找到第一个θ的值。这是递归完成的,收敛于
θ₁
θ₂

在第一块中,我从替换
θ开始₂
0
并查找
θ的值₁。反之亦然,在第二个区块

现在我的问题是,当块之间的唯一区别是起始变量时,为什么我会得到两种不同的解决方案?

PS:我知道给定的方程组会有两种不同的解。我不明白的是,仅仅因为我使用了不同的起始变量,就得出了两种不同的解决方案的原因


PPS:我确实尝试过从不同的
θ初始值开始₁
θ₂而不是
0
。这没有改变任何事情。

如果以下两个表达式不相同,
而不是acos(x2-l2*Math.cos theta2)/l1, acos((x2-l2*Math.cos theta2)/l1)看起来不错


也适用于其他3个表达式。

您可以将方法作为一种定点方法进行分析。定点法就是这样一种方法

v_{n+1} = f(v_{n})
就你而言

v = (θ₁,θ₂)
你重新安排了你的方程,这样

f(v) = (acos(x₂ - l₂*cos(θ₂))/l₁, acos(y₂ - l₁*cos(θ₁))/l₂)
……或多或少。当您在第二次计算中使用已更新的变量时,这与您从另一个
v0
开始时相同,其中第二个计算变量“领先一步”另一步。在第一种情况下,您的起始位置是
(0,acos(y₂ - L₁)/L₂),并在第二个起始位置
(acos(x₂ - L₂)/L₁, 0)
。不管你在文章中怎么说,这是一个用不同的初始值收敛到不同根的情况


很难解释为什么会发生这种情况。根的吸引盆可能有一个奇怪的边界,如维基百科的页面所示。你可以尝试绘制吸引盆,在(θ)中选择许多初始起点₁,θ₂) 域和绘制不同颜色的像素取决于它们的收敛位置。

您是正确的,表达式不同:acos不是线性的。
v = (θ₁,θ₂)
f(v) = (acos(x₂ - l₂*cos(θ₂))/l₁, acos(y₂ - l₁*cos(θ₁))/l₂)