# systemSolverTest2.frink

``` // Demonstration and test of solving systems of equations. use Solver.frink symbolicMode[true] showApproximations[false] // Ellipse equations. c = new Solver[[x^2/a^2 + y^2/b^2 === 1,                 e === sqrt[(a^2-b^2)/a^2],                 area===pi a b],                ["pi"]] c.draw[] println["Ellipse:"] println[join["\n",c.solveAll[]]] args = [["x", 10], ["y", 9]] c.draw[] println[c.solveForSymbolic["e",args]] println[] s = new Solver[[x*y===8, x+y===4]] println["Simultaneous:"] println[join["\n",s.solveAll[]]] println[] println["x = " + s.solveFor["x",[]]] println["y = " + s.solveFor["y",[]]] println[] t = new Solver[[3a - 2b + c === 3,  4a + b - 3c === 10,  a + 6b - 2c === 5, d === 4c - 10 + 2b]] //t.draw[] t.dump[] println[join["\n",t.solveAll[]]] println[] // Rump equation r = new Solver[[z === ((333 + 3/4) - x^2) y^6 + x^2 (11x^2 y^2 - 121 y^4 - 2) + (5 + 1/2) y^8 + x/(2y), x===77617, y===33096]] println["Rump:"] println[join["\n",r.solveAll[]]] println[] // Cohen, p. 11 /*cc = new Solver[[d0+d1+d2+d3+d4 === 1,                  d1+2d2+3d3+4d4 === 2(1-m),                  3d0-d2+3d4     === 2g20 + g11,                  theta d0 + phi d1 - phi d3 - theta d4 === m,                  2 theta d0 + phi d1 + phi d3 + 2 theta d4 === 2 g10],                  ["g20", "g11", "theta", "phi", "g10", "m"]] cc.draw[] //cc.dump[] println[join["\n",cc.solveAll[]]] println[]*/ // Expansion of the universe u = new Solver[[D0 hubbleconstant^2 e^(hubbleconstant t) === G m / d^2, d === D0,  D0 === 4.3 ly], ["hubbleconstant", "ly", "G"]] println[join["\n",u.solveFor["t"]]] println[] // Circle z = new Solver[[d === 2 r, c === pi d, a === pi r^2, e===f, g===h], ["pi"]] println[join["\n",z.solveAll[]]] println[] // See http://answers.yahoo.com/question/index?qid=20091120001614AAInec3 // solve for pB and pAB // TODO: //   eliminate pAprime and pAB, as those are what we want to solve for. bayes = new Solver[[pAB === pBA pA / pB,                     pA === 1 - pAprime,                     pAB === ( pBA pA ) / ( pBA pA + pBAprime pAprime )],                    []] //bayes.dump[] //bayes.draw[] println["Probability:"] println[join["\n", bayes.solveAll[]]] args = [["pA", 0.75], ["pBA", 0.8], ["pBAprime", 0.6]] println[] println["Symbolic:"] println["pB = " + bayes.solveForSymbolic["pB", args]] println["pAB = " + bayes.solveForSymbolic["pAB", args]] println[] println["Numeric:"] println["pB = " + bayes.solveFor["pB", args]] println["pAB = " + bayes.solveFor["pAB", args]] println[] // Cylinder.  See http://ask.metafilter.com/59183/Calculate-length-of-a-pipe-from-the-volume-it-holds // Basically, we want the solution for "L" given "d" and "v". println["Pipe:"] cyl = new Solver[[d === 2 r,                   c === pi d,                   a === pi r^2,                   v === a L],                  ["pi"]] println[join["\n", cyl.solveAll[]]] println[] sols = cyl.solveFor["L"] println["Solutions for L:\n" + join["\n", sols]] println[] // Not fully specified case. args = [["d", 3/4 inch]] nsols = cyl.solveForSymbolic["L", args] println["Solutions for L (not fully specified, symbolic):\n" + join["\n",nsols]] println[] nsols = cyl.solveFor["L", args] println["Solutions for L (not fully specified):\n" + join["\n",nsols]] println[] // Plug in values and solve. args = [["d", 3/4 inch], ["v", 27 gallons]] nsols = cyl.solveFor["L", args] println["Solutions for L (fully specified):\n" + join["\n", nsols]] println[] // Phi phi = new Solver[[x+1===1/x]] println[join["\n", phi.solveAll[]]] println[] // Shweeb collision shweeb = new Solver[[v === a t, d === 1/2 a t^2, E === 1/2 m v^2, E === m gravity h], ["gravity"]] //shweeb.dump[] //shweeb.draw[] println["Shweeb:"] println[join["\n", shweeb.solveAll[]]] args = [["d", 1.2 m], ["v", 30 km/hr], ["gravity", gee]] println[join["\n", array[shweeb.solveFor["a", args]->"gee"]]] println[join["\n", shweeb.solveFor["h", args]->"ft"]] println[join["\n", shweeb.solveFor["t", args]]] 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],                    h === h0 - 1/2 g t^2 - vy0 t,                    x === vx t],                   ["degrees"]] println["Ballistics:"] println[join["\n", phys.solveAll[]]] println[] args = [["x", 60.8 m], ["h0", 50 m], ["g", gravity], ["h", 0 m]] println[join["\n", eval[phys.solveFor["t", args]]]] println[] // Jupiter gravity jup = new Solver[[ E === m g h,                    E === 1/2 m v^2],                   ["g"]] println[join["\n", jup.solveAll[]]] println[] // Lorentz equation println["Relativity:"] lorentz = new Solver[[ gamma === 1/sqrt[1-v^2/c^2],                        dprime === d / gamma ],                        ["c"]] println[join["\n", lorentz.solveAll[]]] println[] args=[["d", 5 km], ["dprime", 1 m]] println[join["\n", lorentz.solveForSymbolic["v", args]]] println[] println[join["\n", lorentz.solveFor["v", args]]] println[] // Photon travel light = new Solver[[ f === c / lambda,                      omega === 2 pi f,                      f === 1/T,                      d === v t,                      phase === omega t],                      ["c", "pi"]] println["Photon:"] light.draw[] println[join["\n", light.solveAll[]]] println[] // Deep fryer fryer = new Solver[[ a === pi r^2,  v === a h, d === 2 r ], ["pi"]] println["Fryer:"] println[join["\n", fryer.solveAll[]]] args = [["d", 10.5 in], ["h", 7.5 in]] println[fryer.solveFor["v",args]->"gallons"] println[] // Not-directly-connected simultaneous. ndc = new Solver[[a + e === 10, b + e === 20, c + e === 30, d + e===40, b * d === 90],[]] //ndc.draw[] println[join["\n", ndc.solveAll[]]] //ndc.draw[] println[] ```

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 18660 days, 18 hours, 56 minutes ago.