問題タブ [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 - デュアルコア システム上の Ubuntu 用の PETSc と MPI はどれですか
私は科学計算に取り組んでおり、マルチ CPU システム用の petsc ベースのアプリケーションを開発しています。
デバッグの目的で、Ubuntu (Karmic Koala) を実行するデュアルコア システムである自分の PC にそのソフトウェアをインストールしたいと考えています。
しかし、どのリソースを使用すればよいかわかりません。Web には、debian パッケージとソース アーカイブがあります。これらのパッケージをコンパイルおよびリンクする際にさまざまな問題があることはわかっているため、この問題は私が最も避けたいことです。
このソフトウェアはデバッグのみに使用するため、パフォーマンスは気にしません (少なくともそれほどではありません)。したがって、使いやすさが私にとって最も重要です。
誰かアドバイスをいただけますか?
objective-c - 集中的な科学アプリケーションの NSDecimalNumber?
ivarを含む「DayData」クラスを書いているとしましょう
最後の 4 つの ivar は、その日のその株の始値、高値、安値、終値です。
このクラスを、何十年、つまり何千日もの履歴データに沿った集中的なモンテカルロ シミュレーションの背後にある基本的なビルディング ブロック クラスとして使用しているとします。これは、シミュレーションを可能な限り高速にするために、これらの ivar に短期間で数百万回ではないにしても数千回アクセスする必要があることを意味します。
質問: double に固執する必要がありますか、それとも NSDecimalNumber を引き続き使用する必要がありますか? NSDecimalNumber は本当に速いのですか? 集中的な科学的アプリケーションのために NSDecimalNumber をテストした人はいますか?
clojure - Clojureの科学プログラミングスタック
私は現在、ほとんどのプログラミングにPythonを使用していますが、Clojureの学習に興味があります。scipy、numpy、matplotlibで持っている機能を再現するには、どのライブラリが必要ですか?Enthoughtディストリビューションのようなものはありますか?
fortran - FORTRAN の利点を備えた現代言語?
最近、私は多くの FORTRAN 77 を扱っています。最初は懸念がありましたが、今ではこの言語の優れた特性をいくつか見ています。それは:
- 簡単に習得できます (オブジェクト指向または関数型プログラミングの複雑さはありません)
- 読みやすい
- 数字計算で猛烈な速さ
これらの特質は、コンピューターに迅速に答えを与える方法を知りたいだけの、プログラマー以外のエンジニアや科学者にとって当然のことながら魅力的です。しかし、その年齢といくつかの基本的な仮定に基づいて、多くの制限があります。Fortran の新しいバージョンに追加された機能のいくつかを、プログラマー以外の人がどれほど簡単に理解できるかについても、私は懐疑的です。
FORTRAN と同じくらい簡単で、数学的なアプリケーションと同じくらい速く、制限の少ない最新の言語はありますか? または、答えは Fortran 90, 95, 2003 です。. . ?
clojure - clojureで画像を処理する最良の方法は何ですか?
Python シミュレーションの一部として、2 次元配列を取得し、この配列の勾配を取得します。これは、適切な重みを持つフィルターで 2 次元配列を畳み込むことにより、scipy/numpy で行われます。
したがって、私の質問は、これを clojure で合理的に高速に実行したい場合、純粋な clojure でこれを実行することは理にかなっていますか、それとも Java 画像処理ライブラリを使用して clojure から呼び出す方がよいでしょうか?
benchmarking - 高性能ベンチマークの基本ガイドライン
主に時間に関して、高性能コンピューターでの数値シミュレーションソフトウェアのいくつかの実装をベンチマークしますが、メモリ使用量、プロセス間通信などの他のリソースも同様に興味深い場合があります。
今のところ、(この分野で) ソフトウェアをベンチマークする一般的なガイドラインについての知識はありません。どのくらいの測定ノイズが合理的に予想されるのか、また、通常どの程度のテストを実行するのか、私にはわかりません。もちろん、これらの問題はシステムに依存しますが、妥当と考えられる基準がいくつか存在することは確かです。
そのような(紹介)情報を提供できますか?
math - シンプレクティック積分器のヘルプ
物理シミュレーションを開発しようとしていて、4 次シンプレクティック積分法を実装したいと考えています。問題は、シンプレクティック積分器を使用するとシミュレーションがまったく機能しないため、計算を間違えているに違いないということです (シミュレーションで十分に機能する 4 次のルンゲクッタ積分器と比較して)。私はこれを永遠にグーグルで検索してきましたが、このテーマに関する科学記事しか見つかりません。記事で使用されている方法を採用しようとしましたが、うまくいきません。できれば重力場をシミュレートするために、シンプレクティック積分器を利用するシミュレーションのソースコードを誰かが持っているかどうかを知りたいのですが、シンプレクティック積分器は何でも構いません。ソースの言語はそれほど重要ではありませんが、C スタイルの構文を使用する言語があれば幸いです。ありがとう!
python - numpyを使用して繰り返し信号の一部内に放物線をプロットする
ほぼ毎秒繰り返されるプロセスの各サイクルで少し変化する繰り返し信号がありますが、各サイクルの期間と内容は、いくつかのパラメーター内で互いに少し異なります。私の信号データの1秒ごとに1000のx、y座標があります。各サイクル内のデータの小さいが重要なセグメントが破損しているため、破損した各セグメントを上向きの放物線に置き換えたいと思います。
放物線で置き換える必要のあるデータセグメントごとに、3点のx、y座標があります。頂点/最小値はそれらのポイントの1つです。そして、他の2つのポイントは、放物線である上向きのU字型の左右の上部です。つまり、左上はこの関数の定義域内の最小のx値のx、y座標ペアであり、右上はこの関数の定義域内の最大のx値のx、y座標ペアです。左上と右上のy座標は互いに等しく、データセグメントで最も高い2つのy値です。
この上向きの放物線に残りのデータポイントをプロットするコードをどのように記述できますか? この関数は、データの1分ごとに60回または70回呼び出す必要があり、放物線の形状/式は、これら3つのペア間の異なる関係を説明するために、この関数が呼び出されるたびに変更する必要があることに注意してください。結果として得られる各放物線のx、y座標。
注:XarrayとYarrayはそれぞれ単一列のベクトルであり、各インデックスにデータがあり、2つの配列をx、y座標のセットとしてリンクします。どちらもNumpy配列です。Xarrayには時間情報が含まれており、変更されませんが、Yarrayには、この関数で計算する必要のある放物線データに置き換えられる破損したセグメントを含む信号データが含まれています。
performance - 科学計算におけるメッシュデータのメモリレイアウト
私は有限要素システムを開発しています。いつものように、シミュレーションはメッシュノードのセットで構成され、それぞれがプロパティのセット(フローティングポイント)を持ちます。たとえば、時間内に変化するいくつかの材料プロパティ、座標、または物理量などです。
次の2つの極端なアプローチを採用できます。
プロパティごと:プロパティごとに1つの配列を維持します。
double* x, *y, *z, *e_field, *b_field, *conductivity;
エントリ単位:各配列が構造体である単一の配列を維持します
struct { double x, y, z, e_field, b_field, conductivity; } *meshnodedata;
これらの間で、座標x、y、zにのみ2番目のアプローチを適用し、残りのプロパティに最初のアプローチを使用するように、混合することができます。シミュレーションが各メッシュノードに対して維持するプロパティが多いほど、混合する可能性があります。
一方では、プログラムのパフォーマンスとコードの保守性に関して、これらのアプローチ(およびそれらの組み合わせ)のどれが科学計算に最適であるかという古典的な質問があります。一方で、異なるアプローチ間の移行が容易になるようにコードを実装するにはどうすればよいのでしょうか。さらに、プログラムのさまざまな部分のさまざまなメモリレイアウト間で移行することも解決策になる可能性があります。
要点を言えば:
- これらの異なるアプローチでのあなたの経験は何でしたか?
- これらの違いはどれほど重要でしたか?
- これら2つのレイアウト間での移行の経験を積んでいますか?