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₂)