我在拉格朗日力学中遇到了以下微分方程系统 . 您能否建议一种数值方法,以及如何解决它的相关链接和参考 . 另外,Matlab或Mathematica上的实现是否更短?
mx(y点)^ 2 mgcosy-Mg - (M = m)(x双点)= 0
gsiny 2(x点)(y点x(y双点)= 0
其中(x点)或(y点)= dx / dt或dy / dt,双点表示双导数wrt时间 .
你可以创建一个向量Y =(x y u v)'
dx/dt = u dy/dt = v du/dt = d²x/dt² dv/dt = d²y/dt²
有可能从方程中分离出二阶导数,所以得到了
d²x/dt² = (m*g*cos(y) + m*x*v² - M*g)/(M-m) d²y/dt² = -(g*sin(y) - 2*u*v)/x
现在,您可以尝试使用标准ODE求解器来解决它,例如Runge-Kutta方法 . Matlab有一组解算器,例如ode23 . 我没有测试他跟随,但它会是这样的:
function f = F(Y) x = Y(1); y = Y(2); u = Y(3); v = Y(4); f = [0,0,0,0]; f(1) = u; f(2) = v; f(3) = (m*g*cos(y) + m*x*v*v - M*g)/(M-m); f(4) = -(g*sin(y) - 2*u*v)/x; [T,Y] = ode23(F, time_period, Y0);
1 回答
你可以创建一个向量Y =(x y u v)'
有可能从方程中分离出二阶导数,所以得到了
现在,您可以尝试使用标准ODE求解器来解决它,例如Runge-Kutta方法 . Matlab有一组解算器,例如ode23 . 我没有测试他跟随,但它会是这样的: