私はこの1を使用して 2 次微分方程式を解こうとしましたが、それを正しく行うことができず、オンラインで役立つものは何も見つかりませんでしたが、進歩したと思います。
私はdsolveを使用しました。
syms x(t) v(t) fi(t)
[x(t), v(t)] = dsolve(diff(x) == v, diff(v) == fi/m, x(0) == [-L, -L], v(0) == [5, 10] )
それは私に与えます;
x(t) =
int(fi(x)/5, x, 0, t, 'IgnoreSpecialCases', true, 'IgnoreAnalyticConstraints', true) - 5
v(t) =
C2 + t*(int(fi(x)/5, x, 0, t, 'IgnoreSpecialCases', true, 'IgnoreAnalyticConstraints', true) - 5) + int(-(x*fi(x))/5, x, 0, t, 'IgnoreSpecialCases', true, 'IgnoreAnalyticConstraints', true)
今、結果を解釈するのに助けが必要で、この結果を使用して ode45 から何かを取得できるかどうか疑問に思っています。また、力場を移動する 500 個の粒子のシミュレーションの参照軌道として、解をプロットしたいと考えています。
ODE45 を使用:
function dxdt = solution(t,y0)
frprintf('Second stop')
.....
dxdt = [x, v]
end
メインファイルから呼び出します:
t:dt:t_f
y0 = [x0,v0]
fprintf('first stop')
[x, v] = ode45(@solution, y0, t)
コードがスムーズに実行される場合、「最初のストップ、2番目のストップ、3番目のストップ」と「4番目のストップ」が出力されるように設定しました。最初のストップのみが出力され、エラーが発生します。