Hoo pealt veepommi viskamine

Oled gansterifilmidest saanud natuke halba inspiratsiooni ja otsustad jalgrattalt veepomme pilduda. 
Millise nurga all peaksid viskeid  sooritama, et veepommid võimalikult kaugele lendaksid?

Paigalseisust on kõige kasulikum palli ja ilmselt ka veepommi visata 45° nurga all. 
Aga kuidas muutub nurk siis, kui jooksed, sõidad jalgratta või autoga?

Füüsikaline kirjeldus

Olgu jalgratta kiirus r, palliviske kiirus olgu p, viskenurk olgu θ. Raskuskiirenduse 
konstant olgu g.Vaatluse alt jätame kõrvale tuuletakistuse ja selle,et vise ei toimu
 maapinnalt, vaid hoopis veidike kõrgemalt.

Newtoni II seaduse põhjal mõjub ülessevisatud kehale gravitatsioonijõud. 
Palli algkiiruse saame jagada kaheks komponendiks (horisontaalseks ja 
vertikaalseks). Need komponendid saab trigonomeetria abil üksteisest eraldada:

Horisontaalkiirus on konstantselt:  (Subscript[v, x])= p cos(θ) + r.
Vertikaalkiirus on algselt:  (Subscript[v, x])= p sin(θ).
Vertikaalkiirus hakkab tänu gravitatsioonijõule vähenema, kuni muutub trajektoori 
haripunktis nulliks. Seejärel hakkab vertikaalkiirus uuesti suurenema, kuni veepomm 
plartsatab maapinnale.

Leiame lennuaja, \(mis\ kulub\ pommi\ tõusmiseks\ oma\ trajektoori\ kõrgeimasse\ punkti . \ Teame\), \(et\ vertikaalkiiruse\ tuletis\ ehk\ kiirendus\ on\ ülesviskel\ võrdne\) -g-ga.

Seega saab vertikaalkiiruse ajahetkel t kirjutada kujul:  (Subscript[v, x])(t)= p sin(θ) -gt.

Et kõrgeimas punktis on vertikaalkiirus 0,siis saame võrrandi tõusmiseks kulunud aja  t jaoks:  0= p sin(θ) -gt.

Siit   t= (p/g) sin(θ) .

Et allalennule kulub täpselt sama aeg, siis tähistades veepommi kogu lennuaja T-ga,saame T= ((2p)/g) sin(θ) .

Nyyd saab leida ka pommi lennukauguse. Et horisontaalkiirus on konstantne, siis horisontaalse vahemaa leidmiseks peame korrutama korisontaalkiiruse lennuajaga, saame

s=(p cos(θ) + r )t=(p cos(θ)+r )((2  p)/g) sin(θ)=((2  (p^2))/g) cos (θ) 
                sin (θ)+((2  pr)/g) sin(θ)=((p^2)/g) sin (2  θ)+((2  pr)/g) sin(θ).

Seega viskekaugus sõltub viskekiirusest, jalgratta sõidukiirusest, viskenurgast ja raskuskiirenduse konstandist.

Ekstreemumülesanne

Leiame nurga, mille puhul pomm lendab kõige kaugemale:

s'(θ)=((p^2)/g) 2  cos (2  θ)+((2  pr)/g) cos(θ)

Võrdsustame tuletise nulliga, saame võrrandi:

0=((p^2)/g) 2  cos (2  θ)+((2  pr)/g) cos(θ)

korrutame võrrandi mõlemat poolt (g/(2  p)), saame:

0=p cos (2  θ)+r cos(θ).

Raskuskiirenduse konstant koondus välja, otsitav nurga väärtus 
sõltub ainult kahest kiirusest.

Et cos (2θ) = (cos^2)(θ) - (sin^2)(θ) =  (cos^2)(θ) - (1-(cos^2)(θ)) = 2(cos^2)(θ) -1, 
siis saame viiamtisaadud võrrandi esitada kujul:

0=2  p (cos^2) (θ)+r cos(θ)-p=0.

Saime ruutvõrrandi cos(θ) suhtes. Sellel võrrandil on 2 lahendit:

cos (θ)=((-r ± (Sqrt[(r^2) + 8  (p^2)]))/(4  p))

Mõistliku lahendi saame siis, kui eeldame, et vise ja liikumine toimuvad 
samas suunas, ning liikumine toimub positiivses suunas. Seega viskenurk 
peaks olema 0° ja 90° vahel. Siis on cos (θ) >0. Seega peame valima positiivse lahendi:

cos (θ)=((-r + (Sqrt[(r^2) + 8  (p^2)]))/(4  p)).Siit   θ=arccos(((-r + (Sqrt[(r^2) + 8  (p^2)]))/(4  p))).

Peamised kirjeldavad parameetrid:

(* p - pommiviske algkiirus, m/s *)
(* r - jalgratta liikumiskiirus m/s *)
(*g - gravitatsioonikonstant, m/s^2 *)
(*θ - pommi algnurk, deg *)
(* T - pommi lennuaeg, s *)
(* s - pommi lennukaugus, m *)

Remove["Global`*"]

t =.

r = 10; (*  jalgratta kiirus, m/s *)
p = 20.; (* pommiviske algkiirus, m/s *)
g = 9.8; (* gravitatsioonikonstant, m/s^2*)

θ=ArcCos[((-r + (Sqrt[(r^2) + 8  (p^2)]))/(4  p))]*(180/Pi)

s=((p^2)/g) Sin[2  θ*(Pi/180)]+((2  p*r)/g) Sin[θ*(Pi/180)]

T= ((2p)/g) Sin[θ*(Pi/180)]

obj1 = 
      ParametricPlot[{p* t *Cos[θ*(Pi/180)] + r*t, 
          p* t* Sin[θ*(Pi/180)] - g *t^2/2}, {t, 0, T}, 
        PlotStyle -> {RGBColor[1, 0, 0]}]

Viskenurga sõltuvus kiirusest tabelina ja nivoojoontena

α[r_, p_]:=ArcCos[((-r + (Sqrt[(r^2) + 8  (p^2)]))/(4  p))]*(180/Pi)

TableForm[
      Table[Round[α[r, p]], {r, 0. , 20. , 1}, {p, 1, 20, 1}], 
      TableHeadings -> Automatic]

ContourPlot[α[r, p], {r, 0, 25}, {p, 
        1. , 25}, PlotPoints -> 100, Contours -> 30, 
      Axes -> True, AxesLabel -> {"r", "p"}, 
      ContourShading -> False]