0
Ok, so for my Analytical Mechanics class, we have a problem that requires the use of Maple, Mathematica, etc to solve. I was able to get a workable solution, but getting a final answer (for initial groundspeed, as I'll describe in a minute) involved a process of guess and check, manually tweaking variables to find a close approximation. My professor's solution did much the same thing. I don't like guess and check, since I'm sure Maple is capable of doing what I need it to do automatically. So I'd like some suggestions on how to make it work. First, though, The Problem:

C4.1 A bomber plane, about to drop a bomb, suffers a malfunction of its targeting computer. The pilot notes that there is a strong horizontal wind, so she decides to release the bomb anyway, directly over the visually sighted target, as the plane flies over it directly into the wind. She calculates the required ground speed of the aircraft for her flying altitude of 50,000 feet and realizes that there is no problem flying her craft at that speed. She is perfectly confident that the wind speed will offset the plane's speed and blow the bomb "backwards" onto the intended target. She adjusts the ground speed of the aircraft accordingly and informs the bombardier to release the bomb at the precise instant that the target appears directly below the plane in the crosshairs of his visual targeting device. Assume that the wind is blowing horizontally throughout the entire space below the plane with a speed of 60 mph, and that the air density does not vary with altitude. The bomb has a mass of 100kg. Assume that it is spherical in shape with a radius of 0.2 m.

(a) Calculate the required ground speed of the plane if the bomb is to strike the target.

(b) Plot the trajectory of the bomb. Explain why the "trailing side" of the trajectory is linear.

(c) How precisely must the pilot control the speed of the plane if the bomb is to strike within 100 m of the target?

That's the problem. I should note that gravity is assumed to be constant at 9.8m*s^-2 for the whole trip down too. Now, the way I proceeded in my worksheet is that I first set my constants, then started working out my equations of force. We're dealing with both the linear (negligible) and quadratic versions of drag here (as will be obvious from the worksheet), so that makes the force equations a bit complicated. But anyway, after finding my force equations in x and y, I set up a DE in x, and a DE in y, based on the F=ma law. So, then I drop the DEs into dsolve, and I get back a list of procedures. This is where I got hung up. If I input some arbitrary value for the ground speed as an initial condition, then I can find y(t) and x(t) at any time t. However, I can't get maple to tell me t when y(t)=0. Neither have I been able to figure out how to get maple to give me the groundspeed when y(t)=0,x(t)=0. I've tried using fsolve and minimize, but neither one seems to want to work the way I'd like it to.

So anyway, here's my worksheet below:

> with(DETools); with(plots); with(plottools);

> Diam := .4; m := 100; g := 9.8; c1 := 0.155e-3*Diam; c2 := .22*Diam^2; ynot := 50000*.3048; Wx := 60*.44704; Wy := 0;

> Vwx := diff(x(t), t)+Wx;

> Vwy := diff(y(t), t)+Wy;

> theta := arctan(Vwy/Vwx);

> Vwmag := sqrt(Vwx^2+Vwy^2);

> Fdragmag := -c1*Vwmag-c2*Vwmag^2;

> Fdragx := Fdragmag*cos(theta);

> Fdragy := Fdragmag*sin(theta);

> yeq := m*(diff(y(t), t, t)) = -m*g+Fdragy;

> xeq := m*(diff(x(t), t, t)) = Fdragx;

> ics := (D(x))(0) = ground, (D(y))(0) = 0, y(0) = 50000*.3048, x(0) = 0;

> ohthehumanity := dsolve({ics, xeq, yeq}, numeric, [y(t), x(t)], output = listprocedure);

> ground := 107;

> hite := rhs(ohthehumanity[2]);

> hite(33); (rhs(ohthehumanity[4]))(33);

> fsolve(uneval(hite(t) = 11853));

That last fsolve was my attempt to find t when y=11853 (hoping to get 33 back), but it failed.

Anyone have any ideas on how to ELEGANTLY, or at least automatically, solve this mess for ground? My focus here is on doing this the right way, rather than simply getting an answer, so using maple commands would trump programming a bunch of loops to just continue the manual guess and check method automatically.

Thanks much,

Paul