问题标签 [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.
minimization - 如何使用牛顿法找到非线性、多元函数的最小值(代码不是线性代数)
我正在尝试进行一些参数估计,并希望选择参数估计,以最小化大约 30 个变量的预测方程中的平方误差。如果方程是线性的,我只需计算 30 个偏导数,将它们全部设置为零,然后使用线性方程求解器。但不幸的是,这个方程是非线性的,它的导数也是如此。
如果方程超过一个变量,我会使用牛顿法(也称为 Newton-Raphson)。网络上有丰富的示例和代码来实现单变量函数的牛顿方法。
鉴于我有大约 30 个变量,我如何使用牛顿法对这个问题的数值解决方案进行编程?我有封闭形式的方程,可以计算一阶和二阶导数,但我不知道如何从那里开始。我在网上找到了大量的处理方法,但它们很快就进入了重矩阵符号。我在 Wikipedia 上发现了一些很有帮助的东西,但我在将其翻译成代码时遇到了麻烦。
我担心分解的地方是矩阵代数和矩阵求逆。我可以用线性方程求解器反转矩阵,但我担心得到正确的行和列,避免转置错误等等。
具体来说:
我想使用将变量映射到它们的值的表。我可以编写这样一个表的函数,它返回给定这样一个表作为参数的平方误差。我还可以创建返回关于任何给定变量的偏导数的函数。
我对表中的值有一个合理的起始估计,所以我不担心收敛。
我不确定如何编写使用估计值(每个变量的值表)、函数和偏导函数表来生成新估计值的循环。
最后一个是我想要帮助的。任何直接帮助或指向良好资源的指针都将受到热烈赞赏。
编辑:由于我有封闭形式的一阶和二阶导数,我想利用它们并避免更慢收敛的方法,如单纯形搜索。
r - 牛顿法求系数和 Hessian 的问题
我正在尝试编写一个函数,该函数使用牛顿法(coefficients+(inverse hessian)*gradient)
迭代地找到对数线性模型的系数。
我正在使用以下代码:
当我运行代码时,我收到以下错误:
鉴于公式是从比尔格林的问题集中得出的,我不认为这是一个公式问题。我认为我在传递我的功能时做错了。
我怎样才能解决这个问题?
对此功能的任何帮助将不胜感激。
c - 这个 C 习语是什么意思?
我最近在博客上看到了这段代码——它来自 Quake3 引擎。它旨在使用 Newton-Rhapson 方法快速计算平方根倒数。
这样做的原因是什么int i = *(int*)&x;
?相反,这样做int i = (int) x;
会产生完全不同的结果。
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),然后计算出如何找到根使用牛顿-拉夫森方法。我是否以正确的方式解决这个问题?
java - 具有指定精度位数的牛顿法
我正在尝试用Java编写一个计算数字的第n个根的函数。我正在为此使用牛顿法。但是,用户应该能够指定他们想要的精度位数。这是我遇到麻烦的部分,因为我的答案通常并不完全正确。相关代码在这里: http: //pastebin.com/d3rdpLW8。我该如何修复此代码,以便它始终给出至少 p 位精度的答案?(不做不必要的工作)
matlab - 实现 Newton-Raphson 迭代方法
我正在尝试使用 Newton Raphson 迭代来实现反向欧拉方案。我知道每次迭代都会进行初始猜测,计算残差并解决变化。就我而言,变化是del w。之后,我知道将值添加到 w^m 并在下一次 m 迭代中获取 w 的更新值。我知道随着迭代的进行检查解决方案的收敛性。我遇到的问题是如何将时间步长 dt 实现为 t=0:Tmax/dt,其中 Tmax 是 10。我对时间步长如何进入感到困惑。我一直在尝试解决这个问题同时,我们将不胜感激任何帮助。谢谢!
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。我真的坚持这一点,任何人都可以帮助我如何产生这样的输出?
matlab - Matlab中的Newton Raphsons方法?
Newtons-Raphsons 方法在 Mathematica 中很容易实现,但在 Matlab 中似乎有点困难。我不知道是否可以将函数传递给函数以及如何将导数用作函数。
似乎您既不能派生函数句柄也不能派生文件中定义的函数,但我可能错了。