optimumLaunch.frink

View or download optimumLaunch.frink in plain text format


/** This program determines the optimal launch angle to achieve the maximum
    range. */


use systemSolver2.frink
symbolicMode[true]
showApproximations[false]
showDimensionName[false]

// Solve the system symbolically.
// h is height, v0 is initial velocity, t is time, 
// theta is angle above horizontal.
launcher = new System[[h === h0 + Integrate[v0 sin[theta] - gravity t, t],
                       h === 0,
                       d === Integrate[v0 cos[theta], t]],
                      ["gravity"]]

println["Symbolic solutions:"]
launcher.solveAll[]
dsols = launcher.solveForValues["d", [["v0", 30 mph], ["h0", 50 feet sin[theta]]]]
println[join["\n\n",dsols]]
println[]

// Print distances for each launch elevation.
for theta = 0 degrees to 90 degrees step 1 degree
   for sol = eval[dsols]
      if (sol conforms length) && (sol > 0.01 ft) // Only positive, full solutions
         println[format[theta,"deg",3] + "\t" + format[sol,"ft",2]]


View or download optimumLaunch.frink in plain text format


This is a program written in the programming language Frink.
For more information, view the Frink Documentation or see More Sample Frink Programs.

Alan Eliasen was born 17646 days, 9 hours, 38 minutes ago.