【发布时间】:2012-04-18 19:54:48
【问题描述】:
如何根据 A、B 和 C 确定方程 Ax+Bsin(x)=C 的初始猜测?
我正在尝试使用 Newton Raphson 解决它。 A、B 和 C 将在运行时给出。
有没有其他方法比牛顿拉夫森更有效?
【问题讨论】:
-
我认为这应该在math.stackexchange.com/?as=1。
标签: algorithm math newtons-method
如何根据 A、B 和 C 确定方程 Ax+Bsin(x)=C 的初始猜测?
我正在尝试使用 Newton Raphson 解决它。 A、B 和 C 将在运行时给出。
有没有其他方法比牛顿拉夫森更有效?
【问题讨论】:
标签: algorithm math newtons-method
最佳初始猜测是根本身,因此找到“最佳”猜测并不真正有效。
任何猜测最终都会给你一个有效的解决方案,只要f'(x0) != 0 用于任何步骤,它只出现在cos(x) 的零点处,对于任何整数k 都是k*pi + pi/2。
我会尝试x0 = C * pi,看看它是否有效。
但是,您最大的问题是函数的周期性。牛顿的方法对于你的函数来说会很慢(如果它甚至可以工作的话),因为sin(x) 会一遍又一遍地来回移动x0。
注意事项:
在牛顿的方法中,你注意到f'(xn) 在分母中的位置吗? f'(x) 无限次接近0。如果你的f'(x) = 0.0001(或任何接近零的地方,这有可能发生),你的xn+1 会被扔到离xn 很远的地方。
更糟糕的是,由于f'(x) 是一个周期函数,这可能会一遍又一遍地发生,这意味着牛顿方法甚至可能永远不会收敛到任意的x0。
【讨论】:
f'(x) 无限次接近零的说法本身也不正确——这完全取决于A 的值(如果B = 0,则没有明显的周期性分量) .整个问题是不适定的,因为可能有无限多的解决方案,并且每个解决方案的有用性都没有由 OP 指示。只是说。
最简单的“好”近似是假设 sin(x) 近似为零,因此设置:
x0 = C/A
【讨论】:
好吧,如果 A、B 和 C 是实数且不为 0,则 (B+C)/A 是最高根的上引号,(C-B)/A 是最低根的下引号,如 -1 <= sin(x) <= 1。你可以从这些开始。
【讨论】:
牛顿法适用于任何猜测。问题很简单, 如果有一个方程,我猜 x0=100 最好的解决方案是 x0=2 我知道答案是 2.34* 通过使用世界上的任何猜测,您最终会得到 2.34* 该方法说选择一个猜测,因为如果没有一个有效的猜测,它将需要许多不舒服的解决方案,没有人愿意重复该方法 20 次 并且猜测解决方案并不难 你只是找到一个关键点- 例如,3 太大,2 太小 所以答案在 2 到 3 之间 但是如果你猜 2 你猜 50 你仍然会得到正确的解决方案。 就像我说的,它只会花你更长的时间 我自己测试了这个方法 我猜 1000 到一个随机方程 我知道最好的猜测是 4 答案在 4 到 5 之间 我选择了 1000 花了我很多时间 但几个小时后,我从 1000 降至 4.something 如果您以某种方式找不到关键点,您实际上可以输入一个等于 x0 的随机数,然后最终您将得到正确的解决方案 不管你猜的是什么数字。
【讨论】: