問題タブ [numerical-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++ - HPC の C++ std::vector?
数値シミュレーションを実行するプログラムを FORTRAN から C++ に翻訳しています。
800MB のサイズの 2 倍の大きな行列を処理する必要があります。これ
スタックがそれほど大きくないため、セグメンテーション エラーが発生します。配列を割り当てたり、割り当てを解除したりするために 4 つの for ループが必要なため、new、delete を使用するのは厄介です。
std::array はスタックにあるので良くありません。std::vector は良い選択なので、
最初の質問 std::vector は、高速シミュレーションまたは
無駄で重いデータをたくさん運ぶでしょうか?
2番目の質問 私が使用できる他のデータ構造を知っていますか? たぶんブーストから何かがあるでしょう。
今のところ、私は単にこのソリューションを使用しています:
必要なエントリに手動でアクセスしています。他にパフォーマンスの高いソリューションが見つからない場合は、この最後のメソッドを自動的に管理するクラスを作成します。
3 番目の質問それによってパフォーマンスが大幅に低下すると思いますか?
java - Romberg 統合アルゴリズム
Romberg 積分を使用して、R(n,m) の任意の n 値と m 値について、特定の区間 [a,b] で基本的な積分を解きたいと考えています。
私は台形則からブールの法則を導出したので、紙の上でこれを行う方法を知っています。すべての依存関係を示すフローチャートも作成しました。これをコーディングするのに役立っていません。
これにはある種の再帰が必要だと感じています。
これをJavaでプログラミングしています。
編集:私は誰かにこれをコード化するよう求めていません。上記のすべての情報は、他の人によって編集されたものも含めて、私の相対的な経験と技術語彙の理解、およびそれを適用する私の能力のコンテキストを提供することでした. これは、見せびらかすのではなく、実際に助けたいと思っている人に役立ちます。以下の良いリンクと情報を提供してくれた紳士に感謝します.
matlab - シンボリックパッケージからシンボリック式をオクターブ関数に変換する方法は?
シンボリックパッケージからシンボリック式をオクターブ関数に変換する方法は?
を使用してオクターブにシンボリックパッケージをインストールした後pkg install -forge symbolic
。オクターブでシンボリック パッケージを使用すると、次のように書くことができます。
結果は次のようになります。
しかし、この Integral (int(1)) シンボリック結果をすぐ上で行う方法は、以下のような価値のある関数になりましたか?
からシンボリックな結果を取得し、int ( a^2 + csc(a) )
result(3) を呼び出して 3 で計算したい、つまり、シンボリック式 Integral から数値 11.6463 + 1.5708i を返しますa^2 + csc(a)
。基本的に、シンボリック式を数値的に評価可能な式として使用するにはどうすればよいですか? これはMatlabのこの他の質問です。
参考文献:
installation - Linux/Windows で IT++ ライブラリをすばやく簡単にインストールして使用できますか?
IT++は、特に電気通信分野における科学計算用の一般的な GPL ライブラリ ( LGPL であることが提案されていますが、現在のところ兆候はありません) です。これは同僚に勧められました。
このライブラリを Linux/Windows システムにインストールするのは難しいようです。そして、インストールガイドは難しそうです。
このインストールに時間をかける以外に、やるべきことがたくさんあります。いくつかの簡単なインストールと、可能であれば、こんにちは、世界で時間を節約できますか? タイプ指示?
algorithm - 変位への加速
私は実験的なプログラムをやっています。車のダッシュボードにサポート付きで固定されたスマートフォンがあり、旅行中にアプリケーションから慣性センサーから値を読み取りました。
正確には、各登録の加速度計データ時間 (一定間隔) を秒単位で読み取りました。
そこで、垂直加速度から垂直変位に移行したいと思います。これを行うには、二重積分を行う必要があります。
オイラー法をやってみました。次のような初期状態から:
v0=0.v0=0
これは時間ゼロでの初期速度です。
x0=0.x0=0
これは時間ゼロの初期位置です。
定義、
deltaT=registrationinterval.deltaT=registrationinterval
(私の場合は0.04秒)
次に、登録が行われるたびに、次のことを行います。
vi=vi−1+ayi∗deltaT.vi=vi−1+ayi∗deltaT
xi=xi−1+vi∗deltaT.xi=xi−1+vi∗deltaT
ここでi
、現在およびi-1
前例を表します。
しかし、私が得たグラフはあまり現実的ではありません。実際には、速度と変位の両方が増加するだけであり、代わりに、垂直方向の変位が加速度グラフに似たものとして出てくるという効果が得られました。
この手順を適用すると、エラーも大きくなります。グラフが成長するだけで、垂直方向の振動が見られない可能性がありますか?
また、カルマンフィルターを事前に適用して信号をきれいにすることもできますが、解決策になる可能性がありますか?
それとも、積分の方法を変えて、ルンゲ・クッタからオイラーに切り替える必要がありますか? (ただし、最後に、どのように設定できるかについてはまったくわかりません)。
または誰かが私を助けることができるアルゴリズムを知っていますか?
役立つ場合は、登録されたデータの例を次に示します。
python - Python の分割ステップ フーリエ法
この投稿が長くなって申し訳ありませんが、分割ステップ法を使用して python で 2 次元のシュレディンガー方程式をシミュレートしようとしています。
この方程式の 1 次元の問題は、この投稿で説明されています: https://jakevdp.github.io/blog/2012/09/05/quantum-python/
別の次元を追加して、上記の投稿に従って演算子を変更しようとしましたが、別の次元を追加したので psi 関数をプロットする方法がわかりません。これは、次元を追加して変更したクラス方程式です。ヘルパー関数も変更しました。私は余分な次元を追加しました:
1 次元プロットとアニメーションのコードは次のとおりです。
c++ - Dynamic Arrayを使用したC ++の前方差分テーブル
静的配列を使用して前方差分テーブルを作成しましたが、動的配列を使用して解決できません。このテーブルを解決するのを手伝ってください。
これは静的配列のコードですが、動的配列で必要です