User Tools

Site Tools


gibson:teaching:fall-2013:math445:lab11

====== Differences ====== This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
gibson:teaching:fall-2013:math445:lab11 [2013/12/05 07:16]
gibson
gibson:teaching:fall-2013:math445:lab11 [2013/12/05 09:10] (current)
szeto
Line 35: Line 35:
 %%(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?
  
-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. ​You can compute ''​xdistance''​ accurately from an ''​x,y''​ trajectory using interpolation:​+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)
  
-  ​xdistance = interpolate(x(2:end,2), x(2:end,1), 0); +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 
-That will return the value of $x$ for which $y=0$, i.e. where the cannonball hits the ground. Once your function works, play around with the parameters ''​v0,​ theta''​ to answer the questions. ​+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])
  
   ​   ​
gibson/teaching/fall-2013/math445/lab11.1386256600.txt.gz · Last modified: 2013/12/05 07:16 by gibson