問題タブ [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.
physics - 科学的な環境でのプログラミングの実践?
バックグラウンド
昨年、大学の物理研究グループでインターンシップをしました。このグループでは、主にLabVIEWを使用して、セットアップの制御、データの取得、およびデータの分析を行うためのプログラムを作成しました。最初の 2 つの目的については、これで問題ありませんが、データ分析の場合は非常に面倒です。その上、誰もがほとんど独学だったので、書かれたコードは一般的にかなり混乱していました (すべての博士号がすぐにすべてをゼロから書き直すことにしたのも不思議ではありません)。バージョン管理は不明であり、IT 部門からの厳しいソフトウェアおよびネットワーク規制のために設定することは不可能でした。
さて、実際には驚くほどうまくいきましたが、自然科学に携わる人々はどのようにソフトウェア開発を行っているのでしょうか?
質問
いくつかの具体的な質問:
- 科学ソフトウェア、特にデータ分析の開発に使用した言語/環境は何ですか? どのライブラリ?(たとえば、プロットには何を使用しますか?)
- プログラミングのバックグラウンドがあまりない人向けのトレーニングはありましたか?
- バージョン管理やバグ追跡などはありましたか?
- 個々の科学者 (特に物理学者は頑固な人々です!) の邪魔をせずに、プログラミングのための適切な環境を作ろうとするのはどうですか?
これまでの回答のまとめ
これまでの回答 (または私の解釈): (2008-10-11)
- 最も広く使用されていると思われる言語/パッケージ:
- ほぼすべての回答者がバージョン管理を使用しています。バグ追跡やその他のプロセスはあまり一般的ではありません。
- ソフトウェア大工コースは、科学者にプログラミングと開発のテクニックを教える良い方法です。
- 物事を改善するには?
- 厳格なプロトコルに従うことを強制しないでください。
- 自分で環境を設定し、そのメリットを他の人に示します。バージョン管理やバグ追跡などの作業を自分で開始できるように支援します。
- 他の人のコードをレビューすることは役に立ちますが、誰もがそれを評価するわけではないことに注意してください。
python - MATLABのfmincon関数に代わるオープンソース?
fmincon
制約付き線形最適化のためのMATLABの関数に代わるオープンソースの方法はありますか?Python / NumPy / SciPyを使用するようにMATLABプログラムを書き直していますが、これは私が同等のものを見つけられなかった唯一の関数です。NumPyベースのソリューションが理想的ですが、どの言語でもかまいません。
c# - 科学計算ソフトウェア用のマネージ言語
科学計算はアルゴリズム集約的であり、データ集約的でもあります。多くの場合、分析を実行し、次の作業に進む前に解放するために大量のメモリを使用する必要があります。また、メモリプールを使用して、各分析のメモリをリサイクルすることもあります。ここでマネージド言語が興味深いのは、開発者がアプリケーション ロジックに集中できるからです。巨大なデータセットを扱う必要があるかもしれないので、パフォーマンスも重要です。しかし、マネージ言語を使用してメモリとパフォーマンスを制御するにはどうすればよいでしょうか?
algorithm - 非開発者による学際的アルゴリズム構築
ええ、私はタイトルが一口であることを知っています...
私が言いたいのは、コード化されテストされた理論を必要とする主題の専門家とどのようにコミュニケーションを取るかということです.
たとえば、気象シミュレーションは、気象学者、コンピューター科学者、およびソフトウェア エンジニアの共同作業です。コンピュータ サイエンティストとソフトウェア エンジニアは一般的に同じ言語を話しますが、気象学者はまったく別の世界にいます。
分野間のコミュニケーションと理解のレベルをどのように高めますか? 必ずしも天気だけではなく、他の科学も同様です。
python - Lua の科学ライブラリ?
Scipy に匹敵する Lua 用の科学パッケージはありますか?
matlab - 導関数の精度に対してリラックスした態度を持つ ODE インテグレーター/ソルバーを探している
私は導関数を計算するのにかなり高価な (一次) ODE のシステムを持っています。
ただし、導関数は、収束級数から計算され、境界がドロップされた項からの最大寄与に配置できるため、または kd ツリーに格納された事前計算された範囲情報を使用することにより、与えられた誤差範囲内でかなり安価に計算できます。 /octree ルックアップ テーブル。
残念ながら、これを利用できる一般的な ODE ソルバーを見つけることができませんでした。それらはすべて座標を提供するだけで、正確な結果が返されることを望んでいるようです。(注意してください、私は ODE の専門家ではありません。ルンゲ クッタ、Numerical Recipies の資料、LSODE、および Gnu Scientific Library のソルバーには精通しています)。
つまり、私が見たすべてのソルバーに対して、と の配列をderivs
受け取り、 backの配列を返すコールバック関数を提供します。しかし、理想的には、コールバック、s、および許容可能なエラーの配列を提供し、微分範囲が必要な精度内にあることが保証されたものを探しています。(おそらく、同様に有用なバリエーションが多数あります)。t
x
dx/dt
t
x
dx/dt_min
dx/dt_max
この種のことを念頭に置いて設計されたソルバーへのポインタ、または問題への代替アプローチ (私がこのようなものを望んでいる最初の人だとは信じられません) は大歓迎です。
java - 非線形方程式を数値的に解く
Java プログラムで非線形最小化 (N 個の未知数の最小残差二乗) 問題を解決する必要があります。これらを解決する通常の方法は、Levenberg-Marquardtアルゴリズムです。いくつか質問があります
利用可能なさまざまな LM 実装の経験がある人はいますか? LM には少し異なる種類があり、アルゴリズムの正確な実装がその数値安定性に大きな影響を与えると聞いています。私の関数はかなりうまく機能しているので、これはおそらく問題にはなりませんが、もちろん、より良い代替手段の 1 つを選択したいと思います。ここに私が見つけたいくつかの選択肢があります:
FPL 統計グループの非線形最適化 Java パッケージ。これには、従来の Fortran MINPACK ルーチンの Java 翻訳が含まれています。
JLAPACK、別の Fortran 翻訳。
一部の Python 実装。純粋な Python は、jythonc を使用して Java にコンパイルできるため、問題ありません。
LM が必要とする最初の推測を行うために一般的に使用されるヒューリスティックはありますか?
私のアプリケーションでは、ソリューションにいくつかの制約を設定する必要がありますが、幸いなことにそれらは単純です: ソリューションが (物理的なソリューションであるために) 非負であることを要求するだけです。わずかにマイナスの解は、データの測定の不正確さの結果であり、明らかにゼロである必要があります。「通常の」LMを使用することを考えていましたが、未知数の一部が負になる場合はゼロに設定し、それから残りを解決するように繰り返します。本物の数学者はおそらく私を笑うでしょうが、これでうまくいくと思いますか?
ご意見ありがとうございます。
更新: これはロケット科学ではありません。解決するパラメーターの数 (N) は最大で 5 であり、データセットは解決を可能にするのに十分な大きさではないため、Java はこれを解決するのに十分効率的であると思います。そして、この問題は賢い応用数学者によって何度も解決されていると信じているので、自分で料理するのではなく、すぐに使える解決策を探しているだけです. たとえば、Scipy.optimize.minpack.leastsq は、純粋な Python であれば問題ないでしょう。
c# - C# でのプロット
C# は科学計算にある程度の可能性を示しているようですが、科学の学生と科学者の両方にとって非常に重要な 2D グラフをプロットするものはほとんど見つかりませんでした。
C# で出版品質の 2D プロットを作成する信頼できる無料の方法はありますか? 複数の形式 (png、eps、...) に保存する容量。Python の matplotlib に似たものですか?
open-source - 科学に役立つプログラミング プロジェクトはどこにありますか?
空き時間にプログラミング プロジェクトに取り組みたいのですが、何らかの方法で科学コミュニティを支援できるプロジェクトがあるかどうかを知りたいですか?