我一直在尝试使用这个1解决二阶微分方程,但是我无法正确解决,并且在网上没有发现任何有用的信息,但我相信我已经取得了进展。
我用过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)
我已经设置好了,如果代码运行顺利,它会打印“第一站,第二站,第三站”和“第四站”,它只打印出第一站,这就是我得到错误的地方。