问题标签 [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.
c++ - 数值配方:如何在 C++ 中将函数作为函数 newt 的参数传递
我的问题与数字食谱有关。我有一个全局函数,它计算要最小化的函数向量
在类函数run中,我尝试调用 Numerical Recipes 函数 newt,它读取我的函数vecfunc,如图所示,
函数newt被声明为
为什么会出现以下编译器错误?
math - 多输入多输出函数的高斯牛顿最小化
给定矩阵形式的输入输出函数:
带p1−p6
参数。我想使用高斯牛顿法最小化最小二乘误差。假设我们有 100 个测量值。我的问题是关于残差向量的计算和大小。
r i = 输出 - f(输入,参数)
错误 = 总和 (r i 2 )
为了计算误差最小的参数,我们有:
p i+1 =p i + Δ
Δ= (J T *J) -1 * J T * r i
我认为每个的大小如下:
输入向量(x):100x2
输出向量(y):100x2
剩余(r):100x2
雅可比 (J) : 100x6
参数(pi):6x1(六个参数)
如您所见,Δ 的大小将是 6x2,这似乎与p_i+1
现在我的残差向量计算过程是否正确?如果是,我该如何计算参数的向量?如果不是,正确的答案是什么?
另一件事是关于参数矩阵的计算方式J
(雅可比)。
太感谢了。
java - 实现牛顿法求平方根的算法的复杂性
我编写了一个 Java 程序来使用牛顿法计算用户定义数字的平方根。算法的主要操作是这样的:
我现在正在寻找算法的复杂性(是的,这是家庭作业),并且从这里读到牛顿方法的时间复杂度是 O(log(n) * F(x))。
但是,从上面的代码片段中,我将时间复杂度解释为:
不知道我在这里做错了什么,但即使在阅读了维基的解释之后,我似乎也无法理解大操作系统的差异。
另外,我假设“算法的复杂性”是“时间复杂性”的同义词。这样做是否正确?
非常感谢帮助解释这个悖论,因为我是一个新手学生,有一些“触摸即走”编程模块的背景知识。
提前致谢 :)
matlab - 二等分法(数值分析)
在找到每个根之前进行了多少次递归?另外,哪些是根?
这是我的代码:
c++ - Newton Raphson 混合算法无法解决
问题的简要说明:我使用 Newton Raphson 算法在多项式中求根,但在某些情况下不起作用。为什么?
我从“c++ 中的数值配方”中提取了一个 Newton Raphson 混合算法,如果 New-Raph 没有正确收敛(导数值低或收敛速度不快),该算法会一分为二。
我用几个多项式检查了算法,它奏效了。现在我正在我拥有的软件内部进行测试,但我总是遇到特定多项式的错误。我的问题是,我不知道为什么这个多项式没有得到结果,而其他许多人却得到了结果。因为我想改进任何多项式的算法,所以需要知道哪一个是不收敛的原因,以便我可以正确对待它。
接下来,我将发布我可以提供的有关算法和出现错误的多项式的所有信息。
多项式:
它是一阶导数:
阴谋:
根(通过 Matlab):
算法:
使用以下变量调用该算法:
问题是该算法超过了最大迭代次数,并且 aproximatedly 的根存在错误0.15
。
所以我的直接和简化的问题是:为什么当许多(至少 1000 个)其他非常相似的多项式(精度为 1e-10 且迭代次数很少!)时,这个多项式没有达到准确的误差!
我知道这个问题很难,它可能没有一个真正直接的答案,但我被这个问题困扰了好几天,我不知道如何解决它。非常感谢您花时间阅读我的问题。
c++ - 牛顿方法返回 NaN
我写了牛顿方法的简单递归版本:
如果我调用我的函数,例如FindRoot(sin, 4)
,NaN
返回。我通过在每一步之后打印的值来检查函数x0
,一切似乎都在最后一次迭代中工作。出于某种原因,函数调用自身的次数超出了实际应该调用的次数,可能会0/0
在计算 last 时创建类似的东西corr
。
matlab - 如何将估计序列添加到我的用于 matlab 的 Newton Raphson 代码?
我的代码有效,但我需要再添加 2 件事:
- 输出 - 包含估计序列的向量,包括初始猜测 x0,
输入-最大迭代
/li>
java - Java中的数值求解
我正在寻找在Java中为线性代数解决方案合并某种数值求解的实现,如下所示:
5x + 4 = 2x + 3
理想情况下,我希望尽可能少地解析,并避免使用传统的“人类”解决方案方法(即组合类似的术语等)。我一直在研究牛顿法并插入 x 的值来近似解决方案。
我很难让它工作。
有谁知道最好的通用方法,以及应该如何在代码中完成(最好是 Java)?
额外的
在 Netwon 方法中,您进行迭代直到近似值达到可接受的精度。公式如下所示:
x1 = x0 - (f(x0) / (f'(x0))
其中 x1 是迭代中 x 的下一个值,而 x0 是当前值(或者如果在第一次迭代时开始猜测)。
f素数是什么?假设 f(x0) 是您当前 x 估计的函数,那么 f'(x0) 代表什么表达式?
澄清
这仍然是一个如何编程这个数学评估的问题,而不仅仅是如何做数学。
python - 在 pandas/python 中加速 newton-raphson
我目前正在迭代一个非常大的数据集~85GB(~600M 行),并简单地使用 newton-raphson 来计算一个新参数。截至目前,我的代码非常慢,关于如何加快速度的任何提示?BSCallClass 和 BSPutClass 中的方法是封闭形式的,因此没有什么可以真正加快速度。谢谢。
编辑:
对于那些好奇的人,我最终通过使用 scipy 建议以及使用多处理模块显着加快了整个过程。
c++ - 带有 SSE2 的 Newton Raphson - 有人可以解释一下这 3 行吗
我正在阅读这份文件: http: //software.intel.com/en-us/articles/interactive-ray-tracing
我偶然发现了这三行代码:
SIMD 版本已经快了很多,但我们可以做得更好。英特尔在 SSE2 指令集中添加了快速 1/sqrt(x) 函数。唯一的缺点是它的精度是有限的。我们需要精度,因此我们使用 Newton-Rhapson 对其进行改进:
此代码假定存在一个名为“half”(四倍 0.5f)的 __m128 变量和一个变量“three”(四倍 3.0f)。
我知道如何使用 Newton Raphson 来计算函数的零,并且我知道如何使用它来计算数字的平方根,但我只是看不出这段代码是如何执行它的。
有人可以向我解释一下吗?