問題タブ [differential-equations]
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 で常微分方程式 (ODE) の系を解く方法
次の形式の常微分方程式系を解かなければなりません。
ここで、x と y は調べる必要のある変数で、s は独立変数です。残りは定数です。私はこれをode45で解決しようとしましたが、これまでのところ成功していません:
@yprime には連立方程式があります。次のエラー メッセージが表示されます。
YPRIME は長さ 0 のベクトルを返しますが、初期条件ベクトルの長さは 2 です。YPRIME によって返されるベクトルと初期条件ベクトルの要素数は同じでなければなりません。
何か案は?ありがとう
matlab - DE のシステムに Runge-Kutta を実装する
MATLABで DE のシステムにルンゲ クッタ法を実装しようとしています。正しい答えが得られません。コードまたは実行に使用するコマンドに問題があるかどうかわかりません。
これが私のコードです:
私はこの問題でそれをテストしようとしています。ここに私のコマンドと出力があります:
>> U1 = @(t, u) 3*u(1) + 2*u(2) - (2*t^2 + 1)*exp(2*t);
>> U2 = @(t, u) 4*u(1) + u(2) + (t^2 + 2*t - 4)*exp(2*t);
>> a = 0; b = 1; アルファ = [1 1]; m = 2; h = 0.2; N = (b - a)/h;
>> RKSystems(a, b, m, N, alpha, {U1 U2});
t = 0.00; w(1) = 1.0000000000; w(2) = 1.0000000000;
t = 0.20; w(1) = 2.2930309680; w(2) = 1.6186020410;
t = 0.40; w(1) = 5.0379629523; w(2) = 3.7300162165;
t = 0.60; w(1) = 11.4076339762; w(2) = 9.7009491301;
t = 0.80; w(1) = 27.0898576892; w(2) = 25.6603894354;
t = 1.00; w(1) = 67.1832886708; w(2) = 67.6103125539;
matlab - MATLAB - 追跡曲線 (捕食者/被食者)
私の工学クラスでは、「自明ではない」捕食者/被食者追跡問題をプログラミングしています。
状況の要点は次のとおりです。捕食者から逃げようとしている獲物がいます。それぞれを MATLAB でアニメーション化できる粒子としてモデル化できます (このコーディング言語を使用する必要があります)。
獲物: 捕食者よりも簡単に操縦 (回転) できる 捕食者: 獲物よりも速く動くことができる
捕食者と被食者の両方のコードを作成する必要があり、クラスの競争で使用されます。
基本的に、最終製品は次のようになります: http://www.brown.edu/Departments/Engineering/Courses/En4/Projects/pred_prey.gif
目標は、相手チームの獲物を最短時間で捕まえることであり、自分の獲物が相手チームの捕食者に捕まえられないようにすることです (または、少なくとも長期間逃げることができます)。
具体的な設計上の制約は次のとおりです。 3. 設計上の制約: 捕食者と獲物は xy 平面内でのみ移動できます シミュレーションは 250 秒間実行されます。捕食者も被食者も、次の 3 つの力を受けます。(a) 推進力。(b) 粘性抗力。(c) ランダムな時変力。(与えられたすべての式) 1. 推進力は、競合する 2 つのグループによって提供される関数によって決定されます。捕食者/被食者の力を計算する際に rand() 関数を使用することはできません。ランダムな力は、提供されたスクリプトによって生成されたものでなければなりません。(ODE ソルバーがランダムな力を持つ EOM を統合することは不可能であり、無限ループに陥ります)。大会に向けて、競合他社の軌跡を計算してアニメーション化し、各コンテストの勝者を決定する MATLAB コードを提供します。テスト コードは SI 単位で動作します。
何らかの戦略に役立つ可能性のあるリソースを探しています。基本的な追跡曲線を見てきましたが、獲物が一直線に動いていない例をいくつか見てみたいと思います。他のコーディングのアドバイスや戦略は大歓迎です!
c++ - 計算能力が2分の1の高速アルゴリズムはありますか?
平面制限3体問題を解くためのプログラムを書いています。その方程式は以下のとおりです。この関数は、位置と速度の導関数を計算し、それらを配列に書き込みます。
したがって、位置ベクトルの2乗を計算してから、3/2の累乗にする必要があります。これらの操作は計算時間の大部分を占めると思います。
今、私はmath.hのpow関数を使用しています。このパワーを計算するための別のより高速なアルゴリズムはありますか?私は高速の逆平方根を使用しようとしましたが(そして後でそれを立方体にします)、それは私の目的にはあまりにも不正確な値を与え、より長く機能します(おそらく立方体のため)。
ありがとう!
microcontroller - マイクロコントローラーでODEを解く
マイクロコントローラーで2つの常微分方程式を解きたい。100msごとに評価する必要があります
基本的に私はオイラー統合を使用することを考えました(Runge-Kute I)
エラーは0.001未満になると思います。そのエラー率に達するまで実行する必要がある反復回数を決定するにはどうすればよいですか?
wolfram-mathematica - NDSolve の関数が "If" と等しくないのはなぜですか?[更新 1]
私の質問は次のとおりです。なぜrhsexpr
機能するのにrhsfunc
機能しないのですか。ありがとう。:)
rhsfunc
と定義されている:
rhsexpr
と定義されている:
rhsexpr
動作します。
rhsfunc
機能せず、t == 0 で導関数に数値以外の値が発生しました
更新 1
実際、私はrhsfunc
m@ と同じように を定義しています。
c++ - 推力で使用されるodeintとの統合を停止します
ODEのシステムをodeintライブラリと統合し、一連のポイントで並列に推力をかけようとしています(これは、多くの異なる初期条件を持つ同じODEを意味します)。特に、私は適応ステップサイズアルゴリズムrunge_kutta_dopri5を使用しています。アルゴリズムが失敗し、ステップサイズが小さくなり、統合プロセス全体が非常に遅くなるポイントがいくつかあります。
特定のテストに失敗した場合に、セットの一部のポイントでのみ統合プロセスを停止する方法はありますか?
私の特定のケースでは、重力の問題を積分しているので、ポイントがアトラクタに近づいたときに積分を停止したいので、距離は一定の制限未満です。
シリアルコンピューティングでは、この質問stepper.try_step
の背後にある考え方に多かれ少なかれ示されているように、これは関数を使用したカスタムwhileループによって実行できると思います。
推力を使用した並列コンピューティングでこれをどのように実行できますか?
ありがとう。
r - 微分方程式の近似:データセットをRの微分方程式に近似する方法
データセットの場合:
そして、このデータを以下の微分方程式に当てはめたいと思います。
ここで、Cは濃度、データセットの時間tです。これにより、kの結果も得られます。誰かが私にRでこれを行う方法の手がかりを教えてもらえますか?ありがとう。
r - Rの微分方程式に複数のパラメータを適合させる方法は?
このようなデータセットで
このデータを以下のように定義されたモデルに当てはめたい
このページ ( http://www.inside-r.org/packages/cran/FME/docs/modCost ) のリファレンスを参考にして、次のコードを作成しました。
ただし、次の警告メッセージが表示されました。
どこに問題があるのか誰か教えてください。それともどうすれば手っ取り早く?ありがとう。