问题标签 [numerics]

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 投票
4 回答
1208 浏览

optimization - 在 Haskell 中做有效的数值

我受到这篇名为“只有快速语言才有趣”的帖子的启发,以查看他在 Haskell 中提出的问题(从向量中求和数百万个数字)并与他的结果进行比较。

我是 Haskell 新手,所以我真的不知道如何正确计时或如何有效地做到这一点,我对这个问题的第一次尝试如下。请注意,我没有在向量中使用随机数,因为我不确定如何以一种好的方式去做。我也在打印东西以确保全面评估。

在 GHCI 中加载并运行time告诉我,运行 300 万个号码大约需要 0.22 秒,运行 3000 万个号码需要 2.69 秒。

与博客作者在 Lush 中 0.02 秒和 0.18 秒的结果相比,这要差得多,这让我相信这可以以更好的方式完成。

注意:以上代码需要 TimeIt 包才能运行。cabal install timeit会给你的。

0 投票
4 回答
1146 浏览

c++ - 在具有固定常数离散化的给定网格上使用 c++ 进行数值积分

我有以下问题:

我的 C++ 代码可以计算两个函数

f1(i1,i2,i3,i4)

f2(j1,j2)

对于每组 {i1,i2,i3,i4},我得到一些 f1 的值,对于每组 {j1,j2},我得到一些 f2 的值。

集合 {i1,i2,i3,i4} 和 {j1,j2} 在 FIXED 网格上给出,具有一些恒定离散化步长“h”。

我需要用数学语言计算积分 F3(x1,x3)=Integral[f1(x1,x2,x3,x4)*f2(x3,x4) dx3 dx4]

简单的求和不够好,因为 f2 有很多跳跃。

是否有一些可以进行这种集成的 c++ 库?或者一些易于实现的算法(我不太擅长c++)

非常感谢

0 投票
5 回答
33893 浏览

algorithm - 一个非常大的数据集的平均值和标准差

我想知道是否有一种算法可以计算未绑定数据集的平均值和标准差。

例如,我正在监控一个测量值,比如电流。我想获得所有历史数据的平均值。每当有新值出现时,更新均值和标准差?因为数据太大而无法存储,我希望它可以在不存储数据的情况下即时更新均值和标准差。

即使存储数据,标准方式(d1 + ... + dn)/n也不起作用,总和会破坏数据表示。

我通过大约 sum(d1/n + d2/n + ... d3/n),如果 n 是休,则误差太大并累积。此外,在这种情况下,n 是未绑定的。

数据的数量肯定是无限制的,无论什么时候来,都需要更新值。

有人知道是否有算法吗?

0 投票
3 回答
442 浏览

asp.net-mvc - 是否可以在 Azure 上部署 WebRole 并使用用于计算的 Cloud Numerics?

是否可以将 Azure 上的 Code Numerics 仅用于标准偏差等一些计算,而不使用其分布式能力并绕过 HPC?我正在使用一些强大的数学和图表测试 MVC Web 角色,我添加了对 Cloud Numerics 程序集的引用,整个事情都在模拟器中工作(只是一些计算,没有分布式的东西)但是当我 delpoy 到 Azure 时,它​​报告了与云的依赖关系问题数字dll?我真的很感激一些建议。(我知道为此使用一些标准数学库会更好,但我真的需要知道这种方式是否可行)。我最初认为这可能是架构问题:整个项目是 AnyCpu(它只能是 AnyCpu 或 x64,因为 Azure 只允许这两个 confs)并且一些 CLoud Numerics 库是为 x64 编译的。

以下是异常详细信息:

提到的 dll Microsoft.Numerics.DistributedDenseArrays 自然地作为副本包含在依赖遍历工具中所述的其他依赖项中。

0 投票
3 回答
406 浏览

computer-science - 什么是 3D 蒙特卡罗集成的巧妙边界框?

对于一个项目,我需要计算 3D 中两个重叠椭球的重叠体积。该方法本身不是问题:我基本上是在边界框中选择随机点并检查它们是否同时在两个椭球体中。

在我对运行时优化程序的永无止境的追求中,更小的边界框显然是有利的。现在,“盒子”是一个以椭球质心之间的中点为中心的球体,其直径对应于最长的椭球轴。这完全是任意的,我相当肯定重叠体积将始终包含在这个球体中,但我真的很想找到一些方法来优化整个过程。

有没有一些通用的方法来优化包围体?

0 投票
1 回答
30 浏览

numerics - 从数字中推导出一个唯一的数字

我在每个节点有 N 个孩子的树上工作。

在我的例子中,每个节点都有一个唯一的标识符。我想从子标识符中推断出父节点的标识符。

因此,我们可以添加一个子标识符的信息来推断,例如:如果父亲的节点是“123”,那么子节点是“123.3”,那么我们就可以推断出(123.3)的父亲是“123”。但是有一个问题,我们有一棵大树,那么一个节点标识符可以是“12.3.4.1.2.4.5...”,这不是一个好的解决方案。

