問題タブ [numerical-analysis]
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.
matlab - 入力に応じてmatlabに実装された異常な動作のアルゴリズム
私は科学計算、特にmatlabの反復法Gauss-SeidelとSORの宿題を行っています。問題は、行列の場合は予期しない結果が得られ(解は収束しない)、別の行列の場合は収束することです。
これがsorのコードです。ここで:
- A:システムの行列A * x = b
- Xini:初期反復の配列
- b:システムに依存しないアレイA * x = b
- maxiter:最大反復回数
- tol:許容値;
- 特に、SOR法は、緩和パラメーターに対応するwと呼ばれる6番目のパラメーターを受け取ります。
sorメソッドのコードは次のとおりです。
ガウス・ザイデル法のコードは次のとおりです。
この入力の場合:
関数Gauss-Seidelまたはsorを呼び出すとき:
gaussの出力は次のとおりです。
そしてsorのために:
ただし、次のシステムでは解決策を見つけることができます。
解決:
メソッドの動作は、両方の行列の条件付けに依存しますか?2番目のマトリックスが最初のマトリックスよりも条件が良いことに気づいたからです。助言がありますか?
matlab - matlab フィット exp2
exp2 (2 つの指数の合計) を使用した適合関数のドキュメントを探していますが、うまくいきません。機能の操作方法は明らかです。
しかし、指数の合計に適合する方法は複数あるため、どのアルゴリズムが使用されているかを調べようとしています。特に、1 つの指数 (生データ) に少しのノイズを当てはめるとどうなるか、指数がどのように広がるか。いくつかのケースをシミュレートしましたが、2 番目の係数セットのすべての重みが「低下」しているように見えますが、行データ分析はしばしば異なる動作を示します。
ドキュメントの提案はありますか?
image - ランダムなピクセルからの画像補間
単一チャネルの画像補間について質問したいと思います。簡単にするために単一のチャネルが選択されています。それ以外の場合は、複数のチャネルの画像に取り組んでいます。ゼロ以外の強度値を持ついくつかのピクセルがある純粋な黒の背景 (ピクセル強度 0) を持つ単一チャネル画像があると仮定します。補間アルゴリズムを適用して、画像の黒い領域全体を、隣接する非ゼロ強度ピクセルからの補間値で塗りつぶしたいと考えています。
この問題に適用できるスムーズな補間には、どの補間アルゴリズムをお勧めしますか?
もちろん、入力として、これらの黒以外のピクセルの位置とその強度を知っています。ただし、位置は多少ランダムです (ある行では 10 ピクセル、別の行ではわずか 8 ピクセルの場合があります)。
c++ - 数値計算に役立つc++ライブラリ
私はこれまでBoostライブラリを使用してきました。
でも、行列演算とランダム数を使いたいです。
便利なC++ライブラリを教えてください。
ありがとう。
matlab - MATLABで画像処理用の3次スプラインを生成中にエラーが発生しました-「データサイトは区別する必要があります」
私はMATLABで画像処理プログラムを開発しています。その一部には、入力画像(基本的には、ペイント/ GIMP / Photoshopの「鉛筆」ツールで作成されたものと同様の1ピクセル幅のエッジを持つバイナリ線画)から一定の間隔でいくつかのポイントをサンプリングすることが含まれます。次に、サンプリングされたピクセルをノットとして使用して3次スプラインを生成します。
これで、ポイントのセットを指定してMATLABで3次スプラインを生成する方法を知っていますが、問題は次のとおりです。画像は複数の「値」を持つ可能性があるため、(x, y)
の真の関数ではありませんx
(たとえば、ピクセルの行番号です)。 x
"各xで-値は、その行の黒であるすべての列の数です。このため、MATLABのspline()
関数は、「データサイトは別個のものでなければならない」と不平を言います。
これを回避するにはどうすればよいですか?
c++ - Adaptive Quadrature (C++)
I'm having issues with my adaptive trapezoidal rule algorithm in C++ -- basically, regardless of the tolerance specified, I get the same exact approximation. The recursion is supposed to stop very early for large tolerances (since abs(coarse-fine) is going to be smaller than 3.0*large tolerance and minLevel of recursion is about 5).
However, what this function does is run the maximum number of times regardless of choice of tolerance. Where did I mess up? EDIT: Perhaps there are issues in my helper functions?
And here's what's in main():
math - 固定 (定数) 指数でべき乗を計算する
y が定数で x が有効な数値であることが保証されている x^ya を膨大な回数計算する必要がある場合があります。
これは、さまざまなチェックと評価を実行する Pow(double x, double y) よりも効率的に行うにはどうすればよいでしょうか?
y 変換を事前に計算しようとしています。
編集
どちらも実数です。x = 0 ... 4,000,000,000。
embedded - PICでの計算式
質問する前に、問題の背景を説明します。
私の PIC 18F アセンブラ ルーチンは、Rntc と T°C の関係を解決します。ただし、精度はせいぜい 3 桁です。
アセンブラーの例で使用した NTC 基準抵抗は、25°C の温度に対応する 10000 オームです。
3 桁しかないため、式の解は =xF6 ,d246 となります。T の表示には、24 と 6 の間の小数点が表示されます。
T の計算時間は、ニュートン近似を含めて約 800us です。この計算時間は、MPlab C よりもはるかに優れているように見えます
方程式 y = 9.228*x*x-840.852*x+25236.82 の sqrt を計算するアセンブラー ルーチンは、b2-4ac のスケーリングの問題に遭遇します。 a=9 を使用する必要があります。b=840 c=25236
Q1 整数を使用していますが、24 ビット演算を使用して上記の数値を計算するためのトリックはありますか?
c++ - 並列でパフォーマンスが重要な数値コードを適切に設計する
私は訓練を受けた機械エンジニアであり、主に 25 年以上前の C の既存の大規模な数値コード ベースを拡張する研究環境で働いています。最近、本格的な科学ソフトウェアをゼロから設計する方法を学びたいと決心しました。
私は大学の CS 部門の多くの学者と話をしましたが、大規模な数値アプリケーションを構築する可能性が最も高いのは、機械/化学/生物学の部門にいると考えられているようです。同様に、これらのアプリケーションを作成するほとんどの人は、ソフトウェア設計の原則に関するトレーニングをほとんど、またはまったく受けていません。
ほとんどのエンジニアと同じように、私は実践することで学習するので、次のタスクを完了するように自分自身に設定しようとしています。このグリッド全体で、熱方程式 (または他の偏微分方程式) を解きます。
私が含めたいもの:
- 並列 (私は MPI の経験が短いので、おそらくこれに固執します) -- おそらく OpenCL で結合します (Nvidia カードがないため、CUDA はありません)。
- Python と C++ の組み合わせ (Python でのスクリプト駆動 UI、C++ での実行)
- オブジェクト指向、デザインパターンベース(どうしても学びたい部分)
- 単体テスト フレームワーク (私は gtest を使用しており、おそらくこれに固執しますが、単体テストをどの程度詳細に作成するかはわかりません。単体テストの科学的コードに関するさまざまなアドバイスを読みました)
- Linux ベース -- この段階では移植性はあまり気にしなくてよい
- おそらくBoostライブラリを使用しています
- 結果の保存には HDF5 または VTK を使用します (VTK は知っていますが、HDF5 の方が適していると感じています)。
- プロファイリングされたパフォーマンス
私が答えようとしているいくつかの質問:
- これは巨大なタスクのように感じますが、それは問題ありませんが、それを分解するための一般的なプロセスは何ですか? 基本的なインフラストラクチャ (MPI ラッパー、マトリックス クラスなど) から始めますか、それとも高レベルの対話 (メイン コントローラー、UI など) から始めますか、それともまったく別の場所から始めますか?
- Python + C++ のパラダイムは、クラスターでの MPI の起動にうまく適合しますか?
- 科学的な文脈でアプリケーション設計を扱っている本を見つけたことがありません。
- 私は理想的な「実行してからプロファイリングする」最適化方法をよく知っていますが、最初に下した非常に基本的な設計上の決定のいくつかがパフォーマンスに影響を与えると思います。数値コードの高レベル設計で注意すべき主な落とし穴は何ですか?
注意: この質問が stackexchange 形式に適合するかどうかはわかりません。適合しない場合は、喜んで言い換えます...