SolverTest.frink

View or download SolverTest.frink in plain text format


// This program tests the Solver class.
use Solver.frink

symbolicMode[true]
showApproximations[false]

// Derive the altitude for geosynchronous orbit.
s = new Solver[[a === v^2/r,
                a === omega^2 r,
                omega === 2 pi f,
                T === 1/f,
                F === m a,
                F === G m1 m2 / d^2,
                m1 === m,
                d === r,
                T === 1 day,
                m2 === earthmass],
               ["G","pi", "earthmass", "day"]]

//s.dump[]
//s.draw[]
s.initialize[]
//s.draw[]
//println[s.getEquationNode[0].getSolutions["v"]]
//println[s.getEquationNode[0].getSolutions["a"]]
//s.dump[]
//sols = s.solveAll[]
//println["All:"]
//println[join["\n", sols]]
args = [["T", 1 day], ["m2", earthmass]]
sols = s.solveForSymbolic["d", args]
println["Symbolic:"]
println[join["\n", sols]]
println[]
//s.draw[]
println["Geosynch distance:"]
sols = s.solveFor["d", args]
println[join["\n", sols]]
println[]
args = [["m2", earthmass], ["T", 1 day]]
//sols = println[join["\n",s.solveFor["d", []]]]
//s.draw[]
println[]



// Physical system // Suppose the stone is thrown at an angle of 35.0° below
// the horizontal from the same building (h = 50.0 m) as in the example above.
// If it strikes the ground 60.8 m away, find the following. (Hint: For part
// (a), use the equation for the x-displacement to eliminate v0t from the
// equation for the y-displacement.)
// (a) the time of flight
// (b) the initial speed
// (c) the speed and angle of the velocity vector with respect to the
//    horizontal
phys = new Solver[[vx === v0 cos[35 degrees],
                   vy0 === v0 sin[35 degrees],
                   y === h0 - 1/2 g t^2 - vy0 t,
                   x === vx t,
                   x === 60.8 m,
                   g === 9.8 m/s^2,
                   h0 === 50 m,
                   y === 0 m],
                  ["degrees", "m", "gravity", "s"]]
//phys.dump[]
//phys.draw[]
sols = phys.solveFor["t", []]
println[]
println["Solutions for t:"]
println[join["\n", sols]]
println[]

println["Solutions for v0:"]
sols = phys.solveFor["v0", []]
println[join["\n", sols]]
println[]
//phys.draw[]
println[]

sols = phys.solveAll[]
println["All:"]
println[join["\n", sols]]


phys.interact[]


// Simultaneous equation test.
//t = new Solver[[3a - 2b + c === 3,  4a + b - 3c === 10,  a + 6b - 2c === 5]]
t = new Solver[[3a - 2b + c === 3,  4a + b - 3c === 10, a + 6b - 2c === 5]]
//t.draw[]
//t.dump[]
println[join["\n",t.solveAll[]]]
//t.draw[]
//t.dump[]
println[]


// Simultaneous equation test2
ss = new Solver[[a^2 + b^2 === 50, a + b === 10],[]]
ss.draw[]
//ss.dump[]
println[join["\n",ss.solveAll[]]]
println[]
println["Solutions for a: " + ss.solveFor["a", []]]
println["Solutions for b: " + ss.solveFor["b", []]]
println[]


println[]
lol = new Solver[[a + 2b + 2c === -1, a + 2b === -1, a + b - c === 0]]
println[join["\n",lol.solveAll[]]]


println[]
lol2 = new Solver[[1.1a + 2.2b + 2.2c === -1.1, a + 2b + 99.9c === -1, a + b - c === 0]]
println[join["\n",lol2.solveAll[]]]


println[]
lol3 = new Solver[[1.1a + 3.3b + 2.2c === -2.2, a + 3b + 0.9c === -2, a + b - c === 0]]
println[join["\n",lol3.solveAll[]]]


View or download SolverTest.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 17983 days, 23 hours, 22 minutes ago.