问题标签 [numerical-methods]
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.
python - 有人可以解释为什么 scipy.integrate.quad 在积分 sin(X) 的同时在同样长的范围内给出不同的结果吗?
我正在尝试使用数值积分方法在我的程序中对任意(我编码时已知)函数进行数值积分。我正在使用 Python 2.5.2 和 SciPy 的数值集成包。为了感受它,我决定尝试整合 sin(x) 并观察这种行为 -
我觉得这种行为很奇怪,因为 -
1. 在普通积分中,整个周期的积分为零。
2. 在数值积分中,这 (1) 不一定是这种情况,因为您可能只是在近似曲线下的总面积。
无论如何,假设 1 为真或假设 2 为真,我发现行为不一致。两种积分(-pi 到 pi 和 0 到 2*pi)都应该返回 0.0(元组中的第一个值是结果,第二个是错误)或返回 2.257...
有人可以解释为什么会这样吗?这真的是矛盾吗?有人能告诉我我是否遗漏了一些关于数值方法的基本知识吗?
无论如何,在我的最终应用程序中,我打算使用上述方法来查找函数的弧长。如果有人在这方面有经验,请告诉我在 Python 中执行此操作的最佳策略。
编辑
注意
我已经在数组中存储了范围内所有点的第一个微分值。
当前误差是可以容忍的。
尾注
我已经阅读了有关此的维基百科。正如 Dimitry 所指出的,我将整合 sqrt(1+diff(f(x), x)^2) 以获得弧长。我想问的是 - 是否有更好的近似/最佳实践(?)/更快的方法来做到这一点。如果需要更多上下文,我会按照您的意愿单独发布/在此处发布上下文。
physics - 如何与量子谐振子波函数进行数值积分?
如何对无限范围内的一维积分进行数值积分(使用什么数值方法,以及使用什么技巧),其中被积函数中的一个或多个函数是一维量子谐振子波函数。除其他外,我想在谐振子基础上计算某些函数的矩阵元素:
phi n (x) = N n H n (x) exp(-x 2 /2)
其中 H n (x) 是Hermite 多项式V m,n = \int_{-infinity}^{infinity} phi m (x) V(x) phi n (x) dx
在存在宽度不同的量子谐波波函数的情况下也是如此。
问题是波函数 phi n (x) 具有振荡行为,这对于较大的n来说是个问题,并且来自 GSL(GNU 科学图书馆)的自适应 Gauss-Kronrod 正交等算法需要很长时间来计算,并且误差很大。
python - 如何使用 numpy.correlate 进行自相关?
我需要对一组数字进行自相关,据我所知,这只是该组与自身的相关。
我已经尝试使用 numpy 的相关函数,但我不相信结果,因为它几乎总是给出第一个数字不是最大的向量,因为它应该是。
所以,这个问题实际上是两个问题:
- 究竟在
numpy.correlate
做什么? - 我如何使用它(或其他东西)进行自相关?
algorithm - 多维优化算法/寻根/某事
我有五个值,A、B、C、D 和 E。
给定约束 A + B + C + D + E = 1,以及五个函数 F(A)、F(B)、F(C)、F(D)、F(E),我需要通过E 使得 F(A) = F(B) = F(C) = F(D) = F(E)。
为此使用的最佳算法/方法是什么?我不在乎是否必须自己写,我只想知道在哪里看。
编辑:这些是非线性函数。除此之外,它们无法表征。其中一些最终可能是从数据表中插入的。
r - 如何从稀疏采样数据制作地形图?
我需要制作一个地形的地形图,我只有相当稀疏的(x,y,高度)数据样本。显然我无法制作一张完全准确的地图,但我想要一张在某种意义上“平滑”的地图。我需要量化“平滑度”(可能是表面曲率平方的平均值的倒数),并且我想最小化作为两个量之和的目标函数:
- 表面粗糙度
- 采样点表面高度与该点实际测量高度之间的均方距离
因为我真正想要的是一张地形图,所以我真的在寻找一种方法来构建等高线的等高线,并且可能有一些巧妙的几何方法可以做到这一点,而不必谈论表面。当然,我希望轮廓线也很平滑。
欢迎任何和所有建议。我希望这是一个众所周知的数值问题。我对 C 语言非常熟悉,并且具备 FORTRAN 的工作知识。关于 Matlab 和 R 我相当一无所知。
关于我们的样本所在的位置:我们正在计划大致均匀的间距,但我们会在地形更有趣的地方采集更多样本。因此,例如,我们将比平原更密集地采样山区。但是我们在抽样方面肯定有一些选择,如果这样可以简化问题,甚至可以抽样。唯一的问题是
我们不知道需要映射多少地形才能找到我们正在寻找的特征。
取样费用适中,大约需要 10 分钟。因此,对 100x100 网格进行采样可能需要很长时间。
c++ - 在 C/C++ 中实现导数
如何以f(x)
编程方式计算典型的导数以确保最大精度?
我正在实现Newton-Raphson方法,它需要对函数进行导数。
c++ - std::pow 给出了小数指数的错误近似值
这就是我的意思
结果为 0 但我预计为 0.4465
等式是 (1 + x) ^3= 1.1402
,找到x
。
language-agnostic - 函数逼近
我有一个功能,
P(x0, x1, ..., xn)
它将 100 个整数作为输入并给出一个整数作为输出。P 是一个评估缓慢的函数(范围从 30 秒到几分钟不等)。
我需要知道哪些点值将使 P 的产生值最大化。
我可以使用哪些技术来完成此任务?我知道人们通常会为此使用遗传算法,但我担心用它们计算它需要很长时间,因为即使人口少且世代数少(比如说,人口 = 50,世代 = 50),P 也是如此慢,计算它需要 40 多个小时。
有没有更便宜的方法呢?也许是一个迭代过程?我不需要它真的是最优的,但我不知道它的行为方式(我尝试过线性/二次/指数,但它似乎没有产生任何好的值。我知道 P 可以返回价值至少比我得到的好5-10倍)。
它应该是更容易实现的东西(即,我必须自己实现它)。
谢谢
编辑:P 是一个随机过程。
python - 使用 NumPy 实现三对角矩阵算法 (TDMA)
我正在使用 NumPy 在 Python 中实现 TDMA。三对角矩阵存储在三个数组中:
我想有效地计算alpha
- 系数。算法如下:
for
但是,由于 Python 的循环,这效率不高。我想要的是这样的方法:
在后一种情况下,结果不正确,因为 NumPy 将最后一个表达式的右侧部分存储在临时数组中,然后将对其元素的引用分配给alpha[1:]
. 因此a[1:] * alpha[:-1]
只是一个零数组。
有没有办法告诉 NumPyalpha
在其内部循环中使用在先前步骤中计算的值?
谢谢。
numerical-methods - 将 ARPACK 与 PARDISO 一起使用
这是一个与此处的问题类似的问题。
我想知道是否已经有与PARDISO 求解器和英特尔 mkl库配合良好的ARPACK Eigensolver的开源实现或示例?