问题标签 [newtons-method]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
10635 浏览

minimization - 如何使用牛顿法找到非线性、多元函数的最小值(代码不是线性代数)

我正在尝试进行一些参数估计,并希望选择参数估计,以最小化大约 30 个变量的预测方程中的平方误差。如果方程是线性的,我只需计算 30 个偏导数,将它们全部设置为零,然后使用线性方程求解器。但不幸的是,这个方程是非线性的,它的导数也是如此。

如果方程超过一个变量,我会使用牛顿法(也称为 Newton-Raphson)。网络上有丰富的示例和代码来实现单变量函数的牛顿方法。

鉴于我有大约 30 个变量,我如何使用牛顿法对这个问题的数值解决方案进行编程?我有封闭形式的方程,可以计算一阶和二阶导数,但我不知道如何从那里开始。我在网上找到了大量的处理方法,但它们很快就进入了重矩阵符号。我在 Wikipedia 上发现了一些很有帮助的东西,但我在将其翻译成代码时遇到了麻烦。

我担心分解的地方是矩阵代数和矩阵求逆。我可以用线性方程求解器反转矩阵,但我担心得到正确的行和列,避免转置错误等等。

具体来说:

  • 我想使用将变量映射到它们的值的表。我可以编写这样一个表的函数,它返回给定这样一个表作为参数的平方误差。我还可以创建返回关于任何给定变量的偏导数的函数。

  • 我对表中的值有一个合理的起始估计,所以我不担心收敛。

  • 我不确定如何编写使用估计值(每个变量的值表)、函数和偏导函数表来生成新估计值的循环。

最后一个是我想要帮助的。任何直接帮助或指向良好资源的指针都将受到热烈赞赏。


编辑:由于我有封闭形式的一阶和二阶导数,我想利用它们并避免更慢收敛的方法,如单纯形搜索。

0 投票
19 回答
175489 浏览

algorithm - 编写自己的平方根函数

你如何编写自己的函数来找到最准确的整数平方根?

谷歌搜索后,我找到了这个(从它的原始链接存档),但首先,我没有完全得到它,其次,它也是近似的。

假设平方根为最接近的整数(到实际根)或浮点数。

0 投票
1 回答
1118 浏览

r - 牛顿法求系数和 Hessian 的问题

我正在尝试编写一个函数,该函数使用牛顿法(coefficients+(inverse hessian)*gradient)迭代地找到对数线性模型的系数。

我正在使用以下代码:

当我运行代码时,我收到以下错误:

鉴于公式是从比尔格林的问题集中得出的,我不认为这是一个公式问题。我认为我在传递我的功能时做错了。

我怎样才能解决这个问题?
对此功能的任何帮助将不胜感激。

0 投票
3 回答
637 浏览

c - 这个 C 习语是什么意思?

可能重复:
John Carmack 不寻常的快速反平方根 (Quake III)

我最近在博客上看到了这段代码——它来自 Quake3 引擎。它旨在使用 Newton-Rhapson 方法快速计算平方根倒数。

这样做的原因是什么int i = *(int*)&x;?相反,这样做int i = (int) x;会产生完全不同的结果。

0 投票
3 回答
10120 浏览

math - RGB 和 RYB 颜色空间之间的转换

我目前正在尝试在 RGB(红色、绿色、蓝色)颜色空间和 RYB(红色、黄色、蓝色)颜色空间之间转换颜色,然后再转换回来。

根据以下论文中的详细信息,我可以使用三线性插值将 RYB 转换为 RGB - 其中参数权重 (s, t, u) 是 RYB 颜色,立方体的顶点是 RGB 空间中的 3d 点.

用于可视化的油漆启发颜色混合和合成 - Gossett 和 Chen - 第 2.1 节 - 实现细节

我的困难在于扭转转换过程。

第二篇论文引用了这种技术的使用,并指出反向转换是使用牛顿法实现的。但没有提供更多细节。这可能表明求解三线性插值方程时的求根。

论绘画风格对摄影图像的关注色彩对比——张晓燕 警员,M.;何英;

在我用方程式扩展这个问题之前,有没有人看到或用 Java/C/C++/C# 之类的语言解决了这个问题?

我目前的方法是采用三线性插值的正向方程(RYB 到 RGB),扩展和重新排列以提供 3 个用于 3 个未知数的联立方程(参数权重:s、t 和 u),然后计算出如何找到根使用牛顿-拉夫森方法。我是否以正确的方式解决这个问题?

0 投票
3 回答
2441 浏览

java - 具有指定精度位数的牛顿法

我正在尝试用Java编写一个计算数字的第n个根的函数。我正在为此使用牛顿法。但是,用户应该能够指定他们想要的精度位数。这是我遇到麻烦的部分,因为我的答案通常并不完全正确。相关代码在这里: http: //pastebin.com/d3rdpLW8。我该如何修复此代码,以便它始终给出至少 p 位精度的答案?(不做不必要的工作)

0 投票
1 回答
2594 浏览

matlab - 实现 Newton-Raphson 迭代方法

我正在尝试使用 Newton Raphson 迭代来实现反向欧拉方案。我知道每次迭代都会进行初始猜测,计算残差并解决变化。就我而言,变化是del w。之后,我知道将值添加到 w^m 并在下一次 m 迭代中获取 w 的更新值。我知道随着迭代的进行检查解决方案的收敛性。我遇到的问题是如何将时间步长 dt 实现为 t=0:Tmax/dt,其中 Tmax 是 10。我对时间步长如何进入感到困惑。我一直在尝试解决这个问题同时,我们将不胜感激任何帮助。谢谢!

0 投票
1 回答
3697 浏览

java - 如何使用 Java 中的牛顿多项式从给定的 x 和 f(x) 点生成插值函数?

这是我的代码:

对不起丑陋的代码。给定 x 点 = {1, 2, 3} 和 f(x) = {1, 8, 27},上面的代码将生成一个二维数组,如下所示:

这是一个划分的差异表。

然后,我想生成它的插值多项​​式函数。因此,对于上面的例子,使用牛顿多项式规则,输出函数应该是 1 + 7(x-1) + 6(x-1)(x-2) = 6x^2-11x+6。我真的坚持这一点,任何人都可以帮助我如何产生这样的输出?

0 投票
3 回答
22887 浏览

matlab - Matlab中的Newton Raphsons方法?

Newtons-Raphsons 方法在 Mathematica 中很容易实现,但在 Matlab 中似乎有点困难。我不知道是否可以将函数传递给函数以及如何将导数用作函数。

似乎您既不能派生函数句柄也不能派生文件中定义的函数,但我可能错了。

0 投票
1 回答
561 浏览

ruby - XIRR 实施的 bigdecimal/newton 错误

我想使用bigdecimal/newtonRuby 中的模块来实现XIRR。我已经编写了一个脚本来按照这个示例进行尝试。

当我运行代码(Mac OS X 10.6 上的 Ruby 1.9.2)时,我收到以下错误:

这是因为我的程序中的错误,还是 BigDecimal库中的错误?

任何调试帮助将不胜感激。

谢谢!