数学建模笔记-斜抛运动建模
1. 数学模型
质量为m的质点作斜抛运动,假定质点出射后,只受到恒力 m g m\bf{g} mg和空气阻力 f \bf{f} f作用,其中f的大小与速度大小的平方成正比,方向与速度相反,即 f = − k v 2 (1.1) f=-kv^2 \tag{1.1} f=−kv2(1.1)则质点始终在初速度确定的竖直平面内运动,在质点运动平面内以高度为0处一点为原点,水平方向为 x x x轴,竖直方向为 y y y轴建立坐标系。令 r \bf{r} r = [ x y ] T = \left[\begin{matrix}x&y\end{matrix}\right]^T =[xy]T为质点的位矢,由牛顿第二定律列出质点动力学方程 f + m g = m r ¨ (1.2) {\bf{f}}+m{\bf{g}}=m\ddot{\bf r} \tag{1.2} f+mg=mr¨(1.2)由于空气阻力方向与速度方向相反, f \bf{f} f可写为 f = − k v 2 e = − k [ x ˙ x ˙ 2 + y ˙ 2 y ˙ x ˙ 2 + y ˙ 2 ] (1.3) {\bf{f}}=-kv^2{\bf{e}}=-k\left[\begin{matrix}\dot{x}\sqrt{\dot{x}^2+\dot{y}^2}\\\dot{y}\sqrt{\dot{x}^2+\dot{y}^2}\end{matrix}\right] \tag{1.3} f=−kv2e=−k[x˙x˙2+y˙2y˙x˙2+y˙2](1.3)式中 e = [ 1 / 1 + y ′ 2 y ′ / 1 + y ′ 2 ] T {\bf{e}}=\left[\begin{matrix}1/\sqrt{1+y'^2}&y'/\sqrt{1+y'^2}\end{matrix}\right]^T e=[1/1+y′2y′/1+y′2]T为质点速度方向的单位矢量.由此,式(1.2)可写成一个二阶微分方程组 { m x ¨ = − k x ˙ x ˙ 2 + y ˙ 2 m y ¨ = − k y ˙ x ˙ 2 + y ˙ 2 − m g (1.4) \begin{cases}m\ddot{x}=-k\dot{x}\sqrt{\dot{x}^2+\dot{y}^2}\\m\ddot{y}=-k\dot{y}\sqrt{\dot{x}^2+\dot{y}^2}-mg\end{cases}\tag{1.4} {
mx¨=−kx˙x˙2+y˙2my¨=−ky˙x˙2+y˙2−mg(1.4)再令 z 1 = x ˙ , z 2 = y ˙ z_1=\dot{x},z_2=\dot{y} z1=x˙,z2=y˙方程组(1.4)化为形如 Y ′ = f ( t , Y ) (1.5) {\bf Y'}={\bf f}(t,{\bf Y})\tag{1.5} Y′=f(t,Y)(1.5)的标准形式 { z 1 ˙ = − k z 1 z 1 2 + z 2 2 / m z 2 ˙ = − k z 2 z 1 2 + z 2 2 / m − g (1.6) \begin{cases}\dot{z_1}=-kz_1\sqrt{z_1^2+z_2^2}/m\\\dot{z_2}=-kz_2\sqrt{z_1^2+z_2^2}/m-g\end{cases}\tag{1.6} {
z1˙=−kz1z12+z22/mz2˙=−kz2z12+z22/m−g(1.6)
就可以用MATLAB中提供的函数求解了。
2. MATLAB建模
2.1 MATLAB解常微分方程
很多常微分方程难以求出解析解,需要运用数值解法,如方程组(1.6)。MATLAB提供了如ode45、ode23、ode113等函数可以解出形如式(1.5)的常微分方程(组)的数值解,通用用法为
[T,Y] = solver(fun,tspan,y0)
讯享网
solver可用ode45、ode23、ode113中的任意一个替代,fun为等式右边的 f \bf f f向量,它所代表的M文件须有如下形式
讯享网function dy = fun(t,y) dy = ...
不管是否在fun中用到,fun一定有两个参数t和y。tspan为求解区间向量,y0为初值向量。返回值中T是自变量的取值,Y的各列为数值解。对由一个高阶常微分方程化为的方程组。Y(:1)是对应t的初值解,Y(:n)为对应t处初值解的n-1阶导数。
2.2 编程求轨迹
先用上述方法解出 z 1 , z 2 z_1,z_2 z1,z2(即 v x , v y v_x,v_y vx,vy),再对分速度分别进行数值积分则可得到轨迹上的点 ( x , y ) (x,y) (x,y),最后可使用plot()函数绘出轨迹图。下面是代码
m = 2; %质点质量kg k = 0.50; %空气阻力f = -k * v^2,国际单位 g = 9.8; %重力加速度 theta = pi / 4; %出射仰角rad v0 = 20; %初速度大小 vx0 = v0 * cos(theta); vy0 = v0 * sin(theta); z0 = [vx0, vy0]; %构造微分方程组 x0 = 0; y0 = 0; f = @(t,z) [-k * z(1) * sqrt(z(1)^2 + z(2)^2) / m; -k * z(2) * sqrt(z(1)^2 + z(2)^2) / m - g]; [T, Z] = ode45(f, [0, 1.5], z0); vx = Z(:,1); vy = Z(:,2); x = x0; y = y0; for i = 1:length(T)-1 %手动数值积分 tempx = x(i) + vx(i) * (T(i+1) - T(i)); tempy = y(i) + vy(i) * (T(i+1) - T(i)); x = [x;tempx]; y = [y;tempy]; end plot(x, y)
运行效果如图

参考文献
司守奎《数学建模算法与应用》

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/51539.html