問題タブ [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.

0 投票する
20 に答える
7729 参照

physics - 科学的な環境でのプログラミングの実践?

バックグラウンド

昨年、大学の物理研究グループでインターンシップをしました。このグループでは、主にLabVIEWを使用して、セットアップの制御、データの取得、およびデータの分析を行うためのプログラムを作成しました。最初の 2 つの目的については、これで問題ありませんが、データ分析の場合は非常に面倒です。その上、誰もがほとんど独学だったので、書かれたコードは一般的にかなり混乱していました (すべての博士号がすぐにすべてをゼロから書き直すことにしたのも不思議ではありません)。バージョン管理は不明であり、IT 部門からの厳しいソフトウェアおよびネットワーク規制のために設定することは不可能でした。

さて、実際には驚くほどうまくいきましたが、自然科学に携わる人々はどのようにソフトウェア開発を行っているのでしょうか?

質問

いくつかの具体的な質問:

  • 科学ソフトウェア、特にデータ分析の開発に使用した言語/環境は何ですか? どのライブラリ?(たとえば、プロットには何を使用しますか?)
  • プログラミングのバックグラウンドがあまりない人向けのトレーニングはありましたか?
  • バージョン管理やバグ追跡などはありましたか?
  • 個々の科学者 (特に物理学者は頑固な人々です!) の邪魔をせずに、プログラミングのための適切な環境を作ろうとするのはどうですか?

これまでの回答のまとめ

これまでの回答 (または私の解釈): (2008-10-11)

  • 最も広く使用されていると思われる言語/パッケージ:
    • LabVIEW
    • パイソン
      • SciPyNumPyPyLabなどを使用 (ダウンロードとリンクについては Brandon の返信も参照してください)
    • C/C++
    • MATLAB
  • ほぼすべての回答者がバージョン管理を使用しています。バグ追跡やその他のプロセスはあまり一般的ではありません。
  • ソフトウェア大工コースは、科学者にプログラミングと開発のテクニックを教える良い方法です。
  • 物事を改善するには?
    • 厳格なプロトコルに従うことを強制しないでください。
    • 自分で環境を設定し、そのメリットを他の人に示します。バージョン管理やバグ追跡などの作業を自分で開始できるように支援します。
    • 他の人のコードをレビューすることは役に立ちますが、誰もがそれを評価するわけではないことに注意してください。
0 投票する
10 に答える
36565 参照

python - MATLABのfmincon関数に代わるオープンソース?

fmincon制約付き線形最適化のためのMATLABの関数に代わるオープンソースの方法はありますか?Python / NumPy / SciPyを使用するようにMATLABプログラムを書き直していますが、これは私が同等のものを見つけられなかった唯一の関数です。NumPyベースのソリューションが理想的ですが、どの言語でもかまいません。

0 投票する
12 に答える
3630 参照

c# - 科学計算ソフトウェア用のマネージ言語

科学計算はアルゴリズム集約的であり、データ集約的でもあります。多くの場合、分析を実行し、次の作業に進む前に解放するために大量のメモリを使用する必要があります。また、メモリプールを使用して、各分析のメモリをリサイクルすることもあります。ここでマネージド言語が興味深いのは、開発者がアプリケーション ロジックに集中できるからです。巨大なデータセットを扱う必要があるかもしれないので、パフォーマンスも重要です。しかし、マネージ言語を使用してメモリとパフォーマンスを制御するにはどうすればよいでしょうか?

0 投票する
9 に答える
279 参照

algorithm - 非開発者による学際的アルゴリズム構築

ええ、私はタイトルが一口であることを知っています...

私が言いたいのは、コード化されテストされた理論を必要とする主題の専門家とどのようにコミュニケーションを取るかということです.

たとえば、気象シミュレーションは、気象学者、コンピューター科学者、およびソフトウェア エンジニアの共同作業です。コンピュータ サイエンティストとソフトウェア エンジニアは一般的に同じ言語を話しますが、気象学者はまったく別の世界にいます。

分野間のコミュニケーションと理解のレベルをどのように高めますか? 必ずしも天気だけではなく、他の科学も同様です。

0 投票する
6 に答える
7509 参照

python - Lua の科学ライブラリ?

Scipy に匹敵する Lua 用の科学パッケージはありますか?

0 投票する
7 に答える
1041 参照

matlab - 導関数の精度に対してリラックスした態度を持つ ODE インテグレーター/ソルバーを探している

私は導関数を計算するのにかなり高価な (一次) ODE のシステムを持っています。

ただし、導関数は、収束級数から計算され、境界がドロップされた項からの最大寄与に配置できるため、または kd ツリーに格納された事前計算された範囲情報を使用することにより、与えられた誤差範囲内でかなり安価に計算できます。 /octree ルックアップ テーブル。

残念ながら、これを利用できる一般的な ODE ソルバーを見つけることができませんでした。それらはすべて座標を提供するだけで、正確な結果が返されることを望んでいるようです。(注意してください、私は ODE の専門家ではありません。ルンゲ クッタ、Numerical Recipies の資料、LSODE、および Gnu Scientific Library のソルバーには精通しています)。

つまり、私が見たすべてのソルバーに対して、と の配列をderivs受け取り、 backの配列を返すコールバック関数を提供します。しかし、理想的には、コールバック、s、および許容可能なエラーの配列を提供し、微分範囲が必要な精度内にあることが保証されたものを探しています。(おそらく、同様に有用なバリエーションが多数あります)。txdx/dttxdx/dt_mindx/dt_max

この種のことを念頭に置いて設計されたソルバーへのポインタ、または問題への代替アプローチ (私がこのようなものを望んでいる最初の人だとは信じられません) は大歓迎です。

0 投票する
5 に答える
10035 参照

java - 非線形方程式を数値的に解く

Java プログラムで非線形最小化 (N 個の未知数の最小残差二乗) 問題を解決する必要があります。これらを解決する通常の方法は、Levenberg-Marquardtアルゴリズムです。いくつか質問があります

  • 利用可能なさまざまな LM 実装の経験がある人はいますか? LM には少し異なる種類があり、アルゴリズムの正確な実装がその数値安定性に大きな影響を与えると聞いています。私の関数はかなりうまく機能しているので、これはおそらく問題にはなりませんが、もちろん、より良い代替手段の 1 つを選択したいと思います。ここに私が見つけたいくつかの選択肢があります:

  • LM が必要とする最初の推測を行うために一般的に使用されるヒューリスティックはありますか?

  • 私のアプリケーションでは、ソリューションにいくつかの制約を設定する必要がありますが、幸いなことにそれらは単純です: ソリューションが (物理的なソリューションであるために) 非負であることを要求するだけです。わずかにマイナスの解は、データの測定の不正確さの結果であり、明らかにゼロである必要があります。「通常の」LMを使用することを考えていましたが、未知数の一部が負になる場合はゼロに設定し、それから残りを解決するように繰り返します。本物の数学者はおそらく私を笑うでしょうが、これでうまくいくと思いますか?

ご意見ありがとうございます。

更新: これはロケット科学ではありません。解決するパラメーターの数 (N) は最大で 5 であり、データセットは解決を可能にするのに十分な大きさではないため、Java はこれを解決するのに十分効率的であると思います。そして、この問題は賢い応用数学者によって何度も解決されていると信じているので、自分で料理するのではなく、すぐに使える解決策を探しているだけです. たとえば、Scipy.optimize.minpack.leastsq は、純粋な Python であれば問題ないでしょう。

0 投票する
7 に答える
113601 参照

c# - C# でのプロット

C# は科学計算にある程度の可能性を示しているようですが、科学の学生と科学者の両方にとって非常に重要な 2D グラフをプロットするものはほとんど見つかりませんでした。

C# で出版品質の 2D プロットを作成する信頼できる無料の方法はありますか? 複数の形式 (png、eps、...) に保存する容量。Python の matplotlib に似たものですか?

0 投票する
10 に答える
3261 参照

open-source - 科学に役立つプログラミング プロジェクトはどこにありますか?

空き時間にプログラミング プロジェクトに取り組みたいのですが、何らかの方法で科学コミュニティを支援できるプロジェクトがあるかどうかを知りたいですか?

0 投票する
3 に答える
1987 参照

git - DVCS は科学的プログラミングにどのように役立つのでしょうか?

私は、DVCS (Git、Hg、Bazar など) が、特に大学院生の科学的プログラミングのプロセスでどのように役立つかを調査するための準備作業を行っています。私はかなりの数年間プログラミングをしており、現在自然科学の修士課程を開始しているので、これについては非常に良い立場にあると思います。目標は、これに関する短いプレゼンテーションを 1 ~ 2 か月以内に行うことです。

私が見る限り、ソース管理の明らかな利点は別として、DVCS は現在、大学院生の日常生活に次のような改善をもたらします。

  1. 分岐:

    これは大きなものです。DVCS の実践を観察すると、安価な分岐が主に新機能の実験を促進することが明らかです。科学的プログラミングはすべて実験です。パラメータやアルゴリズムを微調整するために、さまざまなブランチを作成できます。これは特に重要です。なぜなら、ほとんどの科学的コードは生涯を通じてリファクタリングの単一のアオタを見たことがないためです (ほとんどの大学院生はそれが何であるかさえ知りません)。高速コミットは、ラボ ノートブックの代わりにコミット コメントを使用することも意味します。計算結果は、再現可能な研究のために特定のコミット ハッシュコードにタグ付けできます。

  2. サーバーへのプッシュ:

    現在、ほとんどの科学的コードはある種のクラスターで実行されているため、DVCS はある種のより高度な Rsync として使用できます。これは、多くの人が既に「実稼働」コードを HPC クラスターにプッシュするために使用しています。これを分岐と組み合わせて、終了することなく複数のバージョンのコードを簡単に実行できます

  3. 論文の共同研究:

    もっと言う必要がありますか?複数の著者による論文は、小規模なオープン ソース プロジェクトとまったく同じように運営されます。著者全員が LaTex で書いている場合、論文での共同作業は自然に適合するはずですが、Word などで書いている場合はさらに複雑になります。これは、コミット コメントがより大きな役割を果たす可能性がある場所です。

私の質問は、DVCS は科学プログラマーにどのような貢献ができると思いますか? コミュニティではソース管理に移行するという話がたくさん見られますが、ほとんどはまだ Subversion を検討中です。私のざっとしたメモから、DVCS は新しい大学院生にとって完璧なワークフロー パラダイムであるように思えます。私の考えは間違っていますか?それとも、科学的コーディングは単にDVCS ツールのことを耳にするほど遅れているのでしょうか?


関連している: