Water Rockets in Flight: Calculus in Action George Ashline Department of Mathematics St. Michael’s College, Colchester, VT 05439 gashline@smcvt.edu Alain Brizard Department of Chemistry and Physics St. Michael’s College, Colchester, VT 05439 abrizard@smcvt.edu Joanna Ellis-Monaghan Department of Mathematics St. Michael’s College, Colchester, VT 05439 jellis-monaghan@smcvt.edu MATHEMATICAL FIELD: APPLICATION FIELD: TARGET AUDIENCE: PREREQUISITES: Calculus. Elementary rocketry. Students in either single or multivariable calculus. Trigonometry. Vector calculus for three-dimensional space curves; single-variable calculus for the simpler heightversus-time model. Use of a computer algebra system or graphing calculator for curve fitting. ABSTRACT We describe an easy and fun experiment using water rockets to demonstrate some of the concepts of multivariable calculus. After using video stills from a single water rocket launch to generate the raw data, we develop a model to analyze the rocket flight. Because of factors such as rocket propulsion and wind effects, the water rocket does not follow the parabolic projectile trajectory commonly found in textbooks. Instead, we use polynomial interpolation to calculate the X, Y, and Z coordinate functions of the rocket as a function of time during its entire flight. We then use methods from multivariable calculus to analyze the flight and to estimate quantities such as the maximum height reached by the rocket and curvature of the flight path that are not apparent from direct observation. Examination of first and second time derivatives of the rocket coordinates allows us to identify the thrusting, coasting, and recovery stages of the rocket flight, and comparison to the parabolic model shows the effects of the wind. We also offer two variations of the module. One is very similar to that described above, but uses a least-squares fit instead of polynomial interpolation to determine the coordinate functions. The other is a simpler model based on a one-variable polynomial fit giving the height of the rocket as a function of time, suitable for a first-semester Water Rockets in Flight Page 1 of 60 2/13/16 calculus course. The appendices include an optional overview of the curve-fitting techniques using linear algebra, a supplies list and procedure to launch and videotape a water rocket, an auxiliary set of video stills, and a complete Maple8 code for generating the results. Table of Contents 1. INTRODUCTION…………………………………………………………………. 2. SUPPLIES AND PROCEDURE………………………………………………...…… 2.1 SUPPLIES NEEDED…………………………………………………………. 2.2 LAUNCHING PROCEDURE…………….…………………………………… 2.3 RECORDING PROCEDURE…………….……………………………………. 3. THE WATER ROCKET FLIGHT…………………………………………………… 3.1 BUILDING BLUEPRINT AND VIDEO STILLS………………………………..… 3.2 APPARENT POSITION OF DATA POINTS…………………...……………….... 3.3 GROUND AND ELEVATION DIAGRAMS……………………………………... 4. DEVELOPING AND ANALYZING THE MODEL…………………………………….. 4.1 ESTIMATING ROCKET COORDINATES………………………………………. 4.2 MODELING THE FLIGHT PATH USING POLYNOMIAL INTERPOLATION………. 4.3 ANALYSIS OF THE FLIGHT…………………………………………………. 5. MODEL VARIATIONS……………………………………………………………. 5.1 MODELING THE FLIGHT PATH USING LEAST SQUARES FIT………………….. 5.2 SIMPLER HEIGHT VERSUS TIME MODEL……………………………………. 6. SOME COMMENTS ON THE MODELING…………………………………………... 7. APPENDICES ……………………………………………………………………. 7.1 ADDITIONAL VIDEO STILLS………………………………………...……… 7.2 MAPLE 8 CODE……………...……………………………………………. 7.3 CURVE FITTING………...…………………………………………………. 7.4 RESOURCES……………...……………………………………………….. 1. 2 6 6 7 8 8 8 12 12 14 14 17 18 29 29 30 35 39 39 42 56 59 Introduction Water rockets are cheap, re-usable, easy to launch, and have a very high fun-tonuisance ratio. They also provide a simple example of some of the fundamental aspects of a model rocket flight. Because of factors such as rocket propulsion and wind effects (which can be classified as systematic if the wind is steady or random if the wind is gusty), their flight paths are more complex than those of simple projectiles. The goal of this module is to model the flight path of a single water rocket launch and then use the tools of calculus to analyze the rocket’s performance. Most standard calculus textbooks include both one and two-dimensional parabolic models describing the flight of a projectile. In the one-dimensional case, the function Water Rockets in Flight Page 2 of 60 2/13/16 1 s t vt gt 2 models the vertical position of a projectile with respect to time t, where 2 g (= 9.81 meters/sec2) is the gravitational constant and v is the initial velocity. In the 1 two-dimensional case, the vector-valued function r t S cos t , S sin t gt 2 2 models the planar trajectory of a projectile, where S is the initial speed and is the initial launch angle as measured from the ground. In both cases, it is assumed that, other than the initial boost acceleration, gravity is the only force acting on the rocket (e.g., ari resistance and Coriolis effects associated with the rotation of the Earth are ignored). We originally wanted a simple and engaging experiment that would provide the raw data for using these models. However, we did not have ready access to a large windless space (such as a hangar) nor a mechanism to measure the initial velocity needed to illustrate these standard models. Rather than trying to fit the experimental data to a parabolic model, we chose instead to generate and analyze a single data set, and explore the vagaries introduced by wind and variable thrust. We then needed a suitable projectile. On the one hand, tossing a ball vertically into the air did not seem exciting enough. On the other hand, anything involving rocket propulsion by fuel combustion seemed a little too exciting and hence logistically too difficult. We wanted something cheap, easy, and safe. Although there is a lot of information about combustible-fuel model rockets (see Section 7.4), they move too fast for easy measurements and are too expensive. Water rockets are the perfect solution. Furthermore, their behavior is more varied than that of projectiles modeled by the parabolic functions. They have just enough complexity in their flight paths to provide an opportunity to put the skills and concepts learned in calculus to work in a substantial way. A water rocket consists of a tapered plastic chamber about 13 centimeters long with small fins and a little hole in the base. The chamber is partially filled with water, and then air is forced into the chamber with a manual air pump that clamps onto the base. This clamp is also the launch mechanism. See Figure 1. Water Rockets in Flight Page 3 of 60 2/13/16 Figure 1 compressed air water launch trigger (seals rocket to air pump while pumping, then pulls back to release the rocket) air pump When the rocket is released, the air and water escapes rapidly through the small hole in the base of the rocket, providing the power for the first stage of the rocket’s flight, the thrusting (or boost) stage. The rocket then continues to soar upwards, although more and more slowly, with now its acceleration only affected by gravity, air resistance and (possibly) wind; this second stage of the rocket’s flight is the coasting stage. The rocket then returns to the ground in the recovery stage (defined as the part of the rocket flight path from the time it reaches its maximum height until it lands). This terminology is borrowed from more sophisticated rockets that often have a recovery mechanism such as a parachute to minimize damage to the rocket upon landing. Water rockets, however, do not need parachutes since they are quite sturdy and, as long as they land on a soft surface such as turf, will be undamaged. Water rockets are quite lightweight, and hence even a slight crosswind can significantly affect their flight paths. We note that only cross-wind effects can cause the path of the rocket to exhibit non-planar features since gravity, thrust, and air resistance are all planar forces. Because of the additional forces acting on a water rocket, simple projectile models are inadequate for analyzing its flight path. We did find excellent papers by J.M. Prusa, “Hydrodynamics of a Water Rocket”, SIAM Review, 42, No. 4, 719-726, (2000), and G.A. Finney, “Analysis of a water-propelled rocket: A problem in honors physics”, Am. J. Phys., 68, 223-227 (2000), giving well-developed models for the flight path of a generic water rocket. However, the former is beyond the scope of a typical undergraduate calculus sequence, and the latter considers only height vs. time rather than the three-dimensional space curve which we wanted to consider. Furthermore, since these models require ideal launch conditions (e.g., windless conditions and perfectly vertical launches) that are very difficult to achieve in practice, we chose instead to Water Rockets in Flight Page 4 of 60 2/13/16 analyze a specific rocket-flight data set simply by fitting a smooth curve to a finite number of data points along the flight path. To get the raw data for the experiment, we videotaped the flight of a water rocket, with a building of known height in the background. On the day of the rocket launch, there was gusting wind of perhaps eight to twenty-four kilometers per hour (five to fifteen miles per hour), so naturally the rocket was blown off its planar (and parabolic) course. We noted the position of the rocket against the building in the video stills and then used building blueprints to measure the rocket’s horizontal and vertical positions with respect to the building. With basic trigonometry and the ground distances, we converted this information into estimates for the three-dimensional position of the rocket. Having found these coordinates, we then applied the curve-fitting capabilities of the computer algebra system Maple to construct a model of the flight path. Note that from the vantage point of a single video camera position, information concerning the depth position of the rocket is not available and, thus, non-planar cross-wind effects are not directly observable through the present analysis. Since we expect wind gusts to generically possess planar components, wind effects are expected to be characterized by segments of the flight path with zero curvature (i.e., with parallel velocity and acceleration vectors). With this model, we can use the tools of calculus to answer questions that could not be addressed just by watching the launch. For example, how high did the rocket go? How far did it travel? How sharp was its turn around? How long did the thrusting stage last? To what extent did wind effects modify the action of gravity? How far was the rocket blown off course by the wind? Answering these questions requires computing and analyzing the derivatives of the spatial coordinates (i.e., analyzing the velocity and acceleration vectors) and finding the Frenet-Serret curvature of the flight path (here, our model explicitly assumes a zero-torsion flight path). Although a planar parabolic-path model does not provide a good approximation of the rocket flight path, a comparison to our curve gives a good sense of the effects of the wind and thrust on the behavior of the rocket. Our decision to use 6th degree polynomials in our model came from a combination of common sense and experimentation. An even degree polynomial certainly is appropriate for modeling the height of a rocket flight. However, we found that 2nd and 4th degree polynomials did not capture the wind effects and did not fit the data points well. Polynomials of degree greater than six, as might be expected, fit the data points quite well, but were poor models for the flight. They varied too much laterally and “flattened out” at the top. Thus, for example, they could not be used to get good estimates of the maximum height. In the absence of air resistance and wind effects, there is no lateral acceleration, so the X(t) and Y(t) coordinate functions are expected to be linear in time t. However, we did observe wind effects, and hence used sixth degree polynomials for these coordinate functions as well to capture this phenomenon. This experimentation with different curves can be quite instructive though, and we highly recommend doing it to see the effects of the various parameters on a model. While most of this paper involves a three-dimensional space curve created with polynomial interpolation, we also include two possible ways of modifying the module. Water Rockets in Flight Page 5 of 60 2/13/16 One uses the least-squares fitting method instead of polynomial interpolation to fit the coordinate functions. This gives slightly different answers in the analysis, but this version is not substantially different from the polynomial-interpolation model. The other variation is a simpler model, a one-variable polynomial fit giving the height of the rocket as a function of time, suitable for a first semester calculus course. The remainder of this paper is organized as follows. In Section 2, we provide a list of supplies needed to carry out this experiment and a description of the launch procedure. In Section 3, we present the nine video stills used to generate the raw data for our model and introduce the ground and elevation diagrams needed to convert the apparent position of the rocket as observed from a fixed background. In Section 4, we introduce the trigonometric formulas needed to convert the apparent position of the rocket into the three-dimensional coordinates X(t), Y(t), and Z(t) as a function of time (as measured by the video camera). To generate smooth functions of time for the rocket coordinates, we used Maple8 CAS (although this module could easily be adapted to any computer algebra system or graphing calculator with curve fitting capabilities) and, thus, we are able to compute the three components of the velocity and acceleration of the rocket. From these components, we proceed with the calculation of the curvature of the rocket path as a function of time, which exhibits the expected peak near the turn-around point (when the rocket has reached its maximum height). Near the end of the rocket flight, we note, however, an unusual feature in the graph of the curvature, which is explained by a strong gust of wind affecting the path of the rocket near the end of the flight. In Section 5, we briefly discuss modifications of the curve-fitting model used in Section 4, while in Section 6 we make several comments concerning the validity of the zero-torsion model itself and suggest possible augmentation of this experiment. Lastly, in Section 7, we present several appendices containing additional video stills (7.1), the Maple code used in the present work (7.2), an introduction to curve-fitting techniques for those familiar with basic linear algebra (7.3), and a few Internet resources for exploring the mathematics of model rockets in general (7.4). 2. Supplies and Procedure 2.1 Supplies needed water rockets (obtain extra in case of defective rockets or cracking on landing); buy “water-powered rockets” from a local toy or hobby store, or order them on the Internet, e.g., from the homepage of Dave’s Cool Toys (see Section 7.4 for details about this and other useful rocket sites). a metric tape measure or a laser telemetry device (if available) blueprints for a nearby 3-story building (if available—at least the basic dimensions of the building must be known) camcorder with videotape editing software to view the video frame by frame if available, or at least VCR with a pause button stopwatch if unable to view the video frame by frame Water Rockets in Flight Page 6 of 60 2/13/16 2.2 Launching procedure Commercially available water rockets are fun little toys made of “high-tech shatter resistant plastic”, which have the advantage of being cheap, safe, foolproof, and reusable (if launched over soft ground). Choose an appropriate backdrop, such a building with known height. This project is more interesting if the building is only about 3 stories tall. The rocket will then appear to rise above the building so that the maximum height has to be estimated by using calculus. Before launching the rocket, measure ground distances from the camcorder site to the launch site and from the launch site to the building. The camcorder and launch site should be in line with an easily identifiable location on the building. Measure the distance from the center of the camera lens to ground level. Check that “ground level” at the base of the camera and “ground level” at the base of the building are the same and adjust if necessary. Launch the rocket and record the flight on the camcorder. Preview a flight to be sure that the rocket is visible against the building in the video stills. A successful launch is one in which the rocket appears in front of the building both at the beginning and end of the flight and appears to rise above the roofline at its maximum height. Several launches may be necessary to achieve this. Having someone say, for example, “This is the third trial” as you begin to record the launch will help identify the different trials when viewing the tape later. Once the rocket has landed, measure the ground distances from the camcorder to the landing site and from the launch site to the landing site. View the videotape of the successful launches, decide which one to model, and then gather at least nine data points on the path of the rocket, including the launching and landing points. Although an approximating curve could be determined from fewer points, more data gives greater flexibility in choosing which points to generate the curve in the case of the polynomial interpolation fit, and a more accurate curve in the case of the least squares fit. The blueprints of the building in the background will help determine the position of the rocket with respect to the building. If blueprints are unavailable, then make estimates based on the known height of the building, and take measurements for the horizontal distances. If you are able to view the tape frame-by-frame, the fact that most camcorders record at about 30 frames per second can be used to determine timing. Otherwise, use a stopwatch and the pause button to estimate as well as possible. Note 1: Measurement error can be significant in this experiment. If possible, take each measurement twice and average. Since measurement error is likely, the number of significant digits permissible with the present procedure is most likely limited to three. Thus, each measurement has an implicit measurement uncertainty between one and ten percent. Water Rockets in Flight Page 7 of 60 2/13/16 Note 2: The more exact standard color video rate is 29.97 frames/sec, which is taken to three significant digits in our computations as 30.0 frames per second. For more information about this rate, see pp. 61 and 431 of Ronald J. Compesi’s text, Video Field Production and Editing (sixth edition). Boston: Allyn and Bacon, 2003. 2.3 Recording Procedure Once the experiment is completed, and a launch chosen, view the videotape frame by frame and extract information about the apparent position of the water rocket during the entire flight path. Construct Table 1 with careful attention to proper labeling, significant digits, and units. Determine the entries for Tables 2 through 3 and present in a similar form. Develop a model for the rocket flight using either polynomial interpolation, least squares fit, or the one-dimensional model. Analyze the model, being sure to address all the questions raised in Section 4.2. 3. The Water Rocket Flight 3.1 Building Blueprint and Video Stills Figure 2 is a collection of the nine video stills that provide the raw data for the model. The rocket was launched from ground level. The camcorder was at a height of 1.52 meters above ground level. Figure 3 shows the exterior blueprints of the library on our campus that we used as a backdrop for our experiment. The scale of blueprints enabled us to estimate the rocket’s horizontal and vertical position at various points during its flight. The initial and terminal positions of the rocket launch, as well as seven in-flight data points that were extracted from the video stills, are indicated on the blueprints. Water Rockets in Flight Page 8 of 60 2/13/16 Figure 2 0th launch frame 7th frame 11th frame 15th frame 50th frame 55th frame Water Rockets in Flight Page 9 of 60 2/13/16 59th frame 63re frame 71st landing frame Water Rockets in Flight Page 10 of 60 2/13/16 Figure 3 Water Rockets in Flight Page 11 of 60 2/13/16 3.2 Apparent Position of Data Points The apparent locations of the rocket against the building from the point of view of the camcorder operator are listed in Table 1 below. The heights Vi are measured up from ground level, and the horizontal distances Hi are measured to the right of the point at the intersection of a perpendicular from the camcorder to the building. This point is marked P in Figure 4 of Section 3.3. Also, the times ti are determined using the color video rate of 30.0 frames/sec. Frame 0 7 11 15 50 55 59 63 71 3.3 i 1 2 3 4 5 6 7 8 9 Table 1 Observed Data ti (secs) Hi (meters) 0.000 0.000 0.233 0.610 0.367 1.22 0.500 1.83 1.67 8.53 1.83 9.14 1.97 9.75 2.10 10.4 2.37 16.7 Vi (meters) 0.000 5.49 9.45 12.8 13.1 10.1 7.32 4.57 0.000 Ground and Elevation Diagrams Figure 4 below is an aerial view of the rocket launch, showing the relative positions of the camcorder, building, and rocket launch and landing sites. The data in Table 1 gives only the apparent position of the rocket against the building. We use the similar triangles illustrated in Figure 5 to find the actual heights zi of the rocket from the perceived heights Vi of the rocket against the building. Water Rockets in Flight Page 12 of 60 2/13/16 Building P Figure 4 Ground Diagram for the Rocket Launch Measurements are in meters. Drawing is not to scale. Building Distance = 24.8 m Rocket Launch Site distA = 4.52 m Rocket Landing Site distC = 7.32 m distB = 4.11 m Camcorder Location Figure 5 Elevation Diagram Rocket in flight Measurements are in meters. Drawing is not to scale. zi Camcorder CamHeight = 1.52 m ni mi Vi = perceived height against the building Water Rockets in Flight Ground level at height 0 m Page 13 of 60 2/13/16 4. Developing and Analyzing the Model 4.1 Estimating Rocket Coordinates We now use basic trigonometry to estimate the three-dimensional coordinates (xi, yi, zi) of the rocket from the perceived positions (Hi,Vi) of the rocket relative to the building. Figure 6 illustrates the quantities that we must determine to approximate the xi and yi ground coordinates of the rocket at time ti. Note again that our zero-torsion model places the depth coordinate y on the straight line joining the launch site and the landing site. H9 Building Hi P ni Building Distance = 24.8 m Rocket Launch Site distA = 4.52 m B Figure 6 Location Diagram (xi , yi) distC = 7.32 m Measurements are in meters. Drawing is not to scale. m i Ai A Rocket Landing Site distB = 4.11 m Camcorder Location Water Rockets in Flight Page 14 of 60 2/13/16 Refer to Figures 5 and 6 above for the locations of the quantities determined in Tables 2 and 3. Table 2 gives the quantities used to compute the coordinates shown in Table 3. Table 2 Intermediate Values i Ai ni mi (rads) (meters) (meters) 1 0.000 24.8 7.32 2 0.0245 24.8 7.02 3 0.0490 24.9 6.76 4 0.0735 24.9 6.52 5 0.331 26.3 4.88 6 0.353 26.5 4.79 7 0.374 26.7 4.71 8 0.395 26.9 4.64 9 0.591 29.9 4.11 i 1 2 3 4 5 6 7 8 9 Table 3 Estimated Coordinates ti xi yi zi (secs) (meters) (meters) (meters) 0.000 0.000 7.32 0.000 0.233 0.172 7.02 2.64 0.367 0.331 6.75 3.68 0.500 0.479 6.50 4.48 1.67 1.59 4.62 3.68 1.83 1.66 4.50 3.07 1.97 1.72 4.39 2.55 2.10 1.79 4.28 2.05 2.37 2.29 3.42 0.000 To generate the values contained in Tables 2 and 3, first find the times ti in Table 3 by dividing the frame number by 30.0 frames/sec. Also, record the perceived in-flight heights Vi and horizontal distances Hi (see Table 1). At the moment of launch (t = 0 sec), the horizontal and vertical distances are 0. Next, use the law of cosines to find angle A, the angle at the camcorder between the rocket launch and landing sites: (distB)2 (distC )2 (distA)2 A arccos 0.591 radians (67.7 degrees). 2(distB)(distC ) Since the line from the camcorder through the launch site forms a right angle with the building, this angle can be used to find the horizontal distance H9 along the building at landing: H 9 ( BuildingDistance) tan( A) 16.7 meters. Use the horizontal distances Hi to find the ground angles between the launch site and the rocket position at each time (see Figure 6). Then, to find the other angles listed in Table 2, use: Ai arctan( H i ) radians. BuildingDistance Also, use A and the fact that the line from the camcorder through the launch site to the building is perpendicular to the building to find the hypotenuses ni (see Figure 6): ni Water Rockets in Flight BuildingDistance meters. cos( Ai ) Page 15 of 60 2/13/16 Next, use the law of cosines to find B, the angle at the launch site from the camcorder to the landing site: (distA)2 (distC )2 (distB)2 B arccos 0.532 radians (60.9 degrees). 2(distA)(distC ) Use the proportions from the law of sines to find the lengths of mi (see Figure 6): mi sin( B)( distC ) meters. sin( ( B Ai )) Assuming that the rocket's path remains in the vertical plane containing its launch and landing sites (i.e., the zero-torsion model), the Ai and mi values give the angles and magnitudes for the projection into the X-Y plane of the position vectors for the rocket at time ti: y m sin A meters. 2 xi mi cos Ai meters, 2 i i i Now, use similar triangles to approximate the actual rocket heights from the perceived heights against the building (see Figure 5). First, define z1 0.000 meters and z9 0.000 meters, as the launch and landing heights. Next, estimate the remaining actual heights using similar triangles. Remember to subtract the camcorder height from the Vi, and then add it back in to get the actual rocket heights zi. Thus, we get: zi CamHeight (Vi CamHeight )(mi ) meters. ni Now, plot these points in three-dimensional space: Water Rockets in Flight Page 16 of 60 2/13/16 4.2 Modeling the Flight Path Using Polynomial Interpolation With estimates of the three-dimensional coordinates for the rocket at nine different times during its flight, we can create a space curve modeling the flight path. First, we can plot this data in three dimensions. Then, after specifying the various ti, xi, yi, and zi values, we can use 7 of the 9 data points (omitting the in-flight points at times t3 and t6) to create a 6th degree interpolating polynomial in the X, Y, and Z components (note that the number of points used in the polynomial-interpolation fit must be exactly one more than the degree of the polynomial). Higher order polynomials are needed to capture the varying effects of rocket propulsion and wind (as can be seen in the Figures below). We chose the 3rd and 6th data points simply by experimentation with omitting different pairs of points to see which yielded the best model. In the absence of more sophisticated curve fitting techniques, this experimentation is an important part of the modeling process. The resulting 6th degree interpolating polynomials obtained from our zero-torsion model for the X, Y, and Z coordinates (expressed in units of meters with time measured in seconds) are: X (t ) 0.0412t 4.65t 2 8.73t 3 7.63t 4 3.12t 5 0.480t 6 , Y (t ) 7.32 0.0701t 7.90t 2 14.8t 3 13.0t 4 5.31t 5 0.816t 6 , and Z (t ) 15.0t 20.8t 2 27.3t 3 24.3t 4 10.3t 5 1.59t 6 . Next, we use these parameterized coordinate functions to create a space curve modeling the rocket flight. Water Rockets in Flight Page 17 of 60 2/13/16 Note that, as in each separate coordinate, the interpolating curve fits all of the data points well, even the points corresponding to times t3 and t6. It is important to note here that the coefficients of the sixth-degree interpolating polynomial are not required to possess physical interpretations, in contrast to, for example, a least-squares fit of the flight path based on a parabolic model. The polynomial fit curve shows the effect of the gusting wind on the empty (and hence light) rocket toward the end of its flight. It also gives a means of estimating the maximum height attained by the rocket, a quantity which could not be determined from the raw data alone. This and other applications of the model will be addressed in next section. 4.3 Analysis of the Flight Many questions naturally arise about the rocket flight path. How high did the rocket go? How fast was it going at different times? How much of that speed was due to vertical motion, and how much to lateral motion? What was its acceleration at different times? How far did the rocket travel during its flight? How sharply did it turn around when it reached its apex? Was that the tightest turn it made during the flight? When did the three stages (thrusting, coasting, recovery) of the flight occur? To what extent did the wind counteract gravity? How much did the wind blow the rocket off the parabolic path predicted by the standard model? If we look only at the video stills, we simply cannot address any of these questions just from that raw data. However, now that we have a model approximating the rocket flight, we can apply the concepts of calculus to find reasonable solutions for these questions. The analysis below illustrates the ways that our curve may be physically interpreted. Another rocket flight will undoubtedly lead to a different shaped curve with different physical properties. For example, in question 6 below, the graph shows that a wind gust with considerable horizontal strength actually lifted our rocket toward the end Water Rockets in Flight Page 18 of 60 2/13/16 of its flight. A significantly different curve may result from other wind effects, or a windless day, and consequently must be considered in its own right rather than just mimicking our analysis. To address these questions, we will use the space curve R(t) modeling the rocket flight that we found using 6th degree polynomial interpolation: R(t ) X (t ), Y (t ), Z (t ) , where X(t), Y(t), and Z(t) are the coordinate functions given above. We will also need the velocity vector Rprime(t) (with units of meters/sec) and acceleration vector R2prime(t) (with units of meters/sec2), vector-valued curves that can be found by taking the component-wise first and second directives of R(t), respectively: Rprime(t ) X (t ), Y (t ), Z (t ) and R2prime(t ) X (t ), Y (t ), Z (t ) . Specifically, X (t ) 0.0412 9.29t 26.2t 2 30.5t 3 15.6t 4 2.88t 5 , Y (t ) 0.0701 15.8t 44.5t 2 51.9t 3 26.6t 4 4.90t 5 , Z (t ) 15.0 41.6t 81.8t 2 97.4t 3 51.4t 4 9.57t 5 ; and X (t ) 9.29 52.4t 91.6t 2 62.5t 3 14.4t 4 , Y (t ) 15.8 89.0t 156t 2 106t 3 24.5t 4 , Z (t ) 41.6 164t 292t 2 206t 3 47.8t 4 . The velocity and acceleration vectors will also be used to calculate the Frenet-Serret curvature for the three-dimensional parametrized space curve. 1. How high did the rocket go? This is perhaps the most natural question to ask that cannot be readily answered simply by watching the videotape. However, now that we have a smooth flight-path curve, finding the maximum height of the rocket is easily done by setting the vertical component of the velocity equal to zero and solving for t = tmax. This gives the time when the rocket reached its apex. We then find the maximum height by substituting this time, t tmax , into Z(t): Z (t ) 15.0 41.6t 81.8t 2 97.4t 3 51.4t 4 9.57t 5 ; Z (t ) 0 when t tmax 0.974 seconds, and Z (0.974) 5.81 meters. A maximum height of about 5.81 meters is not bad for a water-propelled rocket with a fluorescent green plastic chamber about 13 centimeters long! Note, however, that in the absence of air resistance with an initial vertical speed of 15.0 meters/sec, the rocket should have reached a maximum height of (15.0)2/(19.6) = 11.5 meters, or almost twice Water Rockets in Flight Page 19 of 60 2/13/16 as high as our model predicts. One can readily see the effect of air resistance on the maximum height. 2. How fast was the rocket going at the launch, apex and landing times? How much of that speed was due to vertical motion, and how much to lateral motion? What was its acceleration at those times? To address these questions we can find and analyze the velocity and acceleration vectors and their magnitudes. We begin first with the components of the velocity vectors, with each component measured in meters/sec: R (0) 0.0412, 0.0701, 15.0 , R (tmax) 0.937, 1.59, 0 , R (tland ) 3.88, 6.59, 13.5 Here, tland t8 2.37 seconds. Note that the signs of the components of each velocity vector indicate direction, information which is lost when we compute the overall speed below. Also notice that at the launch the derivatives in the X and Y components are very small (in absolute value), reflecting the fact that we actually did a pretty good job of launching the rocket vertically (i.e., the initial launch angle is 89.7 degrees as measured from the horizontal), and that the later lateral motion must have been due to the wind. At the apex of the flight path, even though the Z(t) derivative is zero, the X(t) and Y(t) derivatives indicate that the rocket was still moving laterally (in a rather significant amount). Upon impact, although the rocket hit the ground with nearly the same vertical velocity as it left the ground, it was still moving quite fast laterally. To see the overall speed at these three times, we need the magnitudes of the velocity vectors. We find that their magnitudes in meters/sec are: speed (0) R(0) 15.0, speed (tmax) R(tmax) 1.85, speed (tland ) R(tland ) 15.5 . Comparing these speeds to the values of the individual components shows that the speed at launch was almost entirely in the vertical direction, whereas when the rocket landed, because of the lateral motion, it was moving faster. Using the fact that 1 mile/hour is equivalent to 0.447 meters/sec, we can convert these speeds to miles/hour as: speed (0) R(0) 33.5, speed (tmax) R(tmax) 4.14, speed (tland ) R(tland ) 34.6 . Water Rockets in Flight Page 20 of 60 2/13/16 Now, consider the acceleration vectors at these three times, with each component measured in meters/sec2: R (0) 9.29, 15.8, 41.6 , R (tmax) 0.418, 0.711, 12.4 , R (tland ) 21.8, 37.1, 65.3 The negative value of the acceleration in each Z component illustrates the general property that when an object is slowing down the acceleration is in the opposite direction of the motion and when it is speeding up the acceleration is in the same direction of the motion. Thus, when rising and slowing down, the rocket has negative acceleration (in opposite direction to its ascent), and when falling and speeding up, the rocket also has negative acceleration (in the same direction as its descent). Next, find the lengths of the acceleration vectors at these three times, each again measured in meter/sec2. We can then compare these values to some common known accelerations. acceleration(0) R(0) 45.4, acceleration(tmax) R(tmax) 12.4, acceleration(tland ) R(tland ) 78.2. The starting acceleration is about 50% more than that of a Space Shuttle at take off (29 meter/ sec2), the apex acceleration is about 50% more than that of a cheetah at take off (7.8 meter/ sec2), and the landing acceleration is about twice as much as that of a parachute at landing (35 meter/sec2); these common accelerations were found at the Internet site of Dr. Richard Vawter of the Dept. of Physics and Astronomy at Western Washington University: http://www.ac.wwu.edu/~vawter/PhysicsNet/Topics/Kinematics/AccelerationValues.html We quickly point out, however, that although the acceleration at apex is relatively close to the theoretical prediction of 9.8 meters/sec2 for g, the landing acceleration indicates the rocket hit the ground with an acceleration of about 8 g’s, which is physically impossible! We must stress at this point that the numerical values associated with the velocity and acceleration vectors calculated above are in no way meant to be interpreted physically. Instead, they are to be used to provide a semi-quantitative description of the path of the rocket. For example, considering the effects of air resistance and gravity alone, we conclude on physical grounds that the magnitude of the vertical component of the acceleration should be larger than the gravitational acceleration (g = 9.81 m/s2) on its ascent (when gravity and air resistance are in the same direction) while it should be less than the gravitational acceleration on its descent (when gravity and air resistance are in opposite direction). Although the numerical results for the acceleration show a vertical component relatively close to g at the apex, we readily observe that the values at launch and landing times raise serious doubts about the numerical validity of the model. 3. How far did the rocket travel during its flight? Looking at the flight path, it seems that the rocket went further coming down than going up, but how much further? Water Rockets in Flight Page 21 of 60 2/13/16 We can answer this question by finding and interpreting the arc length of the flight path, over various time intervals. First, determine the length over the entire flight: tland R(t ) dt tland 0 X (t ) 2 Y (t ) 2 Z (t ) 2 dt 12.8 meters. 0 Then, determine the lengths over the rising and falling parts of the flight: tmax R(t ) dt 0 tmax X (t ) 2 Y (t ) 2 Z (t ) 2 dt 6.26 meters, and 0 tland tmax R(t ) dt tland X (t ) 2 Y (t ) 2 Z (t ) 2 dt 6.54 meters. tmax Thus, we can see that the distance traveled by the rocket during its flight was about 12.8 meters. About 6.26 meters were traversed during the first part of the flight, and 6.54 meters during the second part of the flight when the rocket was lighter and the wind blew it more off course. In fact, taking into account the effects of air resistance and gravity alone we would expect on physical grounds that the distance covered during the second half of the flight path of the rocket (i.e., during its descent) should be shorter than the distance covered during the first half of the flight path (i.e., during its ascent). Hence, the longer distance during the descent is indeed an indication of a wind gust with significant in-plane strength. 4. How sharply did the rocket turn around when it reached its apex? Is this the tightest turn it made during its flight? The Frenet-Serret curvature function, (t ) , will help answer this question. Recall that the radius of the osculating circle is the reciprocal of , so the bigger is, the tighter the curve. R(t ) R(t ) Curvature (t ) 3 R(t ) The curvature at the apex, when t tmax 0.974 seconds, is (tmax) 3.62 meters-1. 1 Thus, the osculating circle has radius 0.276 meters, which is about the size of (tmax) an extra large pizza. But is this necessarily the maximum curvature? curvature: Water Rockets in Flight Page 22 of 60 Consider the graph of the 2/13/16 Since (t ) 0 when t 0.963 seconds, then the maximum curvature is (0.963) 3.65 meters-1, with osculating circle radius of 0.274 meters. Therefore, it looks like the maximum curvature occurred slightly after the rocket turned around at its apex. Since the values are so close, it is difficult to determine if this is due to the wind pushing sideways as the rocket slowed, and thus "loosening" the curve, or whether it is due to the vagaries of the model. We notice a remarkable feature of curvature versus time near the 1.9 sec mark. There, the curvature becomes very small indicating that the velocity and acceleration become nearly parallel for a short time. This is possible if a wind gust with significant planar strength appeared at that time. 5. When did the three stages of thrusting, coasting, and recovery of the rocket flight occur? While it would be quite difficult to determine this by watching the videotape (especially the transition from thrusting to coasting), and almost impossible to determine from the nine data points, the stages can be quite clearly seen from the plots of the magnitudes of the velocity and acceleration functions. First, plot the three components of the velocity curve. Then, find the speed (magnitude of the velocity), and plot the resulting curve. Water Rockets in Flight Page 23 of 60 2/13/16 Speed R(t ) X (t )2 Y (t )2 Z (t )2 The speed curve gives a preliminary indication of the stages. We already know the transition point between the coasting and recovery stages, since that is just the time the rocket reached it maximum height at t tmax 0.974 seconds. The more subtle question is the transition between the thrusting and coasting stages. Note that the rocket starts out going quite fast, and then the speed decreases. There is a slight bend in the speed curve around 0.3 seconds, but it is hard to see exactly what is happening when. The magnitude of the acceleration will give us more information. First, plot the three components of the acceleration curve. Then, find and plot the acceleration magnitude curve. Acceleration R(t ) X (t )2 Y (t )2 Z (t )2 Water Rockets in Flight Page 24 of 60 2/13/16 We can see the transition from the thrusting stage to the coasting stage more clearly in the acceleration magnitude graph. The rocket was accelerating (although less and less as it lost water and pressure) from launching to somewhere around 0.5 seconds, and then leveled off somewhat during the coasting stage. More specifically, d d Acceleration R(t ) 0 , when t 0.518 seconds. dt dt Observe that between 1.8 and 2 seconds apparently a strong gust of wind caught the rocket and forced it sideways and down. The end of the coasting stage is when the rocket turns around, which we determined above to be at t tmax , and the rest of the flight is the recovery. Therefore, the thrusting went from t 0 to t 0.518 seconds, the coasting went from t 0.518 to t tmax seconds, and the recovery went from t tmax to t tland . 6. To what extent did the wind counteract gravity? Since gravity is in the vertical direction, it suffices to consider just the vertical component of the acceleration vector, and we need to compare this to the constant acceleration due to gravity ( 9.81 meters/sec2) which otherwise would be the only force acting on the rocket after the thrusting stage finished. Water Rockets in Flight Page 25 of 60 2/13/16 In the absence of wind effects or air resistance, we would have expected Z"(t) to increase to –9.81 meters/sec2 during the thrusting stage, and then remain constant for the rest of the flight. Any deviation from this thus must reflect the effects of wind gusts and/or air resistance. Notice that the graph of Z (t ) indicates that the upward force from the wind actually exceeded the downward force of gravity. Setting Z (t ) 0 , we find that t 1.57 to t 1.90 seconds was the interval during which this occurred. Also, toward the end of the flight, a gust of wind actually pushed the rocket fairly hard into the ground. However, there was comparatively little wind effect during the coasting stage as evidenced by the curve staying fairly close to the gravitational constant. Also, compare the two times when Z"(t) is zero to approximately the same times of the two "dips", the second one quite sharp, in the previous acceleration magnitude graph. 7. How much was the rocket blown off course by the wind? One way of getting a sense of this is to compare our model to the parameterized curve S cos( )t , S sin( )t 1 (9.81t 2 ) , which gives the trajectory of a projectile with 2 no other forces acting on it except gravity. Here, S is the initial speed, is the launch angle, g is the gravitational constant ( 9.81 meters/sec2), and the initial position at t 0 is ( x, z ) (0, 0) . Of course, this does not model our thrusting stage, but it is the best general model with which we have to work. Since the standard model is in two dimensions, we first need to reparameterize our model along the ground path from launch to landing position to get a curve in two dimensions. Thus, the first coordinate function is X t X 0 Y t Y 0 2 2 and the second coordinate function is simply Z(t). Water Rockets in Flight Page 26 of 60 2/13/16 In order to use the standard model, we need values for the initial speed S and launch angle . We will start by estimating them from the t1 and t 2 data points. S is then just the change in distance divided by the change in time, and is the launch angle from the launch point at t t1 0 seconds to the position at t t2 seconds. X (t2 ) X (t1 ) Y (t2 ) Y (t1 ) Z (t2 ) Z (t1 ) 2 S 2 2 t2 t1 arccos X (t2 ) X (t1 ) Y (t2 ) Y (t1 ) 2 2 11.4 meters/sec, and X (t2 ) X (t1 ) Y (t2 ) Y (t1 ) Z (t2 ) Z (t1 ) 2 2 2 1.44 radians. Note that the initial velocity is less than the “instantaneous” initial speed of 15.0 meters/sec found in question 2, and reflects the changing acceleration during the thrusting stage. We find the appropriate t ranges by assuming that the second coordinate remains positive. Thus, we solve: S sin( )t 1 (9.81t 2 ) 0 . 2 This will have two solutions: t StandardLaunchingTime 0.000 seconds, and t StandardLandingTime 2.31 seconds. Now, plot and compare our model to the standard parabolic model. Water Rockets in Flight Page 27 of 60 2/13/16 The difference in the landing positions will give us a sense of how far “off course” the rocket was blown: StandardLandingDist S cos( )( StandardLandingTime) 3.37 meters, LandingDifference = DistA - StandardLandingDist 1.15 meters. Without wind, the standard model estimates that the landing site would have been about 3.37 meters away from the launching site, but the rocket actually landed some 4.52 meters away, a difference of about 1.15 meters. It might be argued that the launch angle was actually directly up and the vertical deviation was due to wind. Furthermore, the rocket was accelerating from t1 to t 2 , so the S and used above may not be the best parameters for a good comparison. If the initial value shifts at to the model becomes t ti ( xi , zi ) , S cos( )(t ti ) xi , S sin( )(t ti ) 1 g (t ti )2 zi . We estimated the parameters S 2 and with times t 2 and t3 , since the thrust was diminished by then. In this case, the plot of our model and the standard model looks like: This illustrates that there was a thrusting phase occurring during the actual rocket flight. Also, while this two-dimensional model involves no wind effect, we found that it gives a greater ground distance than was actually covered by the rocket. Since the rocket was in fact blown by the wind, this is probably a less useful model than the parabolic model derived using t1 to t 2 . Water Rockets in Flight Page 28 of 60 2/13/16 5. Model Variations 5.1 Modeling the Flight Path Using Least Squares Fit We can also find a viable model through a least squares fit of the 9 data points provided in Table 1. Section 7.2 provides more information about least squares fitting. As seen below, the model created through a 6th degree least squares method is quite similar in shape to the 6th degree polynomial interpolation from Section 4.2. For example, both models achieve similar maximum height. Preference of one method over the other may depend upon which modeling tools are available, where this module is integrated in the curriculum, and mathematical background. Using the times the times ti and coordinates xi, yi, and zi from Table 3, we can find a least squares fit for the X, Y, and Z components. The resulting 6th degree least squares polynomials for the X, Y, and Z components, measured in meters, are: X (t ) 0.161t 3.80t 2 6.74t 3 5.77t 4 2.37t 5 0.369t 6 , Y (t ) 7.32 0.277t 6.46t 2 11.5t 3 9.81t 4 4.03t 5 0.627t 6 , and Z (t ) 14.6t 18.1t 2 20.7t 3 18.1t 4 7.74t 5 1.22t 6 . We can then use the least squares fits in the three components to create a space curve to model the rocket's flight. As with the interpolated version, this curve fits the data points well and can be used to analyze the rocket flight. It will give slightly different values for the questions considered in Section 4.3. For example, to estimate the maximum height, we compute the derivative of Z(t), and find the critical value of Z(t). Water Rockets in Flight Page 29 of 60 2/13/16 Z (t ) 14.6 36.2t 62.0t 2 72.4t 3 38.7t 4 7.32t 5 meters. Z (t ) 0 when t 0.958 secs, and Z (0.958) 5.68 meters. Thus, according to our least squares curve, the rocket reached its maximum height approximately 0.958 seconds into the flight, and the height was approximately 5.68 meters, which is less than the 5.81 meter approximation found with the interpolated curve in Section 4.3. 5.2 Simpler Height Versus Time Model It is also possible to use calculus of one variable to analyze the rocket flight from the height function alone. Much of the work is very similar to that in the threedimensional case. Estimating the actual rocket positions is done as in Section 4.1, and finding a model Z(t) for the height as a function of time uses interpolation as in Section 4.2. The functions X(t) and Y(t) do not need to be determined. Since the height function Z(t) is identical to the third (vertical) component of the three-dimensional model, some of the analysis below repeats what was presented earlier. We have included this as necessary to provide a complete consideration of the height versus time model. The height function alone does not model the strong lateral drift due to the wind at the end of the flight, but it does show the slight lift and sharp drop at the end of the flight as the wind forced the rocket down. Here are the data points and the curve Z(t). Now, as in Section 4.3, we can address some questions about the rocket flight. We will need to use the first and second derivatives of Z(t) to answer these questions: Z (t ) 15.0 41.6t 81.8t 2 97.4t 3 51.4t 4 9.57t 5 meters/sec, Z (t ) 41.6 164t 292t 2 206t 3 47.8t 4 meters/sec2. Water Rockets in Flight Page 30 of 60 2/13/16 1. How high did the rocket go? Setting Z (t ) equal to zero and solving for t tmax yields the time when the rocket reached its apex. We find the maximum height by substituting this time into Z(t): Z (t ) 0 when t tmax 0.974 seconds, and Z (0.974) 5.81 meters. 2. How fast was the rocket going at the launch, apex and landing times? acceleration at those times? What was its To find the velocities in meters/sec, we substitute these three times into Z (t ) : Z (0) 15.0 , Z (tmax) 0.000 , and Z (tland ) 13.5 . Using the fact that 1 mile/hour is equivalent to 0.447 meters/sec and taking absolute values, we can convert these velocities to speeds in miles/hour as: Z (0) 33.5 , Z (tmax) 0.000 , and Z (tland ) 30.1 . Next, find the accelerations at these three times, each measured in meter/sec2: Z (0) 41.6 , Z (tmax) 12.4 , and Z (tland ) 65.3 . 3. When did the three stages, thrusting, coasting and recovery, of the rocket flight occur? The recovery stage begins at time t tmax . The end of the thrusting stage/beginning of the coasting stage can be more subtle. We first consider the graphs of the velocity Z (t ) and acceleration Z (t ) functions: Water Rockets in Flight Page 31 of 60 2/13/16 The thrusting stage ends with the first maximum of Z"(t), so we must determine when this occurs: d Z (t ) 0 , when t 0.517 seconds. dt Therefore, the thrusting went from t 0 to t 0.517 seconds, the coasting went from t 0.517 to t tmax seconds, and the recovery went from t tmax to t tland . Observe that between 1.8 and 2 seconds apparently a strong gust of wind caught the rocket and forced it sideways and down. 4. To what extent did the wind counteract gravity? Since gravity is in the vertical direction, it suffices to consider just the vertical component of the acceleration vector, and we need to compare this to the constant acceleration due to gravity ( 9.81 meters/sec2) which otherwise would be the only force acting on the rocket after the thrusting stage finished. Water Rockets in Flight Page 32 of 60 2/13/16 If there had been no wind or air resistance, we would have expected Z"(t) to increase to –9.81 meters/sec2, during the thrusting stage, and then remain constant for the rest of the flight. Any deviation from this thus must reflect these effects. Notice that the graph of Z (t ) indicates that the upward force from the wind actually exceeded the downward force of gravity. Setting Z (t ) 0 , we find that t 1.55 to t 1.95 seconds was the interval during which this occurred. Also, toward the end of the flight, a gust of wind actually pushed the rocket fairly hard into the ground. However, there was comparatively little wind effect during the coasting stage as evidenced by the curve staying fairly close to the gravitational constant. 5. What effect did the wind have on the heights attained by the rocket? We can use the standard parabolic model, s(t ) vt 1 gt 2 , for the height of a 2 projectile to get some sense of what effect the wind might have had on the heights of the rocket. In order to use the standard model, we need values for the initial velocity v . We will start by estimating it from the t1 and t 2 data points. v is then approximately the change in distance divided by the change in time: v Z (t2 ) Z (t1 ) 11.3 meters/sec. t2 t1 We find the appropriate t ranges by assuming that standard model remains positive. Thus, we solve: vt 1 (9.81t 2 ) 0 2 This will have two solutions: Water Rockets in Flight Page 33 of 60 2/13/16 t StandardLaunchingTime 0.000 seconds, and t StandardLandingTime 2.31 seconds. Now, plot and compare our model to the standard parabolic model. The greater height of the parabolic model reflects the difference in thrust in the two models. We look at the difference in the air time, which will give us a sense of how the wind may have held the rocket in the air long than might be expected, or driven it into the ground earlier than might be expected. AirTimeDifference tland (StandardLaunchingTime StandardLandingTime) 0.0564 seconds. The rocket was accelerating from t1 to t 2 , so the initial velocity v used above may not be the best parameter for a good comparison. If the initial value shifts to (ti , zi ) , the model becomes s(t ) v(t ti ) 1 g (t ti )2 zi . We estimated the parameter v with 2 times t 2 and t3 , since the thrusting stage was about over by then. In this case, the plot of our model and the standard model looks like: Water Rockets in Flight Page 34 of 60 2/13/16 Comparing these two models, we get that AirTimeDifference = 0.209 seconds in this case. This model gives a better fit for the first part of the flight, and since the rocket was in fact blown by the wind, this is probably a more useful comparison than the parabolic model derived using t1 to t 2 . 6. Some Comments on the Modeling Hindsight is 20-20. In the process of running this project with our classes, repeating it to get the data presented here, and then writing this paper, we identified problem areas, thought of ideas for improving the project, and discovered new resources. We plan to use some of these items in the future, and offer them here for consideration. We hope that anyone who tries this module, and especially anyone who experiments with any of the modifications below, will contact us to share their experiences. Measurements The task of taking accurate measurements in this experiment is difficult because of uneven turf and uncertain elevations. These inaccuracies can have a considerable effect on the model. Furthermore, the method used to estimate the launching and landing positions of the rocket (ground measurements) was different from the method used to estimate the in-flight positions (projection against the building). This must be done carefully to avoid misleading results. More sophisticated measuring tools, if available, could help here. For example, the use of laser telemetric devices (e.g., electronic theodolites; see http://www.mohaveinstrument.com/) would improve the measurements of distance. Sensitivity It is instructive to see how robust our numerical results are by introducing a measurement uncertainty in our perceived positions of the rocket during its flight path. First, we look at how uncertainties in the position of the water-rocket along its path can Water Rockets in Flight Page 35 of 60 2/13/16 change the maximum height achieved by the water rocket. In the Figures below (where the parabolic curves are generated from the first two times), we show the influence of a 1% uncertainty (left graph) and a 10% uncertainty (right graph) artificially imposed on the data. As can be seen, a 10% uncertainty (which translates into making measurements with 2 significant digits) shows tremendous variations in maximum height and, by extension, maximum horizontal distance covered. In contrast, a 1% uncertainty (which translates into making measurements with 3 significant digits) shows only small variations. Next, we look at the effect of measurement uncertainties on curvature, which provided above a clear signal for a gust of wind occurring at approximately 1.9 seconds after the launch. While a 1% uncertainty in the data measurements shows virtually no changes in the curvature graph, a 10% uncertainty in the data measurements (as shown in the Figure below) clearly shows variations in the maximum curvature achieved during the flight path of the water rocket. We also note, however, that the wind-gust feature at 1.9 seconds is fairly robust. Water Rockets in Flight Page 36 of 60 2/13/16 Flight Stages Because rocket propulsion allows the water rocket to leave the ground with zero initial velocity, the forces acting on the rocket during the thrusting stage are different from those during the coasting and recovery stages. Since the polynomial fit presented here is a global fit (i.e., it assumes that the physics of the initial thrusting stage is the same as the later two stages), it mistakenly assigns a non-zero initial velocity. By taking more data points, it should be possible to develop two separate approximating functions, one for the thrusting stage (with zero initial velocity), and one for the coasting and recovery stages (with non-zero initial velocity at the beginning of the coasting stage). This would give a piecewise function as a model of the rocket flight, although presumably a more accurate one. The disadvantage of possibly discontinuous derivatives might be addressed with curve smoothing techniques. Weathercocking Weathercocking is the cumulative effect of the airflow over the nose of the rocket and the wind. This effect can cause the rocket to move into the wind. There is a good description of weathercocking at the Future Astronauts of America Foundation website. See Section 7.4 for more details. Because the wind was gusting during our launch, we were not able to get a sense of what effect this might have had on our rocket. A water rocket launched during a gentle, steady wind might demonstrate some weathercocking. It would be interesting to try to determine the extent of this effect. It might also be useful to record the wind direction and speed during the flight. The technical difficulties are finding a practical means for doing so and correlating the wind data with the flight data. Three Dimensional Coordinates We have always done this project using a single video camera. This has forced us to make the simplifying assumption that the rocket remained in the vertical plane through the ground path. Using two widely spaced video cameras to record the launch would allow the construction of a non-planar space curve. It would require careful synchronization of the recordings. More critically, significantly more work would need to be done to estimate the actual rocket positions from its two different apparent positions against the building from the video stills of the two different cameras. This would shift the bulk of the computation in the project to three-dimensional coordinate geometry and away from the calculus of three variables that we wanted to emphasize. However, it would presumably give a more interesting space curve as a model, and would make considering other characteristics, such as the pitch, yaw, and roll, of the rocket more meaningful. The debate continues, and we would be very glad to hear from anyone who tries this “binocular” version! Maximum Height Although the videotape is not much use in estimating the height of the rocket once it has soared above the building, a simple ‘sextant’ can be used to determine the height at the apex. This device measures the angle of elevation from eye level to the object sighted through the straw. An observer at a known position relative to the rocket launch site measures the angle of elevation to the rocket when it reaches the apex. The projection of Water Rockets in Flight Page 37 of 60 2/13/16 the rocket’s position onto the ground must be determined, and the distance from there to the observer computed. That distance and the angle of elevation can then be used to estimate the height. We suggest having at least two people make observations and then average their estimates of the angular distance. If the observers shout “Max!” at the time they make their observations, this will be recorded on the videotape, which may give a sense of how close to the actual apex the observations were made. It would be fun to reserve this data initially, and construct a model without it. Then, it could be used to see how accurately the model predicted the maximum height. If the model does a poor job, this data could be incorporated into the model, and then analysis done on the improved model. The instructions and diagram below for making a simple sextant (very slightly modified) come from the Future Astronauts of America Foundation website described in Section 7.4. Materials A large diameter soda straw A 20 cm length of string A protractor A weight (an eraser or large washer) Tape Construction Tape the straw across the top of the protractor as shown. The straw will act as a sighting tube. Secure the string to the protractor, by slipping it under the straw and around. Tie the string to itself and tape it to the back of the protractor. Tie the eraser or washer at the opposite end of the string, so that it can act as a weight. Directions for use Look through the straw, focusing on the rocket as it is being launched. Let the weight hang freely, but try not to let it swing. Move the device up smoothly as the rocket ascends. At the instant the rocket turns around, hold the string with your finger exactly where it is on the protractor. Record this angle. Water Rockets in Flight Page 38 of 60 2/13/16 Tape Sighting Tube (Straw) 180 0 Protractor String Small Weight 7. Appendices 7.1 Additional Video Stills We strongly recommend launching and videotaping your own rocket. It is a lot of fun, and much more satisfying to analyze your own data. However, in case this is simply not feasible, we provide some video stills. They are from the same launch as the main example in this paper, so Figures 4 and 5 in Section 3.3 and Figure 6 in Section 4.1 provide the ground layout for them. There is a scale at the top of the blueprint in Figure 3 in Section 3.1 for estimating the apparent position of the rocket against the building. It is worth comparing your model with the example in this paper (they will probably be different, even though the data is from the same flight—why is this?), and even more interesting to pool the data and see if both models can be improved by increasing the number of data points. Water Rockets in Flight Page 39 of 60 2/13/16 Figure 7 0th launch frame 5th frame 9th frame 13th frame 49th frame 53rd frame Water Rockets in Flight Page 40 of 60 2/13/16 57th frame 61st frame 71st landing frame Water Rockets in Flight Page 41 of 60 2/13/16 7.2 Maple 8 Code Below is the Maple 8 code we used for our project. The generic Maple procedures, which may be used with any rocket flight data set, are provided first, followed by the commands which generate the specific results we present in this module. To format the labeled diagrams that appear in this module, we used Maple plot options to set parameters such as tickmarks, labelfont, axesfont, title, labeldirections, and orientation. However, to improve readability, we have omitted most of these labeling options from the following code. Information about these, and other, plot options can be found by typing ?plot[options] or ?plot3d[options] on a Maple command line. Procedures must be executed within a single execution group in Maple. The output from a procedure is usually in the form of a list, ReturnVal, found at the end of the procedure. Recall that in Maple, if L is a list, then L[i] returns the i th entry in the list. Also the command nops, for the number of operands of an expression, when applied to a list, returns the number of items in L. Thus, if L:=[3, 4, [5,6]], then L[2] = 4, L[3] = [5,6], and nops(L) = 3. Also, recall that the unapply command may be used in Maple to convert an expression into an operator. Maple carries out all computations to 10 places. This is necessary, especially when interpolating the curves. However, our data is only accurate to 3 significant digits. Thus, in our output, we use the evalf command to restrict our displayed results to 3 significant digits. Water Rockets in Flight: 3D Modeling and Analysis Load Packages > restart; > with(plots):with(linalg): with(VectorCalculus):with(stats): with(CurveFitting): FlightPoints Procedure FlightPoints finds and plots estimated points along the rocket flight path. Input: Frames is a list of the frames from which the stills are taken; FramesPerSecond is the number of frames taken per second by the camcorder; CamHeight is the height of the camcorder above the ground; PerceivedHeights and HorzDist are the corresponding list of heights and horizontal distances measured from the blueprint; BuildingDistance is the perpendicular distance from the camcorder to the building; DistA is the distance from the rocket launch site to the rocket landing site; DistB is the distance from the camcorder to the rocket landing site; DistC is the distance from the camcorder to the rocket launch site (on the line from the camcorder to the building). Output: A list of lists [Times, Xvals, Yvals, Zvals, PointPlot, As, ns, ms], where Times, Xvals, Yvals, Zvals are lists of the times, x-coordinates, y-coordinates, z-coordinates, respectively; PointPlot, a plot structure of the estimated points along the rocket flight path; and As, ns, ms are the intermediate values of Table 2. > FlightPoints:=proc(Frames, PerceivedHeights, HorzDists, FramesPerSecond, CamHeight, BuildingDistance, DistA, DistB, DistC) > local angle, A,B, H,i,n,m, x,y, z,r, PointsPlot,Times, Xvals, Yvals, Zvals, As, ns, ms, ReturnVal: First convert the frames into seconds: > Times:=[seq(Frames[i]/FramesPerSecond, i=1..nops(Frames))]; Water Rockets in Flight Page 42 of 60 2/13/16 The following function takes the lengths a, b, c of a generic triangle and, using the law of cosines, returns the angle (in radians) opposite side a: > angle:=(a,b,c)->evalf(arccos((b^2+c^2-a^2)/(2*b*c))): Use this to find A, the angle at the camcorder between the rocket launch and landing sites: > A:=angle(DistA, DistB, DistC); Since the line from the camcorder through the launch site forms a right angle with the building, this angle can be used to find the horizontal distance along the building at landing. At launch the horizontal distance is 0. > H:=[0, seq(HorzDists[i], i=1..nops(HorzDists)), (BuildingDistance)*tan(A)]; Using the horizontal distances above, find the ground angles between the launch site and the rocket position at each time: > for i from 1 to nops(H) do A[i]:=evalf(arctan(H[i]/(BuildingDistance))); od; Also use A and the fact that the line from the camcorder through the launch site to the building is perpendicular to the building to find the hypotenuses n[i] : > for i from 1 to nops(H) do n[i]:=(BuildingDistance)/cos(A[i]); od; Use the law of cosines to find B: > B:=angle(DistB, DistA, DistC); Now use the proportions from the law of sines to find the lengths of m[i]: > m[1]:=DistC; for i from 2 to nops(H) do m[i]:= evalf(sin(B)*DistC/sin(Pi-(B+A[i]))); od; We are assuming that the rocket's path remains in the vertical plane through its launch and landing sites. Thus, the A[i]'s and m[i]'s give the angles and magnitudes of the for the projection into the X-Y plane of the position vectors for the rocket at time Times[i]. > for i from 1 to nops(H) do x[i]:= evalf(m[i]*cos(Pi/2-A[i])); od; > for i from 1 to nops(H) do y[i]:= evalf(m[i]*sin(Pi/2-A[i])); od; Similar triangles can be used to determine the actual rocket heights from the perceived heights against the building. There aren't perceived heights for the launch and landing, so assign these values: > z[1]:=0; z[nops(H)]:=0; Find the rest of the actual heights using similar triangles, remembering to subtract the camcorder height from the r[i], and then add it back in to get the actual rocket heights, z[i]: > for i from 1 to nops(PerceivedHeights) do r[i+1]:=evalf((PerceivedHeights[i]CamHeight)*m[i+1]/n[i+1]); od; > for i from 2 to nops(H)-1 do z[i]:=r[i]+CamHeight od; > Xvals:=[seq(x[i], i=1..nops(H))]; > Yvals:=[seq(y[i], i=1..nops(H))]; > Zvals:=[seq(z[i], i=1..nops(H))]; List the intermediate values for Table 2: > As:=[seq(A[i], i=1..nops(H))]; > ns:=[seq(n[i], i=1..nops(H))]; > ms:=[seq(m[i], i=1..nops(H))]; Plot a graph of this data in 3 dimensions: > PointsPlot:=display(pointplot3d({seq([x[i],y[i],z[i]], i=1..nops(H))},style=point, symbol=diamond, axes=normal,labels=[x,y,height])): > ReturnVal:=[Times, Xvals, Yvals, Zvals, PointsPlot, As, ns, ms]; > ReturnVal; > end: PolyFit Procedure PolyFit uses interpolation to fit n+1 selected data points to a nth degree polynomial. Input: Times, Xvals, Yvals, Zvals are the times, x-coordinates, y-coordinates, z-coordinates, respectively, of a list of data points. DataList is a list of which n of those data points to use to fit Water Rockets in Flight Page 43 of 60 2/13/16 the curve (for example, for a 6th degree polynomial, choose 7 data points from a list of at 7 or more data points). OutPut: A list [Xcurve, Ycurve, Zcurve, Xplot, Yplot, Zplot, WholePlot], where Xcurve, Ycurve, Zcurve are the coordinate functions of the curve approximating the rocket flight path using polynomial interpolations. Xplot, Yplot, Zplot are 2D plot structures of Xcurve, Ycurve, Zcurve, respectively, with respect to time, together with the chosen data points; and WholePlot is a 3D plotstructure of the spacecurve approximating the rocket flight path, again displayed together with the chosen data points. > PolyFit:=proc(Times, Xvals, Yvals, Zvals, DataList) > local Xcurve, Ycurve, Zcurve, Xplot, Yplot, Zplot, WholePlot, ReturnVal; Find polynomial interpolations for the X, Y, and Z coordinate functions. The 'unapply' command is necessary to change the output of PolynomialInterpolation into a function. > Xcurve:=unapply(PolynomialInterpolation([seq(Times[DataList[i]], i=1..nops(DataList))], [seq(Xvals[DataList[i]], i=1..nops(DataList))], t),t): > Ycurve:=unapply(PolynomialInterpolation([seq(Times[DataList[i]], i=1..nops(DataList))], [seq(Yvals[DataList[i]], i=1..nops(DataList))], t),t): > Zcurve:=unapply(PolynomialInterpolation([seq(Times[DataList[i]], i=1..nops(DataList))], [seq(Zvals[DataList[i]], i=1..nops(DataList))], t),t): Plot each of the coordinate functions with respect to time, together with the chosen data points: > Xplot:=display([plot(Xcurve(t), t=Times[1]..Times[nops(Times)],labels=[t,X]),plot([seq([Times[i], Xvals[i]], i=1..nops(Times))],style=point, symbol=diamond)]): > Yplot:=display([plot(Ycurve(t), t=Times[1]..Times[nops(Times)],labels=[t,Y]),plot([seq([Times[i], Yvals[i]], i=1..nops(Times))],style=point, symbol=diamond)]): > Zplot:=display([plot(Zcurve(t), t=Times[1]..Times[nops(Times)],labels=[t,Z]),plot([seq([Times[i], Zvals[i]], i=1..nops(Times))],style=point, symbol=diamond)]): Plot the space curve with the chosen data points: >WholePlot:=display([spacecurve([Xcurve(t),Ycurve(t),Zcurve(t)], t=Times[1]..Times[nops(Times)]), pointplot3d([seq([Xvals[i],Yvals[i],Zvals[i]],i=1..nops(Times))],style=point,symbol=diamond, axes=normal)]): >ReturnVal:=[Xcurve(t),Ycurve(t),Zcurve(t),Xplot,Yplot,Zplot,WholePlot]; > end: Time Derivatives Procedure TimeDerivs computes the componentwise first and second time derivatives of the space curve, i.e. the velocity and acceleration (vector valued) functions. Input: R, where R=[X,Y,Z] is the spacecurve approximating the flight path. Output: A list [Rprime, R2prime], where Rprime and R2prime are the first and second time derivatives of R, respectively. > TimeDerivs:=proc(R) > local Rprime, R2prime, ReturnVal; > Rprime:=diff(R(t),t): > R2prime:=diff(Rprime,t): > ReturnVal:=[Rprime, R2prime]; > ReturnVal; > end: HowHigh Procedure HowHigh determines how high the rocket went. Input: Z component of the space curve. Output: A list [tmax, Zmax], where tmax is the time when the maximum height occurs, and Zmax is the maximum height attained. Water Rockets in Flight Page 44 of 60 2/13/16 > HowHigh:=proc(Z) > local tmax, Zmax, ReturnVal; > tmax:=fsolve(D(Z)); > Zmax:=Z(tmax); > ReturnVal:=[tmax, Zmax]; > ReturnVal; > end: HowFast Procedure HowFast finds the velocity and acceleration vectors, as well as the speed and norm of acceleration, at the times of launch, maximum height, and landing. Input: R, where R=[X,Y,Z] is the spacecurve approximating the flightpath; tmax is the time when maximum height was attained; and tland is the time when the rocket landed. Output: A list of lists [[V[1], V[2], V[3]], [A[1], A[2],A[3]], [S[1], S[2], S[3]], [mphS[1], mphS[2], mphS[3]], [accel[1], accel[2], accel[3]]], where V[i], A[i], S[i], mphS[i], and accel[i], are the velocity vector, acceleration vector, speed (norm of the velocity vector), speed in miles/hour, and norm of the acceleration vector, respectively, and evaluated at 0 when i = 1, at tmax when i = 2, and tland when i = 3. > HowFast:=proc(R, tmax, tland) > local Rprime, V, R2prime, A, i, speed, mphspeed, accel, ReturnVal; Find the velocity, and then evaluate it at t =0, tmax, and tland: > Rprime:=diff(R(t),t); > V[1]:=subs(t=0, Rprime); > V[2]:=subs(t=tmax, Rprime); > V[3]:=subs(t=tland, Rprime); > for i from 1 to 3 do speed[i]:=norm(V[i],2); mphspeed[i]:=speed[i]/0.447; od; Find the acceleration, and again evaluate it at t =0, tmax, and tland: > R2prime:=diff(Rprime,t); > A[1]:=subs(t=0, R2prime); > A[2]:=subs(t=tmax, R2prime); > A[3]:=subs(t=tland, R2prime); > for i from 1 to 3 do accel[i]:=norm(A[i],2); od; > ReturnVal:=[[seq(V[i], i=1..3)], [seq(A[i], i=1..3)],[seq(speed[i], i=1..3)], [seq(mphspeed[i], i=1..3)], [seq(accel[i], i=1..3)]]; > end: HowFar Procedure HowFar computes the total arclength of the flight path, as well as the ascending and descending arclengths. Input: R, where R=[X,Y,Z] is the spacecurve approximating the flight path; tmax is the time when maximum height was attained; and tland is the time when the rocket landed. Output: A list of the arclength of R, the uplength which is the arclength while the rocket was ascending, and the downlength which is the arclength while the rocket was descending. > HowFar:=proc(R, tmax,tland) > local arclength, uplength, downlength, ReturnVal; > arclength:=ArcLength(R, t=0.0..tland); > uplength:= ArcLength(R, t=0.0..tmax); > downlength:= ArcLength(R, t=tmax..tland); > ReturnVal:=[arclength, uplength, downlength]; > ReturnVal; > end: Water Rockets in Flight Page 45 of 60 2/13/16 Curvature Procedure Curvature finds the curvatures and radii of the osculating circles at the times of maximum height and maximum curvature. It also gives a plot of the curvature function. Input: R, where R=[X,Y,Z] is the spacecurve approximating the flightpath, and tmax, the time when maximum height was attained, and tland, the time when the rocket landed. Output: A list [tmax, tmaxcurvature, tmaxradius, maxcurvaturetime, maxcurvature, minradius, curvatureplot], where tmax is the time when maximum height was attained (same as input tmax, just output for comparison), tmaxcurvature is the curvature at tmax, tmaxradius is the radius of the osculating circle at time tmax, maxcurvaturetime is the time of maximum curvature, maxcurvature is the maximum curvature, minradius is the minimum radius of the osculating circle, curvatureplot is a plot of the curvature function. > curvature:=proc(R, tmax,tland) > local Rprime, R2prime, crsprd, kappa, tmaxcurvature, tmaxradius, maxcurvet, maxcurvature, minradius, curvatureplot, ReturnVal; > Rprime:=diff(R(t),t): > R2prime:=diff(Rprime,t): > crsprd:=CrossProduct(Rprime,R2prime): > kappa:=sqrt(sum(('crsprd[i]')^2, 'i'=1..3))/(sqrt(sum(('Rprime[i]')^2, 'i'=1..3))^3): > tmaxcurvature:=evalf(subs(t=tmax, kappa)); > tmaxradius:=1/evalf(subs(t=tmax, kappa)); > maxcurvet:=fsolve(diff(kappa,t), t=0..tland); > maxcurvature:=evalf(subs(t=maxcurvet, kappa)); > minradius:=1/evalf(subs(t=maxcurvet, kappa)); > curvatureplot:=display(plot(kappa, t=0..tland, title="Curvature")): > ReturnVal:=[tmax,tmaxcurvature, tmaxradius, maxcurvet, maxcurvature, minradius, curvatureplot]: > ReturnVal; > end: Stages Procedure Stages provides the plots to consider when determining the stages of the rocket flight. The recovery stage begins at time t=tmax. The end of the thrusting stage/beginning of the coasting stage can be more subtle. This procedure does not determine the stages; it simply provides the appropriate graphs for determining the stages. These graphs must be analyzed on a case-by-case basis to determine the stages. Input: R, where R=[X,Y,Z] is the spacecurve approximating the flightpath, tmax, the time when maximum height was attained, and tland, the time when the rocket landed. Output: A list of plots [Rprime[1], Rprime[2], Rprime[3], speed, R2prime[1], R2prime[2], R2prime[3], normaccel], where Rprime[i] is the ith component of the velocity vector, speed is the speed function (norm of the velocity vector), R2prime[i] is the ith component of the acceleration vector, and normaccel is the norm of the acceleration. > Stages:=proc(R, tmax, tland) > local Rprime, speed, R2prime, normaccel, i, accel, ReturnVal; > Rprime:=diff(R(t),t); > R2prime:=diff(Rprime,t); > ReturnVal:=[seq(display(plot(Rprime[i],t=0..tland, title="Rprime"||i)), i=1..3), display(plot(norm(Rprime,2), t=0..tland,title=speed)), seq(display(plot(R2prime[i],t=0..tland,title="R2prime"||i)), i=1..3),display(plot(norm(R2prime,2), t=0..tland, title="norm of acceleration"))]; > ReturnVal; > end: Water Rockets in Flight Page 46 of 60 2/13/16 WindGrav Procedure WindGrav displays a graph comparing the vertical component of the acceleration vector to the constant acceleration due to gravity. Input: R, where R=[X,Y,Z] is the spacecurve approximating the flightpath, and tland, the time when the rocket landed. Output: a plot of the third component of the acceleration vector together with a horizontal line at height -9.81 meters/second, the gravitational constant. > WindGrav:=proc(R,tland) > local Rprime, R2prime; > Rprime:=diff(R(t),t): > R2prime:=diff(Rprime,t): > plot({R2prime[3], -9.81}, t=0..tland); > end: WindBlown Procedure WindBlown compares the flight path of the rocket, reparameterized in its plane, with the standard two-dimensional trajectory model. Input: X, Y, Z, where R=[X,Y,Z] is the spacecurve approximating the flightpath; Times is the list of times data was taken; Xvals, Yvals, Zvals are the data points; DistA is the distance from the rocket launch site to the rocket landing site; L=[i,j] with i<j, is a list of which two data points to use to estimate the parameters S (initial speed) and theta (launch angle) in the standard model. Output: a list [parapath, standard, LandingDifference, compareplots], where parapath is the reparameterized flight path; standard is the standard model; and compareplots is both models graphed on the same set of axes. > WindBlown:=proc(X,Y,Z, Times,Xvals, Yvals, Zvals, DistA, L) > local S, theta, parapath, standard,StandardLaunchingTime, StandardLandingTime,StandardLaunchingDist, StandardLandingDist, LandingDifference, i, j, A, B, compareplots, ReturnVal; > i:=L[1]; j:=L[2]; > parapath:=<sqrt((X(0)-X(t))^2+(Y(0)-Y(t))^2),Z(t)>: > S:=sqrt((Xvals[j]-Xvals[i])^2+(Yvals[j]-Yvals[i])^2+(Zvals[j]-Zvals[i])^2)/(Times[j]-Times[i]); > theta:=arccos(sqrt((Xvals[j]-Xvals[i])^2+(Yvals[j]-Yvals[i])^2)/sqrt((Xvals[j]-Xvals[i])^2+(Yvals[j]Yvals[i])^2+(Zvals[j]-Zvals[i])^2)); > standard:=<S*cos(theta)*(t-Times[i])+Xvals[i], S*sin(theta)*(t-Times[i])-(9.81*(tTimes[i])^2)/2+Zvals[i]>; We also need to find the correct values of t so that the standard curve remains positive. This means finding the two times when the second coordinate function is zero, and letting t range between those two values. > StandardLaunchingTime:=min(fsolve (standard[2]=0,t)); > StandardLandingTime:=max(fsolve(standard[2]=0,t)); > A:=plot([ parapath[1], parapath[2], t=Times[1]..Times[nops(Times)]],color=blue): > B:=plot([standard[1], standard[2], t=StandardLaunchingTime..StandardLandingTime], color=red): > compareplots:=display([A,B]): We examine the sum of the difference in the launching positions and landing positions, which will give us a sense of how far "off course" the rocket was blown > StandardLaunchingDist:=S*cos(theta)*(StandardLaunchingTime-Times[i]); > StandardLandingDist:=S*cos(theta)*(StandardLandingTime-Times[i]); > LandingDifference:=abs(DistA-StandardLandingDist) +abs(StandardLaunchingDist); > ReturnVal:=[evalf(parapath,3), evalf(standard,3),LandingDifference, compareplots]: > end: Water Rockets in Flight Page 47 of 60 2/13/16 Generating the 3D Output Table 1: Observed Data Enter the frames corresponding to the data points, the perceived inflight heights V[i], and horizontal distances H[i] : > F:=[0,7,11,15,50,55,59,63,71]; > V := [5.4864, 9.4488, 12.8016, 13.1064, 10.0584, 7.3152, 4.5720]; > H := [.6096, 1.2192, 1.8288, 8.5344, 9.1440, 9.7536, 10.3632]; > CamHeight := 1.5240;BuildingDistance := 24.8412;DistA := 4.5212;DistB := 4.1148; DistC:=7.3152; > evalf([F,V,H, CamHeight, BuildingDistance, DistA, DistB,DistC],3); Tables 2 and 3: In-Flight Data Points > S:=FlightPoints(F, V, H,30.0, CamHeight, BuildingDistance, DistA, DistB, DistC): Generate the values for Table 2: > evalf([S[6], S[7], S[8]], 3); > Times:=S[1]; Xvals:=S[2]; Yvals:=S[3]; Zvals:=S[4]; Generate the values for Table 3: > evalf([Times, Xvals, Yvals, Zvals],3); Plot the data points: > S[5]; Polynomial Interpolation to Fit a 6th Degree Curve to the Data Points Choose which 6 data points to use. We tried several sets, and settled on omitting the 3rd and 6th data points. > DataList:=[1,2,4,5,7,8,9]; > P:=PolyFit(Times, Xvals, Yvals, Zvals, DataList): Here we define the component functions for the space curve R(t) modeling the rocket flight path. The unapply command converts the expression output of the procedure into a function. > X:=unapply(P[1],t); > Y:=unapply(P[2],t); > Z:=unapply(P[3],t); > R:=t-><X(t), Y(t), Z(t)>; Here is the space curve to three significant digits. > evalf(R(t),3); > for i from 4 to 7 do display(P[i]); od; Velocity and Acceleration > Q:=TimeDerivs(R): > velocity:=evalf(Q[1],3); > acceleration:=evalf(Q[2], 3); 1. How High? > HowHigh(Z); > tmax:=HowHigh(Z)[1]; > height:=HowHigh(Z)[2]; Time and maximum height to three significant digits: > evalf([tmax, height],3); 2. How Fast? > H:=HowFast(R,tmax,Times[nops(Times)]): Velocity vectors at 0, tmax, tland: Water Rockets in Flight Page 48 of 60 2/13/16 > evalf(H[1], 3); Accelerations vectors at 0, tmax, tland: > evalf(H[2],3); Speed at 0, tmax, tland: > evalf(H[3],3); Speed in miles/hour at 0, tmax, tland" > evalf(H[4], 3); Norm of acceleration at 0, tmax, tland: > evalf(H[5], 3); 3. How Far? > HowFar(R, tmax, Times[nops(Times)]); Here are the total arclength, ascending arclength, and descending arclength, respectively: > evalf(%,3); 4. What Was the Curvature? > C:=curvature(R,tmax, Times[nops(Times)]): Here are, in order, tmax, the curvature at time tmax, the radius of the osculating circle at time tmax, the time when the maximum curvature occurred, the maximum curvature, the minimum radius of an osculating circle: > seq(evalf(C[i],3), i=1..6); Here is a plot of the curvature function: > C[7]; 5. When did the Stages Occur? > S:=Stages(R, tmax, Times[nops(Times)]): Here are the graphs we considered when determining the stages of the rocket flight: > for i from 1 to 8 do S[i]; od; In our analysis, we needed to find the time of the first relative minimum in the norm of the acceleration: > fsolve(diff(sqrt(DotProduct(acceleration, acceleration)),t)=0,t=0..1); > evalf(%,3); 6. Wind vs Gravity? A plot of the vertical component of the acceleration vector and the horizontal line at -9.81 meters/second^2: > WindGrav(R, Times[nops(Times)]); 7. How Far Off Course? We first used the first two data points to estimate the parameters for the standard model, so in put the list [1,2]. > W:=WindBlown(X,Y,Z,Times, Xvals, Yvals, Zvals,DistA,[1,2]): The reparameterized flight path: > W[1]; The standard model: > W[2]; The difference in the launch distances and landing distances: > W[3]; A plot comparing the two curves: > W[4]; We then used the second two data points to estimate the parameters for the standard model, so input the list [2,3]. Water Rockets in Flight Page 49 of 60 2/13/16 > W:=WindBlown(X,Y,Z,Times, Xvals, Yvals, Zvals,DistA,[2,3]): The reparameterized flight path: > W[1]; The standard model: > W[2]; The difference in the launch distances and landing distances: > W[3]; A plot comparing the two curves: > W[4]; Least Squares Fit Version LeastSquaresFit Procedure LeastSquaresFit uses the least squares method for fitting an nth degree polynomial to a set of data points. The output from this procedure may be used exactly as the output from the PolyFit proceedure. Input: Times, Xvals, Yvals, Zvals are the times, x-coordinates, y-coordinates, z-coordinates, respectively, of a list of data points; N is the degree of the polynomial for fitting the data. OutPut: A list [Xcurve, Ycurve, Zcurve, Xplot, Yplot, Zplot, WholePlot], where Xcurve, Ycurve, Zcurve are the coordinate functions of the curve approximating the rocket flight path using least squares fits; Xplot, Yplot, Zplot are 2D plot structures of Xcurve, Ycurve, Zcurve, respectively, with respect to time, together with the chosen data points; and WholePlot is a 3D plotstructure of the spacecurve approximating the rocket flight path, again displayed together with the chosen data points. > LeastSquaresFit:=proc(Times, Xvals, Yvals, Zvals, N) > local Xcurve, Ycurve, Zcurve, Xplot, Yplot, Zplot, WholePlot, ReturnVal; Digits:=10; Find least square fits for the X, Y, and Z coordinate functions. Here we fit to polynomials with no constant terms for the X and Z coordinate functions to reflect the initial values of 0 for both those functions (while Y(0) is non-zero). > Xcurve:=unapply(LeastSquares(Times, Xvals, t, curve=sum('p[j]*t^j', 'j'=1..N)),t); > Ycurve:=unapply(LeastSquares(Times, Yvals, t, curve=sum('p[j]*t^j', 'j'=0..N)),t); > Zcurve:=unapply(LeastSquares(Times, Zvals, t, curve=sum('p[j]*t^j', 'j'=1..N)),t); Plot each of the coordinate functions with respect to time, together with the chosen data points. > Xplot:=display([plot(Xcurve(t), t=Times[1]..Times[nops(Times)],labels=[t,X]),plot([seq([Times[i], Xvals[i]], i=1..nops(Times))],style=point, symbol=diamond)]): > Yplot:=display([plot(Ycurve(t), t=Times[1]..Times[nops(Times)],labels=[t,X]),plot([seq([Times[i], Yvals[i]], i=1..nops(Times))],style=point, symbol=diamond)]): > Zplot:=display([plot(Zcurve(t), t=Times[1]..Times[nops(Times)],labels=[t,X]),plot([seq([Times[i], Zvals[i]], i=1..nops(Times))],style=point, symbol=diamond)]): Now plot the space curve with the chosen data points. > WholePlot:=display([spacecurve([Xcurve(t),Ycurve(t),Zcurve(t)], t=Times[1]..Times[nops(Times)]),pointplot3d([seq([Xvals[i], Yvals[i],Zvals[i]], i=1..nops(Times))],style=point, symbol=diamond)]): > ReturnVal:=[Xcurve(t),Ycurve(t),Zcurve(t),Xplot,Yplot,Zplot,WholePlot]; > end: LeastSquaresFit Output The components of the space curve, found using least squares fit, and also the maximum height for comparison to the polynomial interpolation version. > P:=LeastSquaresFit(Times, Xvals, Yvals, Zvals, 6): > X:=unapply(P[1],t); Water Rockets in Flight Page 50 of 60 2/13/16 > Y:=unapply(P[2],t); > Z:=unapply(P[3],t); > R:=t-><X(t), Y(t), Z(t)>; Here is the space curve to three significant digits. > evalf(R(t),3); > HowHigh(Z); > evalf(%,3); Water Rockets in Flight: 2D Modeling and Analysis Load Packages > restart; > with(plots):with(linalg):with(VectorCalculus):with(stats): with(CurveFitting): HeightPoints Procedure HeightPoints estimates the height of the rocket at various times from the video frame information. Input: Frames is a list of the frames from which the stills are taken; FramesPerSecond is the number of frames taken per second by the camcorder; CamHeight is the height of the camcorder above the ground; PerceivedHeights and HorzDist are the corresponding list of heights and horizontal distances measured from the blueprint; BuildingDistance is the perpendicular distance from the camcorder to the building; DistA is the distance from the rocket launch site to the rocket landing site; DistB is the distance from the camcorder to the rocket landing site; DistC is the distance from the camcorder to the rocket launch site (on the line from the camcorder to the building). Output: A list of lists [Times, Zvals, PointPlot, As, ns, ms], where Times and Zvals are the times and heights, respectively; PointPlot is a plot structure of the estimated heights during the rocket flight; and As, ns, ms are the intermediate values of Table 2. > HeightPoints:=proc(Frames, PerceivedHeights, HorzDists, FramesPerSecond, CamHeight, BuildingDistance, DistA, DistB, DistC) > local angle, A,B, H,i,n,m, x,y, z,r, As, ns, ms, PointsPlot,Times, Zvals, ReturnVal: First convert the frames into seconds: > Times:=[seq(Frames[i]/FramesPerSecond, i=1..nops(Frames))]; The following function takes the lengths a, b, c of a generic triangle and, using the law of cosines, returns the angle (in radians) opposite side a: > angle:=(a,b,c)->evalf(arccos((b^2+c^2-a^2)/(2*b*c))): Use this to find A, the angle at the camcorder between the rocket launch and landing sites > A:=angle(DistA, DistB, DistC); Since the line from the camcorder through the launch site forms a right angle with the building, this angle can be used to find the horizontal distance along the building at landing. At launch the horizontal distance is 0. > H:=[0, seq(HorzDists[i], i=1..nops(HorzDists)), (BuildingDistance)*tan(A)]; Using the horizontal distances above, find the ground angles between the launch site and the rocket position at each time: > for i from 1 to nops(H) do A[i]:=evalf(arctan(H[i]/(BuildingDistance))); od; Also use A and the fact that the line from the camcorder through the launch site to the building is perpendicular to the building to find the hypotenuses n[i]: > for i from 1 to nops(H) do n[i]:=(BuildingDistance)/cos(A[i]); od; Use the law of cosines to find B: > B:=angle(DistB, DistA, DistC); Water Rockets in Flight Page 51 of 60 2/13/16 Now use the proportions from the law of sines to find the lengths of m[i]: > m[1]:=DistC; for i from 2 to nops(H) do m[i]:= evalf(sin(B)*DistC/sin(Pi-(B+A[i]))); od; Similar triangles can be used to determine the actual rocket heights from the perceived heights against the building. There aren't perceived heights for the launch and landing, so assign these values: > z[1]:=0; z[nops(H)]:=0; Now get the rest of the actual heights using similar triangles, and remembering to subtract the camcorder height from the r[i]'s, and then adding it back in to get the actual rocket heights, z[i]: > for i from 1 to nops(PerceivedHeights) do r[i+1]:=evalf((PerceivedHeights[i]CamHeight)*m[i+1]/n[i+1]); od; > for i from 2 to nops(H)-1 do z[i]:=r[i]+CamHeight od; > Zvals:=[seq(z[i], i=1..nops(H))]; List the intermediate values for Table 2: > As:=[seq(A[i], i=1..nops(H))]; > ns:=[seq(n[i], i=1..nops(H))]; > ms:=[seq(m[i], i=1..nops(H))]; Plot a graph of this data: > PointsPlot:=display(pointplot({seq([Times[i],z[i]], i=1..nops(H))},style=point, symbol=diamond, axes=normal,labels=[time,height])): > ReturnVal:=[Times, Zvals, PointsPlot, As, ns, ms]; > ReturnVal; > end: PolyFitOne Procedure PolyFitOne uses interpolation to fit n+1 selected data points to a nth degree polynomial. Input: Times, Zvals are the times and heights, respectively, of a list of data points. DataList is a list of which n of those data points to use to fit the curve (for example, for a 6th degree polynomial, choose 7 data points from a list of at 7 or more data points). OutPut: A list [Zcurve, Zplot], where Zcurve is the curve approximating the rocket height using polynomial interpolations; and Zplot is a 2D plot structures of Zcurve, with respect to time, together with the chosen data points. > PolyFitOne:=proc(Times, Zvals, DataList) > local Zcurve, Zplot, ReturnVal; Find a polynomial interpolation for the height function Zcurve. The 'unapply' command is necessary to change the output of PolynomialInterpolation into a function. >Zcurve:=unapply(PolynomialInterpolation([seq(Times[DataList[i]], i=1..nops(DataList))], [seq(Zvals[DataList[i]], i=1..nops(DataList))], t),t): Now plot the height function with respect to time, together with the chosen data points: > Zplot:=display([plot(Zcurve(t), t=Times[1]..Times[nops(Times)],labels=[t,X]),plot([seq([Times[i], Zvals[i]], i=1..nops(Times))],style=point, symbol=diamond)]): > ReturnVal:=[Zcurve(t),Zplot]; > end: HowHighOne Procedure HowHighOne determines how high the rocket went. Input: The height function Z. Output: A list [tmax, Zmax], where tmax is the time when the maximum height occurs, and Zmax is the maximum height attained. > HowHighOne:=proc(Z) > local tmax, Zmax, ReturnVal; > tmax:=fsolve(D(Z)); Water Rockets in Flight Page 52 of 60 2/13/16 > Zmax:=Z(tmax); > ReturnVal:=[tmax, Zmax]; > ReturnVal; > end: HowFastOne Procedure HowFastOne finds the velocity, takes the absolute value to find the speed converted to miles per hour, and finds the acceleration, at each of the launch, tmax, and landing times. Input: Z, the height function; tmax, the time when maximum height was attained; and tland, the time when the rocket landed. Output: A list of lists [[V[1], V[2], V[3]], [A[1], A[2],A[3]], [mphS[1], mphS[2], mphS[3]]], where V[i], A[i], mphS[i], and are the velocity, acceleration, and speed in miles/hour, respectively, and evaluated at 0 when i = 1, at tmax when i = 2, and tland when i = 3. > HowFastOne:=proc(Z, tmax, tland) > local Zprime,V, Z2prime, A, i,mphspeed, accel, ReturnVal; Find the velocity, and then evaluate it at t =0, tmax, and tland., and take the absolute values and convert to miles per hour for the speed: > Zprime:=diff(Z(t),t); > V[1]:=subs(t=0, Zprime); > V[2]:=subs(t=tmax, Zprime); > V[3]:=subs(t=tland, Zprime); > for i from 1 to 3 do mphspeed[i]:=abs(V[i])/0.447; od; Find the accelerations, and again evaluate it at t =0, tmax, and tland: > Z2prime:=diff(Zprime,t); > A[1]:=subs(t=0, Z2prime); > A[2]:=subs(t=tmax, Z2prime); > A[3]:=subs(t=tland, Z2prime); > ReturnVal:=[[seq(V[i], i=1..3)], [seq(A[i], i=1..3)],[seq(mphspeed[i], i=1..3)]]; > end: StagesOne procedure StagesOne provides the plots to consider when determining the stages of the rocket flight. The recovery stage begins at time t=tmax. The end of the the thrusting stage/beginning of the coasting stage can be more subtle. This procedure does not determine the stages; it simply provides the appropriate graphs for determining the stages. These graphs must be analyzed on a case-by-case basis to determine the stages. Input: Z, the height curve, and tland, the time when the rocket landed. Output: A plot of the velocity (dashed line) and acceleration (solid line) on the same set of axes. > StagesOne:=proc(Z, tland) > local Zprime, Z2prime, ZprimePlot, Z2primePlot, ReturnVal; Find the velocity: > Zprime:=diff(Z(t),t); Find the acceleration: > Z2prime:=diff(Zprime,t); > ZprimePlot:=plot(Zprime, t=0..tland, linestyle=DASH, color=black): > Z2primePlot:=plot(Z2prime, t=0..tland, linestyle=SOLID,color=black): > ReturnVal:=display({ZprimePlot, Z2primePlot}, title="velocity (dashed) \n acceleration (solid)"); > end: WindGravOne Procedure Water Rockets in Flight Page 53 of 60 2/13/16 WindGravOne displays a graph comparing the acceleration to the constant acceleration due to gravity. Input: Z, the height curve, and tland, the time when the rocket landed. Output: A plot of the acceleration curve together with a horizontal line at height -9.81, the gravitational constant. > WindGravOne:=proc(Z,tland) > local Zprime, Z2prime; > Zprime:=diff(Z(t),t): > Z2prime:=diff(Zprime,t): > plot({Z2prime, -9.81}, t=0..tland); > end: WindBlownOneProcedure WindBlownOne compares the height curve of the rocket with the standard projectile model. Input: Z, the height curve; Times, the list of times data was taken; Zvals, the original data points; L=[i,j] with i<j, a list of which two data points to use to estimate the initial velocity in the standard model; and tland, the rocket landing time. Output: A list [standard, AirTimeDifference, compareplots], where standard is the standard model; AirTimeDifference is the difference in time that the rocket was in the air; and compareplots is both models graphed on the same set of axes, with the height curve a solid line and the standard curve a dashed line. > WindBlownOne:=proc(Z, Times, Zvals, L, tland) > local InitVelocity, standard, StandardLaunchingTime, StandardLandingTime, AirTimeDifference, i, j, A, B, compareplots, ReturnVal; > i:=L[1]; j:=L[2]; > InitVelocity:=(Zvals[j]-Zvals[i])/(Times[j]-Times[i]); > standard:=InitVelocity*(t-Times[i])-(9.81/2)*(t-Times[i])^2 +Zvals[i]; We also need to find the correct values of t so that the standard curve remains positive. This means finding the two times when the standard function is zero, and letting t range between those two values. > StandardLaunchingTime:=min(fsolve (standard=0,t)); > StandardLandingTime:=max(fsolve(standard=0,t)); > A:=plot(Z, 0..tland, linestyle=SOLID, color=black): > B:=plot(standard, t=StandardLaunchingTime..StandardLandingTime,linestyle=DASH, color=black): > compareplots:=display([A,B], title="Height curve - Solid line \n Standard curve - Dashed line"): We consider the difference in the air time, which will give us a sense of how the wind may have held the rocket in the air long than might be expected, or driven it into the ground earlier than might be expected. > AirTimeDifference:=abs(tland - (StandardLandingTime-StandardLaunchingTime)); > ReturnVal:=[evalf(standard,3),AirTimeDifference, compareplots]: > end: Generating 2D Output Table 1: Observed Data Enter the frames corresponding to the data points, the perceived inflight heights V[i], and horizontal distances H[i] : > F:=[0,7,11,15,50,55,59,63,71]; > V := [5.4864, 9.4488, 12.8016, 13.1064, 10.0584, 7.3152, 4.5720]; > H := [.6096, 1.2192, 1.8288, 8.5344, 9.1440, 9.7536, 10.3632]; > CamHeight := 1.5240;BuildingDistance := 24.8412;DistA := 4.5212;DistB := 4.1148; DistC:=7.3152; Water Rockets in Flight Page 54 of 60 2/13/16 > evalf([F,V,H, CamHeight, BuildingDistance, DistA, DistB,DistC],3); Table 2 and Heights > S:=HeightPoints(F, V, H,30.0, CamHeight, BuildingDistance, DistA, DistB, DistC): Generate the values for Table 2: > evalf([S[4], S[5], S[6]], 3); Generate the times and corresponding heights: > Times:=S[1]; Zvals:=S[2]; Evaluate to 3 significant digits: > evalf([Times, Zvals],3); Plot the data points: > S[3]; Polynomial Interpolation to Fit a 6th Degree Curve to the Data Points Choose which 6 data points to use. We tried several sets, and settled on omitting the 3rd and 6th data points. > DataList:=[1,2,4,5,7,8,9]; > P:=PolyFitOne(Times, Zvals, DataList): Here we define the height function Z(t) modeling the rocket flight path. The unapply command converts the expression output of the procedure into a function. > Z:=unapply(P[1],t); Here is the height function to three significant digits. > evalf(Z(t),3); > P[2]; 1. How High? > HowHighOne(Z); > tmax:=HowHighOne(Z)[1]; > height:=HowHighOne(Z)[2]; Time and maximum height to three significant digits: > evalf([tmax, height],3); 2. How Fast? > H:=HowFastOne(Z,tmax,Times[nops(Times)]): Velocity at 0, tmax, tland: > evalf(H[1], 3); Accelerations at 0, tmax, tland: > evalf(H[2],3); Speed in miles/hour at 0, tmax, tland: > evalf(H[3],3); 3. When did the Stages Occur? Here are the graphs we considered when determining the stages of the rocket flight: > StagesOne(Z, Times[nops(Times)]); In our analysis, we needed to find the time of the first relative maximum of the acceleration curve: > fsolve(diff(Z(t),t$3)=0,t=0..0.75); > evalf(%,3); 4. Wind vs Gravity? A plot of the acceleration curve and the horizontal line at -9.81 meters/second^2: > WindGravOne(Z, Times[nops(Times)]); Water Rockets in Flight Page 55 of 60 2/13/16 5. How Far Off Course? We first used the first two data points to estimate the parameters for the standard model, so in put the list [1,2]. > W:=WindBlownOne(Z,Times,Zvals,[1,2], Times[nops(Times)]): The standard model: > W[1]; The airtime difference: > evalf(W[2],3); Comparing the plots: > W[3]; We then tried the second two data points to estimate the parameters for the standard model, so in put the list [2,3]. > W:=WindBlownOne(Z,Times,Zvals,[2,3], Times[nops(Times)]): The standard model: > W[1]; The airtime difference: > evalf(W[2],3); Comparing the plots: > W[3]; 7.3 Curve Fitting This section contains details on creating interpolated and least squares fit models. The information on least squares modeling is based on Sections 6.4 and 9.3 of Howard Anton’s Elementary Linear Algebra (7th edition, New York: John Wiley & Sons, 1994). Polynomial interpolation gives an exact fit of a polynomial curve to the data points. However, it requires that there be n+1 data points to fit a polynomial of degree n. On the other hand, the least-squares method can be used to fit any number n of data points to a polynomial of degree m, provided that n > m. The resulting polynomial may not exactly fit all of the data points, but will be a “best” estimate since it essentially minimizes the square of the differences between the actual data points and the nearest points on the approximating curve. Polynomial Interpolation When creating models to describe experimental data, a common objective is to find a mathematical function y = f(t) relating the input and output variables t and y by “fitting” a curve to the distinct data points obtained from the experiment. For our purposes in this module we will restrict such fitting functions to polynomials in t, but it is worth noting that there are many other possible choices for this estimation, including trigonometric, exponential, and logarithmic functions. Suppose that we wish to fit to the data points: t Water Rockets in Flight 0, y0 , t1, y1 , , t n , yn Page 56 of 60 (1) 2/13/16 to a polynomial of degree n (one less than the number of points) given by: y a0 a1t a2t 2 ant n . If we substitute the n 1 points into this polynomial, a linear system in n+1 equations results which would look like: y0 a0 a1t0 a2 t0 2 an t 0 n y1 a0 a1t1 a2 t12 ant1n yn a0 a1tn a2 tn 2 an t n n (2) In matrix form, this system looks like: 1 t0 t0n y0 a0 y a 1 t1 t1n 1 y = M a, where y , M , a 1 . n yn an 1 tn tn Since the data points in (1) are distinct and the system in (2) has the same number of equations as unknowns, then there will be at least one solution to that system. For example, a parabola interpolating the three points (0,2), (1,6), and (2,5) can be found as follows: a 0 1 0 0 2 M = 1 1 1 , y 6 , and a a1 . Then, M 1 = a 2 1 2 4 5 0 1 0 1.5 2 0.5 . 0.5 1 0.5 This yields the interpolated solution: 0 1 0 a = M y = 1.5 2 0.5 0.5 1 0.5 1 2 2 6 6.5 . 5 2.5 Therefore, the parabola interpolating these three points is y 2 6.5t 2.5t 2 . For large systems it is helpful to use a CAS such as Maple or a graphing calculator to solve the linear system. See Section 7.2 for our Maple code. For instance, we used the Maple8 command PolynomialInterpolation from the “CurveFitting” package to obtain 6th degree interpolating polynomials for each component of our model. Water Rockets in Flight Page 57 of 60 2/13/16 The Least Squares Method Suppose we have obtained these n data points from our experiment: t 0, y0 , t1, y1 , , tn 1, yn 1 (3) We wish to fit a polynomial of degree m, y a0 a1t a2t 2 listed in (3). amt m , to the data points A few results from linear algebra are now needed. If we substitute these n points into the polynomial, a linear system in n equations results: y0 a0 a1t0 a2 t0 2 am t 0 m y1 a0 a1t1 a2 t12 amt1m yn 1 a0 a1tn 1 a2 tn 12 (4) amtn 1m In matrix form, this system looks like: 1 y0 y 1 1 y = M a, where y , M yn 1 1 t0 t1 tn 1 a0 t0m a m t1 , a 1 . m tn 1 an 1 Since it will most likely be impossible to find a vector a that satisfies this system (4) exactly (i.e. finding a polynomial passing through all of the points in (3)), then we minimize the vertical error in the fit given by y M a . We represent the error in the approximation using a by e = y – Ma, and denote the n components of the error e by e0 2 through en1 . A least squares solution seeks to minimize e e0 2 ... en 12 . This yields the “least squares” of the vertical distances representing the component-wise error terms. Specifically, using some results from linear algebra, it can be shown that the least squares solution a * satisfies the equation: M T y Ma * 0 . Equivalently, it satisfies the “normal equations”: M T Ma* M T y . If M T M is invertible (which is guaranteed when n > m and at least m 1 points in (3) are distinct), then the unique least squares solution is given by: Water Rockets in Flight Page 58 of 60 2/13/16 a* M T M M T y . 1 For example, the least squares linear fit for the three points (0, 2), (1,6), and (2,5) can be found as follows: 1 0 2 a 1 1 1 3 3 T M = 1 1 , y 6 , and a* 0 . Then, M T = , = M M 3 4 , and 0 1 2 a1 1 2 5 1 4 3 M T M = 13 3 3 . This yields the least squares solution: 2 4 3 1 1 1 2 . Therefore, the best linear fit a M M 6 3 3 0 1 2 3 5 to these three points according to the least squares method is y 2 3t . * T 1 1 M y= 3 T See Section 7.2 for our Maple code. For instance, we used the Maple8 command LeastSquares from the “CurveFitting” package to obtain 6th degree least squares polynomials for each component of our model. 7.4 Resources Listed below are some useful websites concerning model rocketry and some of the mathematics behind model rocket flights. http://www.davescooltoys.com/ “Dave’s Cool Toys” is one example of an Internet site at which water-powered rockets can be purchased inexpensively. The “Outside Toy” link leads to ordering information about water-powered rockets as well as higher flying “meteor rockets” (powered by a baking soda and vinegar solution) and even higher flying “air burst rocket systems” (powered by compressed air). http://www.esteseducator.com/ This site is maintained by Estes Industries, which for over 40 years has been “…the world’s leader in the manufacturing of safe, reliable, and high quality rocket products” and currently offers a variety of “new and innovative educational products”. This is a comprehensive source of information about how model rocketry can be integrated into the classroom, and offers links to a number of different publications in PDF format on model rocketry (ranging from order forms to teachers guides to elementary mathematics information on rocket flights). Water Rockets in Flight Page 59 of 60 2/13/16 http://ojps.aip.org/journals/doc/AJPIAS-ft/vol_68/iss_3/223_1.html The paper by G.A. Finney is available for subscribers of the American Journal of Physics. The paper looks at the effects of air resistance and thrust on the onedimensional path of a water-propelled rocket launched vertically. http://www.geocities.com/CapeCanaveral/Hangar/5421/anatomy.html This website is maintained by the Future Astronauts of America Foundation, “a multi-faceted program designed to encourage young students and adults to become involved with the exciting world of space science and its applications.” This site provides information about model rocket components. It also offers useful descriptions of the flight sequence of a model rocket, including its thrusting, coasting, and recovery stages. http://hyperphysics.phy-astr.gsu.edu/hbase/hframe.html This HyperPhysics website is “an exploration environment for concepts in physics which employs concept maps and other linking strategies to facilitate smooth navigation.” It contains useful information on rocket propulsion. The site was developed and is maintained by C. Rod Nave from the Department of Physics and Astronomy at Georgia Southern University. http://www.mohaveinstrument.com/ This site contains information about commercially available electronic theodolites. http://www.grc.nasa.gov/WWW/K-12/airplane/index.html Coordinated by the NASA Glenn Research Center, this website is part of the Glenn Learning Technologies Project and offers a “Beginner’s Guide to Aerodynamics” and a “Beginner’s Guide to Model Rockets”. The model rocket information includes some of the basic mathematics and physics concepts that affect model rocket design and flight. The site is intended to offer K-12 teachers, students, and others with basic background information on aerodynamics and propulsion. http://epubs.siam.org/sam-bin/dbq/article/34822 Available at this site is J.M. Prusa’s excellent physics paper entitled “Hydrodynamics of a water rocket” published in SIAM Review (42, No. 4, 719726, 2000). This paper details a general model for a water rocket flight, and offers advanced analysis of the trajectory of a water rocket flight. The paper is suitable for students with applied mathematics or engineering interests at the advanced undergraduate level or beginning graduate level (for example, in a fluid dynamics course). It also offers a good application for an advanced graduate-level course in computational methods. Water Rockets in Flight Page 60 of 60 2/13/16