云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 4 第四章

4 第四章

  • 62 次阅读
  • 3 次下载
  • 2026/1/27 14:08:13

vy0=v0sinθ (4.10)

假设一个小球的初始位置为(x0,y0)为(0,0),初速度为20m/s,水平速度和合速度之间的夹角为θ度,编写一个程序,画出这个小球的轨迹,并计算小球再次落地与初始位置之间的距离。这程序应当能画出多个抛物线,θ的取值从5到85度,每隔10度取一次,计算水平位移,θ的取值从0到90度,每隔1度取一次。最终应当确定那一个θ值使得水平位移最大。还有打印不同的抛物线时要用不同的颜色。

答案:

为了解决问题,我们必须知道这个小球落地的时间。然后我们4.7到4.10计算出小球的位置。如果多次取不同的值,我们将画出小球的轨迹。

小球落地的时间T,可以通过公式4.7得到。满足y(t)=0。

y(t)?y0?vyot?0?0?vyot?12gt 2 (4.7)

12gt 20?(vyo?t=0舍去,故得到下面的值。

1gt)t 2

(4.11)

t2??2vy0g从问题中我们可知,小球的初始位置为(x0,y0)为(0,0),初速度为20m/s,计算水平位移,θ的取值从0到90度,每隔1度取一次。最后我们从基础物理学的课本可知,地球的重力加速度为9.81m/s2。

1. 陈述问题

当一个小球以初始角度θ,初速度v0抛出计算这个小球的落地位移。θ的取值从0到90度,每隔1度取一次。确定那一个角度的水平位移最大。用出一系列的抛物线,这时θ的取值从5到85度,每隔10度取一次。用不同的颜色且粗一点的线画出落地位移最大的抛物线。

2. 定义输入量和输出量根据问题的定义,我们知道不需要输入量。输出为水平位移为最大时的θ角和指定抛物线的图象。

3. 设计算法问题分为5大步 Calculate the range of the ball for θ between 0 and 90o Write a table of ranges Determine the maximum range and write it out Plot the trajectories for θ between 5 and 85o Plot the maximum-range trajectory 因为我们精确地知道循环重复的次数,所以在这里用for循环是合适的。我们现在开始定义每一个大步骤的伪代码。为了计算每一个角度小球的落地位移,我们首先应当通过公式(4.9)和(4.10)计算水平初速度和竖直初速度。然后通过4.11计算出小球落地的时间。最后通过4.7计算出落地位移。具体的伪代码如下所示。注意在用trigonometric函数之前,我们必须把角度转化为弧度。 Create and initialize an array to hold ranges for ii = 1:91 theta ← ii – 1; vxo ← vo * cos(theta * conv); vyo ← vo * sin(theta * conv); max_time ← -2 * vyo / g; range(ii) ← vxo * max_time; end 下一步,写出落地的表。伪代码如下 Write heading

24

for ii = 1:91 theta ← ii – 1; print theta and range; end 我们可以用max函数计算最大落地位移。调用这个函数返回最大值和它的位置。伪代码如下 [maxrange index] ← max(range); Print out maximum range and angle (=index -1); 我们将用for循环嵌套来计算和画出抛物线。。为把所有抛物线都显示在屏幕上,在第一个抛物线的语句后,加上hold on命令。每画一个抛物线,就要用到一个hold on命令。在画最后一个抛物线时要用到hold off命令。我们将在抛物线上取21个重要的点,并找了这些的位置。我们将画出这些点。伪代码如下: for ii = 5:10:85 % Get velocities and max time for this angle theta ← ii – 1; vxo ← vo * cos(theta * conv); vyo ← vo * sin(theta * conv); max_time ← -2 * vyo / g; Initialize x and y arrays for jj = 1:21 time ←(jj – 1) * max_time / 20; x(time) ← vxo * time; y(time) ← vyo * time + 0.5 * g * time^2; end plot(x,y) with thin green lines Set \end Add titles and axis labels 最后,用不同的颜色且粗一点的线画出落地位移最大的抛物线。 vxo ← vo * cos(max_angle * conv); vyo ← vo * sin(max_angle * conv); max_time ← -2 * vyo / g; Initialize x and y arrays for jj = 1:21 time ← (jj-1) * max_time / 20; x(jj) ← vxo * time; y(jj) ← vyo * time + 0.5 * g * time^2; end plot(x,y) with a thick red line hold off 4. 转化matlab语句 % Script file: ball.m % % Purpose: % This program calculates the distance traveled by a ball % thrown at a specified angle \% velocity \% ignoring air friction and the Earth's curvature. It % calculates the angle yielding maximum range, and also % plots selected trajectories. % % Record of revisions: % Date Programmer Description of change

