問題タブ [ode]
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 - matlabode45パラメーターの取得
Matlabでode45を試しています。パラメータをode関数に渡す方法を学びましたが、まだ質問があります。車の軌道(速度プロファイル)を計算したいとします。たとえばgetAcceleration
、車の加速度だけでなく、適切なギアも与える関数があります。[acceleration, gear] = getAcceleration(speed,modelStructure)
ここmodelStructure
で、は車のモデルを表します。
ode関数は次のようになります。
次に、このようにOde45インテグレーターを呼び出します。
問題は、ベクトル格納ギアを取得するにはどうすればよいですか?私はのようなものを持っているべきですか、それともベクトル内にある[t,y,gear]=ode45(....)
べきですか?gear
y
私は自分のコードに取り組んでおり、イベント関数を使用して、車の「ギア」の変更を(イベントとして)取得できるようになりました。今、私は同じコードに関連する新しい問題を抱えています。de'dy'ベクトルを評価すると、さらに値Zを取得できると想像してください。これにより、加速度計算(getAcceleration)の呼び出しを大幅に高速化できます。
また、初期条件でZを計算できると仮定します。問題は、Z導関数を計算できないことです。
Z値を渡して、それを統合せずにステッピングをスローする方法はありますか?
みんなありがとう。
matlab - ode45/fsolve による BVP の射撃法解法の問題
シューティング法を使用して、MATLAB で境界値問題を解こうとしています。ただし、関数を fsolve に渡そうとすると、次のような警告が表示されます。時刻 t で許容される最小値 (2.273737e-013) よりもステップ サイズを小さくしないと、積分許容誤差を満たすことができません。
さまざまな ODE ソルバーを使用したり、ODE ソルブと fsolve の許容誤差を変更したりするなど、一般的な回避策をいくつか試しましたが、役に立ちませんでした。現在、自分のパラメータで fsolve を実行しても何も変わらず、最初の推測と同じです。
メイン スクリプト ファイルのコードと、fsolve によって呼び出される関数ファイルを含めました。
matlab - Matlab-3次微分方程式を解く
ODE45関数を使用してこの方程式を解くにはどうすればよいですか?
私はこれを試しました:
しかし、Xの部分を方程式に入れる必要があります-方法がわかりません...
matlab - MATLAB: ode45 の使用中に 2 つのイベント値を持つことは可能ですか?
移動方程式の ode45 計算に、位置と時間という 2 つの制限が必要です。タイムイベントはすでに機能していますが、位置を制限するために別のイベントを追加できるかどうか、またその方法がわかりません。編集: また、1 つの ODE 方程式で結合された多くの異なる粒子があり、それらがすべて異なる速度で移動するため、「屋根」に到達したら個別に停止する必要があります...イベントを通じてこれを達成できますか? これをどのように行うかについてのアイデアはありますが、非常に複雑で、おそらく非常に遅くなるでしょう...
matlab - Matlabでode45を使用した投射物の動き
Matlabでドラッグを使用して発射体の動きをモデル化しようとしています。すべてが完璧に機能します....「弾丸」が地面に当たったときに停止させる方法がわからない場合を除きます。
私は最初に反復ループを試し、データ配列を定義し、y値が負の場合にその配列のセルを空にしました....残念ながら、常微分方程式ソルバーはそれをあまり好きではありませんでした。
これが私のコードです
これはy=0のときにイベントを定義し、発射物を停止すると思いましたが、何もしません。私は何が間違っているのですか?
matlab - Matlab ODE ソルバーを使用した収束
こんにちは、初期値 ODE 問題を解いており、収束をプロットできるようにしたいと考えています。ドキュメントをチェックインしたところ、タイムステップごとにエラーが計算されることがわかりましたが、この値を返す方法が見つかりません。おそらく出力関数(odesetから)をいじることによって、誰かが何かアイデアを持っていますか。ありがとう
matlab - オイラー法を実装するMATLAB関数を作成しますか?
最初の点y(t0)=y0を入力としてy'(t)= a * y(t)+ bの形式で一次常微分方程式を取り、解の最初の15点を計算するMATLAB関数を作成する必要があります。 。また、最初の15ポイントの解曲線を描画します。そして、解きたい方程式は; y'(t)= 4 * y(t)+1であり、初期点はy(0)=0です。
この関数について、次のコードを記述しましたが、これによりyに関するエラーが発生します。オイラー関数を正しく実装するにはどうすればよいですか?また、解曲線をどのように描くことができるかを判断できませんでした。
function - イベントの「値」の関数で時間を使用するMatlab odeソルバー
私は広範囲に検索しましたが、この問題を抱えているのは私だけではないと思っていましたが、私だけのようです.
私はode15sを介して頌歌を解いており(私の問題は難しいかもしれません)、「イベント」オプションを使用して関心のあるポイントを見つけています。問題は、「値」で使用する方程式が(とりわけ)特定の時間に依存しているため(値 = f(t、y、y))、現在の時間を渡す方法が見つからないことです。この関数では、y ベクトルのみが使用可能です。
誰にもアイデアはありますか?よろしくお願いします。残りの休暇をお楽しみください。
python - 離散化された値との ODE 統合
scipy.integrate.ode
ソルバーを使いたい。呼び出し可能な関数f
は、離散点の配列としてのみ定義できます (前の反復からの統合の結果に依存するため)。しかし、ドキュメントから、インテグレーターは callable が連続関数であることを期待しているようです。ある種の補間を行う必要があると思います。ソルバーはこれを単独で処理できますか、それとも補間ルーチンを作成する必要がありますか? それを説明するscipyのドキュメント/チュートリアルはありますか?