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 17591 days, 17 hours, 46 minutes ago.