问题标签 [numerical-computing]

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 投票
3 回答
4600 浏览

python - Python 打印计算比执行计算花费更多时间

我用python写了一个脚本,这让我很惊讶。基本上,它需要五个 20 位数字,将它们相乘,然后将它们提高到 3000 的幂。timeit 模块用于查找计算计算所需的时间。好吧,当我运行这个脚本时,它说计算它需要 3*10^-7 秒。然后它会生成一个文件 output.txt,但脚本直到大约 15 秒后才结束。

这是否意味着打印一个 280kb 的文件实际上比执行计算需要更长的时间?(我觉得不太可能。)

如果不是这样,那么当调用变量 x 时,python 是否执行计算?它会在每次计算变量时执行计算,还是将实际值存储在变量中?

我刚刚编写了另一个脚本,它确认 python 将结果写入 .txt 文件需要 0.03 秒。那么,为什么 python 稍后再执行计算呢?

0 投票
0 回答
109 浏览

javascript - Javascript 计算错误(简单计算中的数值错误)

解决了:

读:

  1. 浮点数学被破坏了吗?
  2. 如何处理 JavaScript 中的浮点数精度?

只需获取任何 JavaScript 处理环境并键入:

简单的计算,但似乎没有给出正确的结果(写“150.30 + 150.03”左右也没关系)。

它给出了结果:300.33000000000004。

任何想法为什么?

PS:我在 Stack Overflow 和 Wikipedia 上阅读了一些关于由于有限精度导致的错误计算计算的文章,但似乎与我的情况无关。

0 投票
1 回答
4397 浏览

python - 如何在 python 中找到二维数组的临界点?

我有一个 (960,960) 数组,我试图找到临界点,以便找到局部极值。

我曾尝试使用 np.diff 和 np.gradient,但遇到了一些麻烦,我不确定要使用哪个函数。

np.diff 提供计算二阶差异的选项,但梯度不提供。

我应该如何获得关键点?

我试过了

我在这里遇到了问题,因为 dxx 上的一些值等于零。

然后是选项

但这会给我想要的东西吗?

0 投票
1 回答
188 浏览

wolfram-mathematica - 一端压力脉冲,波动方程

我正在尝试使用 Mathematica 以数字方式解决标题问题,但无济于事。想象一根长度为 L 的杆。杆中的声速为 c。在一端施加宽度与 L/c 相当的高斯形状的压力脉冲。我想求解杆内的粒子位移函数 u(t,x)。Mathematica 代码如下,

问题是程序持续运行几分钟而没有给出任何输出。鉴于问题的简单性(即存在解析解),我认为应该有一种更快的方法来获得数值解。有人可以给我一些建议吗?

0 投票
2 回答
212 浏览

c++ - Fortran COMPLEX 计算不同于 C++

我已经完成了从 Fortran 到 C++ 的移植,但发现了 COMPLEX 类型的一些差异。考虑以下代码:

和 C++:

用 clang++ 或 g++ 编译 C++ 版本,我得到输出:-0.256561150444368 但是编译 Fortran 版本给了我:-0.25656115049876993

我的意思是,这两种语言不是都遵循 IEEE 754 吗?如果我在 Octave (Matlab) 中运行以下命令:

我得到的和 C++ 版本一样。Fortran COMPLEX 类型是怎么回事?我错过了一些编译器标志吗?-ffast-math 不会改变任何东西。我想在 C++ 和 Fortran 中生成完全相同的 15 位小数,因此我更容易发现移植差异。

周围有 Fortran 大师吗?谢谢!

0 投票
1 回答
1837 浏览

matlab - Matlab 不输出方程的数值解(而是输出 ``Rootof some polynomials'' )

我试图在Matlab2014b环境下数值求解以下方程。但是matlab不输出数值解,而是输出以下

另一方面,我没有用 Wolframmath 求解方程的问题。我想知道是什么导致了这个问题,值得注意的是方程确实有复杂的解,但我只对 0 和 1 之间的解感兴趣。

0 投票
2 回答
7229 浏览

c++ - 在 C++ 中检查 double 是否等于负无穷大的最佳方法

我发现了这个:http ://en.cppreference.com/w/cpp/numeric/math/isinf但它似乎可以检查正无穷大或负无穷大。我只想检查一个值是否正好等于负无穷大,或者换句话说是 log(0)

感谢您的回答!根据下面的响应,这里有一些代码可以显示什么是有效的。

0 投票
5 回答
7890 浏览

performance - 为什么 Elixir 在 Ruby 和 Go 中解决 Project Euler #5 最慢?

更新:Elixir 并不慢,我的算法是。我的算法甚至不是苹果对苹果的比较。有关 Ruby 和 Go 等效算法的信息,请参阅下面的 Roman 的答案。还要感谢 José,只需添加 MIX_ENV=prod 前缀就可以显着加快我的慢速算法。我已经更新了问题中的统计数据。

原始问题: 我正在研究多种语言的 Project Euler 问题,只是为了看看语言的效率和速度。在问题 #5中,我们被要求找到能被 1 到 20 的所有数字整除的最小正数。

我用多种语言实现了该解决方案。以下是统计数据:

  1. 去 1.4.2 : 0.58s
  2. Ruby 2.2 MRI : 6.7s
  3. Elixir 1.0.5(我的第一个算法):57s
  4. Elixir 1.0.5(我的第一个带有 MIX_ENV=prod 前缀的算法):7.4s
  5. Elixir 1.0.5(罗马围棋等效算法):0.7s
  6. Elixir 1.0.5(Roman 的 Ruby 等效算法):1.8s

为什么 Elixir 的性能这么慢?我尝试在所有语言中使用相同的优化。警告:我是 FP 和 Elixir 新手。

我能做些什么来提高 Elixir 的性能吗?如果您使用任何分析工具来找出更好的解决方案,您能否将它们包括在响应中?

在围棋中:

在红宝石中:

在长生不老药中:

0 投票
1 回答
830 浏览

mesh - 使用python查找管道的中心线

我目前正在用 Python 编写代码,用于通过管道流动。在这方面,我必须找到一条穿过由 nastran 网格定义的 3D 管道几何图形的中心线(具有三个或四个边的单元格,其坐标我可以访问)。我在 Python 中使用 pyNastran 模块来获取所有相关的数据和函数。我的问题是找到管道中心线的最有效方法是什么。该管道是一个 3d 管道,在所有方向上都有弯曲。(我有一个数组中网格上每个点的所有坐标)

0 投票
1 回答
34 浏览

matlab - 为代码添加边界,matlab

我正在尝试为代码添加界限,但很难弄清楚将它们放在哪里。等式如下: f(x) = e^(6x) + 1.441e^(2x) - 2.079e^(4x) - 0.333 = 0, -1>=x<=0