问题标签 [scientific-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.
c# - 是否有 Hilbert-Huang 变换的 .Net(首选 F# 或 C#)实现?
Hilbert-Huang 变换,经验模态分解...
我发现它在 R 和 Matlab 中实现。我想在 C#/F#/.NET 中找到它的开源实现。
ubuntu - 哪个 PETSc 和 MPI 用于双核系统上的 Ubuntu
我正在从事科学计算并为多 CPU 系统开发基于 petsc 的应用程序。
出于调试目的,我想在我自己的电脑上安装那个软件,这是一个运行 Ubuntu (Karmic Koala) 的双核系统。
但我不知道该使用哪些资源。有 debian 软件包,以及网络上的源档案。我知道在编译和链接这些包的时候会出现各种各样的问题,所以这个麻烦是我最想避免的!
我不关心性能(至少不是太多),因为我只会将这个软件用于调试,因此可用性对我来说是最重要的。
有人可以给建议吗?
objective-c - NSDecimalNumber 用于密集的科学应用?
假设我正在编写一个包含 ivars 的“DayData”类
最后四个 ivars 是该股票当天的开盘价、最高价、最低价、收盘价。
假设我在数十年(即数千天)的历史数据中使用这个类作为密集蒙特卡罗模拟背后的基本构建块类。这意味着我必须在短时间内访问这些 ivars 数千甚至数百万次,以使模拟尽可能快。
问题:我应该坚持加倍,还是应该仍然使用 NSDecimalNumber?NSDecimalNumber 到底有多快?这里有没有人为密集的科学应用测试过 NSDecimalNumber?
clojure - Clojure 的科学编程堆栈
我目前的大部分编程都使用 Python,但我对学习 Clojure 很感兴趣。我需要哪些库来重现我在 scipy、numpy 和 matplotlib 中拥有的功能?有没有类似 Enthought 发行版的东西?
fortran - 具有 FORTRAN 优势的现代语言?
最近我一直在使用很多 FORTRAN 77,虽然我一开始有所保留,但现在我看到了这种语言的一些很棒的品质。这是:
- 简单易学(没有面向对象或函数式编程的复杂性)
- 易于阅读
- 快速计算数字
这些品质自然会吸引那些只想让计算机快速给出答案的非程序员工程师和科学家。但是基于它的年龄和一些基本假设,它有很多限制。我怀疑非程序员是否能轻松地理解 Fortran 更高版本的一些附加功能。
有没有一种现代语言像 FORTRAN 一样简单,数学应用也一样快,而且限制更少?或者是 Fortran 90, 95, 2003 的答案。. . ?
clojure - 在 clojure 中处理图像的最佳方法是什么?
作为 python 模拟的一部分,我有一个二维数组并获取这个数组的梯度。这是在 scipy/numpy 中通过将二维数组与具有适当权重的过滤器进行卷积来完成的。
所以我的问题是,如果我想在 clojure 中以相当快的速度执行此操作,在纯 clojure 中执行此操作是否有意义,或者使用 Java 图像处理库并从 clojure 调用它是否更好?
benchmarking - 高性能基准测试的基本指南
我将在高性能计算机上对数值模拟软件的几种实现进行基准测试,主要是关于时间 - 但其他资源,如内存使用、进程间通信等也可能很有趣。
就目前而言,我不了解如何对软件进行基准测试(在这方面)的一般准则。我也不知道有多少测量噪声是可以合理预期的,也不知道通常进行多少测试。当然,尽管这些问题取决于系统,但我很确定存在一些被认为是合理的标准。
你能提供这样的(介绍性的)信息吗?
math - 帮助辛积分器
我正在尝试开发物理模拟,并且我想实现四阶辛积分方法。问题是我一定弄错了数学,因为我的模拟在使用辛积分器时根本不起作用(与四阶龙格-库塔积分器相比,它对模拟工作得相当好)。我一直在谷歌上搜索这个,我能找到的都是关于这个主题的科学文章。我试图调整文章中使用的方法,但没有运气。我想知道是否有人有使用辛积分器的模拟源代码,最好是模拟引力场,但任何辛积分器都可以。源是什么语言并不重要,但我会欣赏使用 C 风格语法的语言。谢谢!
python - 使用 numpy 在重复信号的一部分内绘制抛物线
我有一个重复信号,该信号在一个大致每秒重复一次的过程的每个周期中会发生一些变化,尽管每个周期的持续时间和内容在某些参数内会有所不同。我的信号数据的每一秒都有一千个 x,y 坐标。每个周期内的一小部分但重要的数据已损坏,我想用向上的抛物线替换每个损坏的部分。
对于需要用抛物线替换的每个数据段,我有三个点的 x,y 坐标。顶点/最小值是这些点之一。而另外两个点是向上的U形即抛物线的左右顶部。换句话说,左上角是该函数域中最低 x 值的 x,y 坐标对,而右上角是该函数域中最高 x 值的 x,y 坐标对。左上和右上的 y 坐标相等,是数据段中最高的两个 y 值。
如何编写代码来绘制这条向上抛物线中的剩余数据点? 请记住,每分钟数据需要调用此函数 60 或 70 次,并且每次调用此函数时抛物线的形状/公式都需要更改,以说明这三对之间的不同关系每个结果抛物线中的 x,y 坐标。
注意:Xarray 和 Yarray 都是单列向量,每个索引处都有数据,将两个数组链接为 x,y 坐标集。它们都是 numpy 数组。Xarray 包含时间信息并且不会改变,但 Yarray 包含信号数据,包括将被替换为需要通过此函数计算的抛物线数据的损坏段。
performance - 科学计算中网格数据的内存布局
我正在开发一个有限元系统。像往常一样,模拟由一组网格节点组成,每个节点都有一组属性(浮点),例如随时间演变的几个材料属性、坐标或物理量。
您可以采用两种极端方法:
属性方面:为每个属性维护一个数组:
double* x, *y, *z, *e_field, *b_field, *conductivity;
入口方式:维护一个数组,其中每个数组都是 struct
struct { double x, y, z, e_field, b_field, conductivity; } *meshnodedata;
在这些之间,可以混合使用,例如仅对坐标 x、y、z 应用第二种方法,而对其余属性使用第一种方法。您的模拟为每个网格节点维护的属性越多,混合的可能性就越大。
一方面,我有一个经典问题,就程序性能和代码可维护性而言,这些方法(及其组合)中的哪一种最适合科学计算。另一方面,我想知道如何以使不同方法之间的迁移变得容易的方式来实现代码。此外,它甚至可能是在程序不同部分的不同内存布局之间迁移的解决方案。
言归正传:
- 您对这些不同的方法有何经验?
- 这些差异有多大?
- 您是否获得了在这两种布局之间迁移的经验?