====== Differences ====== This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
gibson:teaching:fall-2013:math445:lab11 [2013/12/02 10:31] gibson created |
gibson:teaching:fall-2013:math445:lab11 [2013/12/05 09:10] (current) szeto |
||
---|---|---|---|
Line 25: | Line 25: | ||
</code> | </code> | ||
- | Write a Matlab script to plot the trajectory of a cannonball subject to the above equations of motion and shot with an initial speed of 100 m/s at an angle $\theta$ above the horizontal. In the same plot, show the trajectory in the (x,y) plane of the cannonball with and without air resistance. Use your script to answer the following questions: | + | **Problem 1:** Write a Matlab script to plot the trajectory of a cannonball subject to the above equations of motion and shot with an initial speed of 100 m/s at an angle $\theta=\pi/4$ above the horizontal. Produce a plot of the trajectory in the (x,y) plane of the cannonball with and without air resistance, both in the same plot. |
- | (a) How far does the cannonball go in x with and without air resistance, if you shoot it at $\theta = \pi/4$? | + | **Problem 2:** Answer the following questions. You might need to modifying your script to answer the questions |
- | (b) What initial angle gives the farthest range with air resistance? | + | (a) How far does the cannonball go in x with and without air resistance, if you shoot it at $\theta = \pi/4$? [Hint: set $\mu=0$ to compute the trajectory without air resistance.] |
+ | |||
+ | (b) What initial angle $\theta$ gives the farthest range with air resistance? | ||
%%(c)%% If $\theta = \pi/4$, how much do you have to increase the initial velocity so the x distance is as large as it is without air resistance? | %%(c)%% If $\theta = \pi/4$, how much do you have to increase the initial velocity so the x distance is as large as it is without air resistance? | ||
- | Answering these questions with any precision will require some cleverness and a number of Matlab programming concepts you've learned through the semester. | + | Hints: It's probably easiest to answer (a)-%%(c)%% if you turn your script into a function ''xdistance = projectile(v0, theta)'' that returns the distance the projectile travels as a function of the initial velocity and angle. |
+ | In other words, create a new function "projectile.m" | ||
+ | <code> | ||
+ | function xdistance = projectile(v0,theta) | ||
+ | |||
+ | rho_air = 1.28; % kg/m^3, density of air | ||
+ | rho_iron = 7870; % kg/m^3, density of iron 7.87 gm/cm^3 == 0.00787 kg/(0.01m)^3 = 7870 kg/m^3 | ||
+ | C_D = 1; % drag coefficient for sphere | ||
+ | g = 9.81; % m/s^2, acceleration due to gravity | ||
+ | . | ||
+ | . | ||
+ | . | ||
+ | f = @(t,x) [ ....]; | ||
+ | |||
+ | [t,x]= ode45(f,[0:0.1:200] ,[ 0,0,v0*cos(theta), v0*sin(theta) ); | ||
+ | |||
+ | xdistance = interp1(x(50:end,2), x(50:end,1), 0); % This is how you can compute ''xdistance'' | ||
+ | % accurately from an ''x,y'' trajectory using interpolation. | ||
+ | % It will return the value of $x$ for which $y=0$, i.e. | ||
+ | % where the cannonball hits the ground. | ||
+ | |||
+ | end | ||
+ | </code> | ||
+ | |||
+ | Once your function works, play around with the parameters ''v0, theta'' to answer the questions. | ||
+ | On the command line, you can USE this function like this. | ||
+ | <code> | ||
+ | xdistance = projectile(100,pi/2) | ||
+ | xdistance = projectile(100,pi/4) | ||
+ | xdistance = projectile(100,pi/8) | ||
+ | </code> | ||
+ | |||
+ | |||
+ | If your xdistance is a NaN, you may have to increase the number 50 in the interp1 function (1000 might be good, that is roughly half the length of [0:0.1:200]). | ||
+ | |||
+ | |