问题标签 [numerical-analysis]

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 投票
2 回答
269 浏览

algorithm - 哪个浮点比较更准确,为什么?

我正在尝试计算平方根的牛顿方法的不同实现。一个重要的决定是何时终止算法。

显然,使用y*yxy平方根的当前估计值之间的绝对差是不行的x,因为对于较大的值,x它可能无法以足够的精度表示其平方根。

所以我应该使用相对标准。我天真地会使用这样的东西:

这似乎工作得很好。但最近我开始阅读 Kernighan 和 Plauger 的The Elements of Programming Style,他们在第 1 章中给出了相同算法的 Fortran 程序,其终止标准(用 C 语言翻译)是:

两者在数学上是等价的,但是有理由选择一种形式而不是另一种形式吗?

0 投票
1 回答
343 浏览

haskell - numeric-prelude 中的多重积分和矩阵(复数元素)

我需要计算形式的积分

其中 P 是一个函数R -> C^(nxn),通常是一个矩阵,我想在 Haskell 中执行此操作。我已经为标量函数实现了这一点:

到目前为止,这很有效,尽管对于 n>5 来说速度很慢。

现在我需要将此计算扩展到矩阵,我用数字前奏尝试了这个,因为我可以将函数作为矩阵的元素。我能够积分 的矩阵Double -> Complex Double,但我在积分内乘以矩阵的实际目标失败了,首先是我的代码:

这里,multipleIntegrationMat只是一个测试功能,我没有使用折叠,所以 n 是多余的。错误信息是:

我知道没有函数乘法的实例。对于这种情况,最好的方法是什么?另一方面,在标量示例中,乘法有效,尽管复数数据类型取自Data.Complex. 当我尝试使用标量示例时,Number.Complex我得到了同样的错误。

我能做些什么来解决这个问题?

谢谢你。

0 投票
2 回答
5841 浏览

matlab - 使用 9 个数据点进行数值微分

当我尝试在 Matlab 中进行数值微分时遇到问题。但我的问题可能更多是关于数值分析而不是关于 Matlab。

我有一个包含 9 个数据点的数组,代表 9 个不同 x 的 f(x)。我需要以数字方式找到 f''(x) 。我对 x 和 f(x) 的值是

x = [2271.38, 2555.30, 2697.26, 2768.24, 2839.22, 2910.20, 2981.18, 3123.14, 3407.06]

f(x) = [577.4063, 311.3341, 193.0833, 141.3048, 95.1501, 58.8130 32.4931, 6.9511, 0.1481]

我可以插值得到平滑的曲线。我使用样条插值,但是当你要区分时,其他一些插值更可取吗?

我尝试了不同的方法:

只是简单的前向、后向和中心差商

基于小波的方法: http: //www.mathworks.com/matlabcentral/fileexchange/13948-numerical-differentiation-based-on-wavelet-transforms

和派生套件: http: //www.mathworks.com/matlabcentral/fileexchange/13490-adaptive-robust-numerical-differentiation

这些都不是令人满意的。二阶导数在步长方面非常不稳定,并且派生套件中的自适应方法非常糟糕。也许我只是以错误的方式使用它!

任何帮助表示赞赏!

提前致谢

0 投票
0 回答
459 浏览

algorithm - Kahan求和和相对误差;或“得到错误结果而不是正确结果”的真实战争故事

我对这样的“战争故事”很感兴趣:

  1. 我编写了一个涉及浮点数总和的程序,但我没有使用 Kahan 求和。

  2. 总和是bad_sum,程序给了我一个错误的结果。

  3. 我的一位同事比我更精通数值分析,他查看了代码并建议我使用 Kahan 求和,现在求和,good_sum程序给了我正确的结果。

我对现实生活中的生产代码感兴趣,而不是为了解释 Kahan 求和算法而“人为”创建的代码示例。

特别是(bad_sum-good_sum)/good_sum您的应用程序的相对误差是多少?

到目前为止,我还没有类似的故事要讲。也许我会做一些测试(在输入数据集上运行我的程序,记录程序结果和有和没有 Kahan 的总和,估计相对误差)。

0 投票
0 回答
156 浏览

linear-algebra - 当基础几乎完成时,有效计算线性基础的扩展完成(理想情况下使用 LAPACK 例程)