25

% ==== ========== ===================== % 12/10/97 S. J. Chapman Original code % % Define variables: % conv Degrees to radians conv factor % gravity Accel. due to gravity (m/s^2) % ii, jj Loop index % index Location of maximum range in array % maxangle Angle that gives maximum range (deg) % maxrange Maximum range (m) % range Range for a particular angle (m) % time Time(s) % theta Initial angle (deg) % traj_time Total trajectory time (s) % vo Initial velocity (m/s) % vxo Xcomponent of initial velocity (m/s) % vyo Ycomponent of initial velocity (m/s) % x Xposition of ball (m) % y Yposition of ball (m) % Constants conv = pi / 180; % Degreestoradians conversion factor g = -9.81; % Accel. due to gravity vo = 20; % Initial velocity %Create an array to hold ranges range = zeros(1,91); % Calculate maximum ranges for ii = 1:91 theta = ii - 1; vxo = vo * cos(theta*conv); vyo = vo * sin(theta*conv); traj_time = -2 * vyo / g; range(ii) = vxo * traj_time; end % Write out table of ranges fprintf ('Range versus angle theta:\\n'); for ii = 1:91 theta = ii - 1; fprintf(' - %8.4f\\n',theta, range(ii)); end % Calculate the maximum range and angle [maxrange index] = max(range); maxangle = index - 1; fprintf ('\\nMax range is %8.4f at - degrees.\\n',maxrange, maxangle); % Now plot the trajectories for ii = 5:10:85 % Get velocities and max time for this angle theta = ii; vxo = vo * cos(theta*conv); vyo = vo * sin(theta*conv); traj_time = -2 * vyo / g; % Calculate the (x,y) positions x = zeros(1,21); y = zeros(1,21); for jj = 1:21 time = (jj - 1) * traj_time/20; x(jj) = vxo * time; y(jj) = vyo * time + 0.5 * g * time^2; end

26

plot(x,y,'b'); if ii == 5 hold on; end end % Add titles and axis lables title ('\\bfTrajectory of Ball vs Initial Angle \\theta'); xlabel ('\\bf\\itx \\rm\\bf(meters)'); ylabel ('\\bf\\ity \\rm\\bf(meters)'); axis ([0 45 0 25]); grid on; % Now plot the max range trajectory vxo = vo * cos(maxangle*conv); vyo = vo * sin(maxangle*conv); traj_time = -2 * vyo / g; % Calculate the (x,y) positions x = zeros(1,21); y = zeros(1,21); for jj = 1:21 time = (jj - 1) * traj_time/20; x(jj) = vxo * time; y(jj) = vyo * time + 0.5 * g * time^2; end plot(x,y,'r','LineWidth',3.0); hold off 5. 检测程序 为了检测这个程序,我们计算手动计算了一些值,用来程序的输出结果作比较。 θ 0o 5o 40o 45o vxo=vocosθ 20m/s 19.92m/s 15.32m/s 14.14m/s vyo=vosinθ

0 1.74m/s 12.86m/s 14.14m/s t2=-2vyo/g

0 0.355s 2.621s 2.883s x=vxot2 0 7.08m 40.15m 40.77m 当ball程序运行时,将91行含有角度和位移的结果。为了节省空间我们只打印其中的一部分。 >> ball Range versus angle theta: 0 0.0000 1 1.4230 2 2.8443 3 4.2621 4 5.6747 5 7.0805 ... 40 40.1553 41 40.3779 42 40.5514 43 40.6754 44 40.7499 45 40.7747 46 40.7499 47 40.6754 48 40.5514 49 40.3779 50 40.1553 ...

27

搜索更多关于: 4 第四章 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

vy0=v0sinθ (4.10) 假设一个小球的初始位置为(x0,y0)为(0,0),初速度为20m/s,水平速度和合速度之间的夹角为θ度,编写一个程序,画出这个小球的轨迹,并计算小球再次落地与初始位置之间的距离。这程序应当能画出多个抛物线,θ的取值从5到85度,每隔10度取一次,计算水平位移,θ的取值从0到90度,每隔1度取一次。最终应当确定那一个θ值使得水平位移最大。还有打印不同的抛物线时要用不同的颜色。 答案: 为了解决问题,我们必须知道这个小球落地的时间。然后我们4.7到4.10计算出小球的位置。如果多次取不同的值,我们将画出小球的轨迹。 小球落地的时间T,可以通过公式4.7得到。满足y(t)=0。 y(t)?y0?vyot?0?0?vyot?12gt 2 (4.7) <

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com