2. General Physics

Legal Notice, Disclaimer, and Book Ordering Information:

Null

Setup

\(Clear["Global`*`"]; 
Off[General::spell]; 
Off[General::spell1]; 
    \)

Get["D:\Mma\Inits\ch2init.m"]

2.4 Problems

2.4.2  Projectile Motion in a Rotating Reference Frame

Problem 1:   
Coriolis and Centrifugal Forces

w[t_] = {-w0 Sin[theta], 0, w0 Cos[theta]}; fInertial = {0, 0, -m g};

r[t_] := {x[t], y[t], z[t]};

\(\(leftHandSide = m\ ∂\_{t, 2}r[t]; \)\)

rightHandSide=ExpandAll[fInertial-m CrossProduct[w'[t],r[t]]-mCor 2 m CrossProduct[w[t], (∂_t) r[t]]-mCen m CrossProduct[w[t], CrossProduct[w[t], r[t]]]];

eq1 = Thread[leftHandSide == rightHandSide]; eq1[[1]]

nOrder = 1; \(right = Normal[Series[rightHandSide, {t, 0, nOrder}]]; 

    left\ \  = Normal[Series[leftHandSide, \ \ {t, 0, nOrder}]]\)

eqs = 
      Thread[Flatten[CoefficientList[left, {t}]] == 
          Flatten[CoefficientList[right, {t}]]];

initial={x[0] == 0,y[0] == 0,z[0] == 0,x'[0]==vx0,y'[0]==vy0,z'[0]==vz0};

\(vars = 
      Flatten[Table[
            ∂\_{t, i}{x[t], y[t], z[t]}, {i, 0, nOrder + 2}] /. 
          t -> 0]\)

sol = 
      Simplify[Solve[Join[eqs, initial], vars][[1
          ]]];

genSolution = 
      (Map[Simplify, #1, {2}]&)[
        (Collect[#1, {t}]&)[
          Expand[Normal[
                ((Series[#1, {t, 0, nOrder + 2}]&)/@#1&)[{x[t], y[t], 
                    z[t]}]] //. sol]]]

initial={x[0] == x0,y[0] == y0,z[0] == z0,x'[0]==vx0,y'[0]==vy0,z'[0]==vz0};

eq2 = 
      Join[eq1, initial] /. {theta -> 0, mCen -> 1, mCor -> 1}

dsol2 = 
      DSolve[eq2, {x[t], y[t], z[t]}, t] // Simplify // Flatten

values = {g -> 9.8, w0 -> (1/100), x0 -> 0, 
        y0 -> 0, z0 -> 500, vx0 -> 1, vy0 -> 0, 
        vz0 -> 0};

\(\(p1 = 
      ParametricPlot3D[
        Evaluate[\({x[t], y[t], z[t]} //. dsol2\) //. values], {t, 0, 10}, 
        BoxRatios -> {1, 1, 1}
	, DisplayFunction -> Identity]; \)\)

\(\(p2 = 
      ParametricPlot3D[
        Evaluate[\({x[t], y[t], 0} //. dsol2\) //. values], {t, 0, 10}, 
        BoxRatios -> {1, 1, 1}
	, DisplayFunction -> Identity]; \)\)

\(\(p3 = 
      ParametricPlot3D[
        Evaluate[
          \(\({x[t], y[t], z[t]} //. dsol2\) /. {w0 -> 0}\) //. 
            values], {t, 0, 10}, BoxRatios -> {1, 1, 1}
	, 
        DisplayFunction -> Identity]; \)\)

\(\(Show[p1, p2, p3, 
      PlotLabel -> 
        FontForm[
          "Coriolis Deflection at North-Pole", {"Courier-Bold", 10}], 
      FaceGrids -> {{0, 1, 0}, {\(-1\), 0, 0}}, 
      BoxRatios -> {1, 1, 1}, ViewPoint -> {1, \(-1\), 0.7}, 
      AxesLabel -> {"x-south", "y-east", "z-vertical"}
	, 
      DisplayFunction -> $DisplayFunction]; \)\)

eq3 = 
      Join[eq1, initial] /. {theta -> (π/2), mCen -> 1, 
          mCor -> 1};

dsol3 = 
      Simplify[ExpToTrig[
          DSolve[eq3, {x[t], y[t], z[t]}, t][[1
            ]]]];

\(\(p1 = 
      ParametricPlot3D[
        Evaluate[\({x[t], y[t], z[t]} //. dsol3\) //. values], {t, 0, 10}, 
        BoxRatios -> {1, 1, 1}
	, DisplayFunction -> Identity]; \)\)

\(\(p2 = 
      ParametricPlot3D[
        Evaluate[\({x[t], y[t], 0} //. dsol3\) //. values], {t, 0, 10}, 
        BoxRatios -> {1, 1, 1}
	, DisplayFunction -> Identity]; \)\)

Limit[{x[t], y[t], z[t]} //. dsol3, w0 -> 0]

\(\(p3 = 
      ParametricPlot3D[
        Evaluate[
          Limit[{x[t], y[t], z[t]} //. dsol3, w0 -> 0] //. values], {t, 
          0, 10}, BoxRatios -> {1, 1, 1}
	, 
        DisplayFunction -> Identity]; \)\)

\(\(Show[p1, p2, p3, 
      PlotLabel -> 
        FontForm[
          "Coriolis Deflection at Equator", {"Courier-Bold", 10}], 
      FaceGrids 
        -> {{0, \(-1\), 0}, {\(-1\), 0, 0}, {0, 1, 0}, {0, 0, 1}}, 
      BoxRatios -> {1, 1, 1}, ViewPoint -> {1, 0, 0}, 
      AxesLabel -> {"x-south", "y-east", "z-vertical"}
	, 
      DisplayFunction -> $DisplayFunction]; \)\)