问题标签 [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.
python - Python 打印计算比执行计算花费更多时间
我用python写了一个脚本,这让我很惊讶。基本上,它需要五个 20 位数字,将它们相乘,然后将它们提高到 3000 的幂。timeit 模块用于查找计算计算所需的时间。好吧,当我运行这个脚本时,它说计算它需要 3*10^-7 秒。然后它会生成一个文件 output.txt,但脚本直到大约 15 秒后才结束。
这是否意味着打印一个 280kb 的文件实际上比执行计算需要更长的时间?(我觉得不太可能。)
如果不是这样,那么当调用变量 x 时,python 是否执行计算?它会在每次计算变量时执行计算,还是将实际值存储在变量中?
我刚刚编写了另一个脚本,它确认 python 将结果写入 .txt 文件需要 0.03 秒。那么,为什么 python 稍后再执行计算呢?
javascript - Javascript 计算错误(简单计算中的数值错误)
解决了:
读:
只需获取任何 JavaScript 处理环境并键入:
简单的计算,但似乎没有给出正确的结果(写“150.30 + 150.03”左右也没关系)。
它给出了结果:300.33000000000004。
任何想法为什么?
PS:我在 Stack Overflow 和 Wikipedia 上阅读了一些关于由于有限精度导致的错误计算计算的文章,但似乎与我的情况无关。
python - 如何在 python 中找到二维数组的临界点?
我有一个 (960,960) 数组,我试图找到临界点,以便找到局部极值。
我曾尝试使用 np.diff 和 np.gradient,但遇到了一些麻烦,我不确定要使用哪个函数。
np.diff 提供计算二阶差异的选项,但梯度不提供。
我应该如何获得关键点?
我试过了
我在这里遇到了问题,因为 dxx 上的一些值等于零。
然后是选项
但这会给我想要的东西吗?
wolfram-mathematica - 一端压力脉冲,波动方程
我正在尝试使用 Mathematica 以数字方式解决标题问题,但无济于事。想象一根长度为 L 的杆。杆中的声速为 c。在一端施加宽度与 L/c 相当的高斯形状的压力脉冲。我想求解杆内的粒子位移函数 u(t,x)。Mathematica 代码如下,
问题是程序持续运行几分钟而没有给出任何输出。鉴于问题的简单性(即存在解析解),我认为应该有一种更快的方法来获得数值解。有人可以给我一些建议吗?
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 大师吗?谢谢!
matlab - Matlab 不输出方程的数值解(而是输出 ``Rootof some polynomials'' )
我试图在Matlab2014b环境下数值求解以下方程。但是matlab不输出数值解,而是输出以下
另一方面,我没有用 Wolframmath 求解方程的问题。我想知道是什么导致了这个问题,值得注意的是方程确实有复杂的解,但我只对 0 和 1 之间的解感兴趣。
c++ - 在 C++ 中检查 double 是否等于负无穷大的最佳方法
我发现了这个:http ://en.cppreference.com/w/cpp/numeric/math/isinf但它似乎可以检查正无穷大或负无穷大。我只想检查一个值是否正好等于负无穷大,或者换句话说是 log(0)
感谢您的回答!根据下面的响应,这里有一些代码可以显示什么是有效的。
performance - 为什么 Elixir 在 Ruby 和 Go 中解决 Project Euler #5 最慢?
更新:Elixir 并不慢,我的算法是。我的算法甚至不是苹果对苹果的比较。有关 Ruby 和 Go 等效算法的信息,请参阅下面的 Roman 的答案。还要感谢 José,只需添加 MIX_ENV=prod 前缀就可以显着加快我的慢速算法。我已经更新了问题中的统计数据。
原始问题: 我正在研究多种语言的 Project Euler 问题,只是为了看看语言的效率和速度。在问题 #5中,我们被要求找到能被 1 到 20 的所有数字整除的最小正数。
我用多种语言实现了该解决方案。以下是统计数据:
- 去 1.4.2 : 0.58s
- Ruby 2.2 MRI : 6.7s
- Elixir 1.0.5(我的第一个算法):57s
- Elixir 1.0.5(我的第一个带有 MIX_ENV=prod 前缀的算法):7.4s
- Elixir 1.0.5(罗马围棋等效算法):0.7s
- Elixir 1.0.5(Roman 的 Ruby 等效算法):1.8s
为什么 Elixir 的性能这么慢?我尝试在所有语言中使用相同的优化。警告:我是 FP 和 Elixir 新手。
我能做些什么来提高 Elixir 的性能吗?如果您使用任何分析工具来找出更好的解决方案,您能否将它们包括在响应中?
在围棋中:
在红宝石中:
在长生不老药中:
mesh - 使用python查找管道的中心线
我目前正在用 Python 编写代码,用于通过管道流动。在这方面,我必须找到一条穿过由 nastran 网格定义的 3D 管道几何图形的中心线(具有三个或四个边的单元格,其坐标我可以访问)。我在 Python 中使用 pyNastran 模块来获取所有相关的数据和函数。我的问题是找到管道中心线的最有效方法是什么。该管道是一个 3d 管道,在所有方向上都有弯曲。(我有一个数组中网格上每个点的所有坐标)
matlab - 为代码添加边界,matlab
我正在尝试为代码添加界限,但很难弄清楚将它们放在哪里。等式如下: f(x) = e^(6x) + 1.441e^(2x) - 2.079e^(4x) - 0.333 = 0, -1>=x<=0