我有一个带有正交列的 $p \times n$ 矩阵 $B$(其中 $n < p$),并且希望找到一种数值有效的方法来扩展此矩阵以获得完整的 $p$ 维正交基。换句话说,我想通过 $pn$ 互补矩阵 $W$ 计算 $p$ 以便

$[黑白|宽]$

是正交的。

目前我正在计算秩 $pn$ 投影矩阵的 QR 分解

$P=I-BB^T= QR$

使用 LAPACK 例程dgeqp3dorgqr丢弃 $Q$ 的尾随 $p$ 列。我确信必须有一种更有效的方法,因为在我的应用程序中,$B$ 几乎是一个完整的基础,即 $pn$ 很小。

我想知道如何通过 $P$ 的列递归地构建一个互补的基础 $R$。仅当 $\det([R|C]^T[R|C)\neq0$ 时,在每一步将 $C$ 列添加到当前 $R$。在 $R$ 中有 $pn$ 独立向量后,我可以将 $W$ 形成为 $W=(R^TR)^{-1/2} R$。但是,我不确定这是否是一个数值稳定的解决方案,或者是否有另一种更有效的方法。

理想情况下,我想要一种可以使用标准 LAPACK 例程实现的方法。

0 投票
1 回答
211 浏览

c - 特定舍入模式的意外结果

首先,抱歉标题不好:/

我试图重现一篇论文关于计算三对角对称矩阵的特征值的结果。我分别通过四舍五入到正无穷和负无穷来确定一些值“上限和下限”。

我不是每次都更改舍入模式,而是使用“技巧”:fl⁻(y) = -fl⁺(-y),其中 fl⁻(y) 是使用负无穷大舍入模式时 y 的值,并且fl⁺(y) 是使用舍入模式到正无穷大时的 y 值。因此,我在 C 中有以下代码:

它工作正常,除了一个例子 a_inf 给了我正确的结果,但 a_sup 给出了错误的结果,尽管第一个和第二个变量似乎具有相同的值。

但是,如果我这样做:

我得到了正确的结果。因此,如果我使用技巧 fl⁻(y) = -fl⁺(-y),我会得到正确的结果,如果我更改舍入模式并使用原始表达式,我会得到错误的结果。知道为什么吗?

在这两种情况下,变量 first 和 second 的值如下:

a_inf 和 a_sup 的正确值分别是 -1.862645149230957e-09 和 +1.862645149230957e-09,但在第一种情况下 a_sup = 0,这是错误的

我猜它正在发生的是某种灾难性的取消,但我不知道在这种情况下如何解决它......

提前致谢!

0 投票
3 回答
1694 浏览

matlab - MATLAB calculate angle of rotation

I have 5 points on a circle:..........1
................................... ......... 2 ...... . 3

Now I have its rotated image: .............

.............................................................1. .......3

Note: the points aren't numbered.

I basically have 5 sets of coordinates, which when plotted look like the below image.

I need to calculate the amount by which i have to tilt the image so as to make it look like the above image

0 投票
1 回答
9382 浏览

gnuplot - 有没有办法在 gnuplot 中绘制平均值?

假设我有一个包含两列数据的文件file.dat。我通常会用

我想平均超过 10 个(例如)前面的点和 10 个后面的点,并将其绘制在同一个图上。我可以使用一些外部脚本轻松地做到这一点,我在其中创建另一列:

但是,我想知道在 gnuplot 中执行此操作的方法。我的下一步是进行高斯平均。

0 投票
3 回答
5039 浏览

java - BigDecimal 乘以零

我正在使用 BigDecimal 执行简单的乘法运算,并且在乘以零时发现了一些奇怪的行为(在此用例中乘以零是正确的)。

基本数学告诉我,任何乘以零都将等于零(请参阅:零乘积属性乘法属性

但是,以下代码将始终失败并出现相同的错误:

这是 BigDecimal 的不准确之处,还是我在某处遗漏了一些特定的数学分支?

注意:在 IntelliJ 11 中运行的 JDK 1.6.0_27

0 投票
2 回答
541 浏览

numerical-analysis - 编程和数值分析

我在秋季上一门数值分析课,主要是应用/编程倾向。我有一个马马虎虎的编程背景(上过几门课并在实习中从事过 Java 编程),但我想在开始这门课之前提高我的技能。所以我的问题是,哪些编程技能对数值分析有用

数据结构、OOP、算法很重要吗?你有什么资源可以推荐我在上课前翻阅吗?