問題タブ [runge-kutta]
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のルンゲ・クッタ連続法による運動方程式
- 運動方程式は次の式で与えられます。
、ここで、m、b は質量と減衰の定常値です。時変項 f(t) は励起電力で、q(t) は一般化された変位です。
- 私はそれを解決しました:
- そして、[t、x] = ode23( 'rightside'、tspan、x0)を介してMatLabで解決する必要があります。
- f(t) と k(t) は、Matlab のようなフーリエ級数を介して複素数で解決しました。
% f(t) の複素フーリエ級数
% k(t) の複素フーリエ級数
- そして、私たちは知っています:
ありがとうございました。
- 次のような同様の原則である必要があります。
- と:
- しかし、f(t) と k(t) を取得する方法がわかりません。
python - Pythonで関数に関数を渡すには?
私はPythonの初心者/中級者です。4 次のルンゲクッタ法 (RK4)を Python にコーディングしました。基本的には振り子を解いていますが、それはここでは重要ではありません。
RK4 メソッドを次のように改善したいと考えています。関数 f を RK4 関数に直接渡すことができるようにしたいです。つまり、RK4(y_0, n, h) は RK4(f,y_0,n,h) になる必要があります。これには、この 1 つの振り子だけでなく、他のシステムを記述する他の f 関数に RK4 を使用できるという大きな利点があります。
単純な関数を RK4 に渡すだけで遊んでみましたが、何か間違ったことをしています。Pythonでこれを行うにはどうすればよいですか?
matlab - Runge Kutta を使用してベッセル関数を解く
私は自分のクラスの課題に取り組んでおり、選択したプログラム (Matlab を選択しました) を使用してコードを記述し、4 次ルンゲクッタ法を使用してベッセル関数の微分方程式を解くことになっています。参考までに、ベッセル関数 DE は次のとおりです。
x^2*(J_n)''+x*(J_n)'+(x^2-n^2)*J_n=0.
これを 2 つの結合された 1 次 DE に分離するには、次のようにします。
(J_n)'=Z_n および
(Z_n)'+(1/x)*Z_n+[(x^2-n^2)/x^2]*J_n=0.
この課題の前に、Matlab やその他のプログラミング言語の経験はありません。Matlab に 'ode45' コマンドがあることは知っていますが、Matlab のコマンドに依存するのではなく、自分でコードを書くことになっています。これまでのところ、ベッセル関数の n=0 ケースに取り組んできましたが、関数をプロットしようとするとエラーが発生し続けます。私が持っている現在のエラーは、「「double」型の入力引数に対して定義されていない関数またはメソッド「J」です。しかし、このエラーを修正する方法も、コードが正しいかどうかもわかりません。どこが間違っているのか、またはこのコードを書く正しい方法は何か教えてもらえますか?
助けてくれてありがとう
python - Runge–Kutta RK4 は Verlet よりも優れていませんか?
ゲームの軌道ダイナミクスのいくつかの統合スキームをテストしているところです。ここで一定の適応ステップでRK4を取りました http://www.physics.buffalo.edu/phy410-505/2011/topic2/app1/index.html
そして、それを単純なベルレット統合(およびオイラーですが、パフォーマンスが非常に悪い)と比較しました。一定のステップを備えたRK4がベルレよりも優れているとは思えません。アダプティブステップを備えたRK4の方が優れていますが、それほどではありません。私は何か間違ったことをしているのだろうか?それとも、どのような意味で RK4 がベルレよりもはるかに優れていると言われていますか?
Force は RK4 ステップごとに 4 回評価されますが、verlet ステップごとに 1 回だけ評価されると考えられます。したがって、同じパフォーマンスを得るために、verlet の time_step を 4 倍小さく設定できます。時間ステップが 4 倍小さい場合、verlet は一定ステップの RK4 よりも正確であり、アダプティブ ステップの RK4 とほぼ同等です。
画像を参照してください: https://lh4.googleusercontent.com/-I4wWQYV6o4g/UW5pK93WPVI/AAAAAAAAA7I/PHSsp2nEjx0/s800/kepler.png
10T は 10 軌道周期を意味し、次の数字 48968,7920,48966 は必要な力の評価の数です。
Python コード (pylab を使用) は次のとおりです。
c - C で Runge Kutta を使用して 2 次偏微分方程式系を解く
ルンゲ クッタ アルゴリズムを使用して微分方程式系を解く問題があります。これまでのところ、2 次偏微分方程式を 2 つの結合方程式のセットに書き直しました。ここで、
は 2 つの式で、A、B、C、D は定数です。次のステップの値を取得するために、タイム ステップ dt ごとに次のように処理しました。
ここで、現在の時間ステップの L1 と L2 の値を使用して、係数を繰り返し計算します。
その結果、最後に係数を合計して重み付けすることで、L1 と L2 を取得します。私の問題は、4 つのタイム ステップの後にアルゴリズム全体が不安定になることです。
実現が技術的に正しいかどうかは誰にもわかりませんか? ありがとう!
c++ - C++ のルンゲクッタ (RK4) 導関数
こんにちは、C++ で動きの小さなシミュレーションを作成しました。オイラー法、ルンゲクッタ法、ミッドポイント法との違いを学生に示したかったのです。
しかし、Rungy-Kuttaモードに切り替えると、どこかでミスをして、素材ポイントがすべて消えてしまいました。私が犯した間違いは、solveRK4 メソッドにあります。添付ファイルの MinGW Developer Studio プロジェクト。mingw コンパイラ ディレクトリに配置するライブラリ フォルダもあります。: http://speedy.sh/CvDHj/LABO3.zip
'R' ボタンを押すと、'E' が Euler に、'M' が MidPoint に、RK4 に切り替わります。
問題は、solveRK4 関数のどこで間違いを犯したかです。
結果 (リリース) は次のようになります: http://speedy.sh/h28VP/zad3.exe R を押すと、ポイントが画面から消えます。
Punkt - Point Wektor - ベクトル
メイン:
構造:
vba - ルンゲ・クッタ法の添字が範囲外
VBA でアダプティブ ステップ サイズを使用してルンゲ クッタ法をプログラミングしていますが、エラー 9「下付き文字が範囲外です」が発生しました。誰かがそれを修正する理由と方法を理解するのを手伝ってもらえますか?
作成する必要があった 3 つの個別のサブルーチンと、3 つのプログラムすべてを実行するマクロの先頭を添付します。