使用简单数字生成子标识符然后推断父标识符(考虑到它在整个树中是唯一的)的最佳方法是什么?

0 投票
1 回答
97 浏览

java - Java 矩阵和数字

所以我刚开始用 Java 做数值方法;

现在,这是我不明白的地方:i = j 的对角线,矩阵条目为 1 -(该行中所有 aij 条目的总和(对于 i!=j))。如何在上述方法中对此进行编码?

我当前的输出(没有任何四舍五入看起来像这样):

0.0 0.026055555555555554 0.0248125 0.050694444444444445 0.058722222222222222 0.030208333333333334

-0.0053750000000000004 0.0 0.00792361111111111 0.01813194444444444 0.0236111111111111 0.009874999999999998

-0.0013854166666666667 -0.005291666666666666 0.0 0.008680555555555556 0.009041666666666667 0.0

0.0 0.009041666666666667 0.008680555555555556 0.0 -0.005291666666666666 -0.0013854166666666667

0.009874999999999998 0.0236111111111111 0.01813194444444444 0.00792361111111111 0.0 -0.0053750000000000004

0.030208333333333334 0.05872222222222222 0.050694444444444445 0.0248125 0.026055555555555554 0.0

(它有 0,其中 i = j)

它应该看起来像这样:

0.810 0.026 0.025 0.051 0.059 0.030

-‐0.005 0.946 0.008 0.018 0.024 0.010

-‐0.001 -‐0.005 0.989 0.009 0.009 0.000

0.000 0.009 0.009 0.989 -‐0.005 -‐0.001

0.010 0.024 0.018 0.008 0.946 -‐0.005

0.030 0.059 0.051 0.025 0.026 0.810

谢谢!

0 投票
3 回答
1245 浏览

c# - 如何加快 C# 数字代码

我有一个调用 Fortran DLL 进行数值计算的 C# 应用程序。已确定 DLL 调用至少比从 Fortran 控制台应用程序调用相同计算慢 10 倍,因此我已开始将代码移植到 C#。移植过程是逐行复制代码并修复语法。所以 C# 和 Fortran 看起来非常相似。Fortran 中的公共块成为类中的字段。在移植了一些核心例程后,我开始测试,发现双精度 C# 代码比双精度 Fortran 慢 30 倍(比单精度 Fortran 慢 50 倍)。我循环测试代码 100 倍,以最大限度地减少 C# JIT 编译器开销的影响。

该代码使用了复杂的算术和复杂的函数,例如 SQRT 和 LOG10。我提供了一个 C# 结构来处理该数学。我怀疑这就是问题所在,但是 VS2010 Pro 中似乎没有分析器,所以我不确定。

Fortran 编译器是 Intel 的最新版本。我没有对 C# 或 Fortran 代码进行任何特殊优化。我比较了使用发布版本的时间。我只有一个两核 CPU,所以并行化可能不会有太大帮助。

我可以使用一些关于如何加速此代码的建议。

这是我的一种方法。C# 看起来就像我没有编写的 Fortran。

以下是复杂结构中的一些方法。

这是复杂结构的一部分。

0 投票
6 回答
201 浏览

java - 将函数作为静态类传递给 Java 中的快速数字

我想在java中进行一些数值计算,并使操作真正模块化,我想将函数作为其他函数的参数传递。我正在搜索,通常它是在 java 中使用扭曲函数的类来完成的。我真的不需要实例化这些类(里面没有数据),我想让它尽可能快(在某处写了最终静态方法由 JIT 编译器内联)。所以我做了这样的东西

然而,当我尝试将它传递给arrayOp时,它会打印错误:“找不到像FAdd这样的东西”,即使println(FAdd.eval(10,20))工作正常。因此,由于某种原因,似乎不可能将静态类作为参数传递。

你有什么建议来解决这样的任务?我实际上希望 FAdd 类似于宏,并且 arrayOp 是 polymorf (行为取决于我传入的宏)。但理想的情况是在编译时(而不是在运行时)解决它以提高数值速度。编译的结果应该和我写的一样

0 投票
4 回答
324 浏览

r - 哪些数值优化器可以只使用梯度而没有明确的目标值?

我有一个优化问题,涉及最小化我知道梯度的函数,但目标函数在任何点的实际值都是未知的。

我想使用 BFGS 优化函数,但我发现的所有 BFGS 实现似乎都需要了解目标的值,尤其是在行搜索步骤中。我查看了 BFGS 的 python (scipy) 和 C++ 实现。

显然我可以使用梯度下降,但我不想在这里重新发明轮子。

有任何想法吗?

更多细节:我想最小化h。但我没有得到h。我得到的是h = f(g),以及g(x)的明确公式。f基本上以一种不太难计算但不可能积分的复杂几何方式来转换g的梯度。因此,计算h(x)的梯度非常简单,但很难获得h(x)的明确值。