From de4bedecaee9600b74ac6c0690b6db4a3560edb0 Mon Sep 17 00:00:00 2001 From: dharmatech Date: Mon, 6 Apr 2015 02:10:56 -0500 Subject: [PATCH] PSE 5E Example 4.6 full symbolic --- Tests/Tests.cs | 54 +++++++++++++++++++++++++++++++++++++------------- 1 file changed, 40 insertions(+), 14 deletions(-) diff --git a/Tests/Tests.cs b/Tests/Tests.cs index 4180edc..053a61f 100644 --- a/Tests/Tests.cs +++ b/Tests/Tests.cs @@ -1173,9 +1173,9 @@ static void Main(string[] args) xB == xA + vxA * tAB + ax * (tAB ^ 2) / 2, yB == yA + vyA * tAB + ay * (tAB ^ 2) / 2, - ay != 0, + vxA != 0, - yA != 0 + ay != 0 ); var vals = new List() { xA == 0, yA == 100, vxA == 40, vyA == 0, yB == 0, ax == 0, ay == -9.8, Trig.Pi == Math.PI }; @@ -1185,44 +1185,70 @@ static void Main(string[] args) DoubleFloat.tolerance = 0.00001; eqs - .SubstituteEqLs(vals.Where(eq => eq.b == 0).ToList()) .EliminateVariables(vxB, vyB, tAB) .IsolateVariable(xB) .LogicalExpand().SimplifyEquation() - .CheckVariable(yA) + .CheckVariable(ay) + .CheckVariable(vxA).SimplifyLogical() + .SubstituteEq(ax == 0) .AssertEqTo( new Or( new And( + vxA != 0, + xB == -1 * (ay ^ -1) * (vxA ^ 2) * (-1 * (-1 * (vxA ^ -1) * vyA + ay * (vxA ^ -2) * xA) + sqrt(((-1 * (vxA ^ -1) * vyA + ay * (vxA ^ -2) * xA) ^ 2) + 2 * ay * (vxA ^ -2) * ((vxA ^ -1) * vyA * xA - ay / 2 * (vxA ^ -2) * (xA ^ 2) + -1 * yA + yB))), + ay * (vxA ^ -2) != 0, + ay != 0), + new And( + vxA != 0, + xB == -1 * (ay ^ -1) * (vxA ^ 2) * (-1 * (-1 * (vxA ^ -1) * vyA + ay * (vxA ^ -2) * xA) + -1 * sqrt(((-1 * (vxA ^ -1) * vyA + ay * (vxA ^ -2) * xA) ^ 2) + 2 * ay * (vxA ^ -2) * ((vxA ^ -1) * vyA * xA - ay / 2 * (vxA ^ -2) * (xA ^ 2) + -1 * yA + yB))), + ay * (vxA ^ -2) != 0, + ay != 0))) + .SubstituteEqLs(zeros) + .AssertEqTo( + new Or( + new And( + vxA != 0, xB == -1 / ay * (vxA ^ 2) * sqrt(-2 * ay * (vxA ^ -2) * yA), ay / (vxA ^ 2) != 0, - ay != 0, - yA != 0), + ay != 0), new And( + vxA != 0, xB == 1 / ay * (vxA ^ 2) * sqrt(-2 * ay * (vxA ^ -2) * yA), ay / (vxA ^ 2) != 0, - ay != 0, - yA != 0))) + ay != 0))) .SubstituteEqLs(vals) .AssertEqTo(new Or(xB == 180.70158058105022, xB == -180.70158058105022)); eqs - .SubstituteEqLs(zeros) .EliminateVariables(vxB, xB, tAB) .IsolateVariable(vyB) .LogicalExpand().SimplifyEquation() - .CheckVariable(yA) + .CheckVariable(ay) + .AssertEqTo( + new Or( + new And( + vyB == -1 * ay * sqrt(2 * (ay ^ -1) * ((ay ^ -1) / 2 * (vyA ^ 2) + -1 * yA + yB)), + (ay ^ -1) != 0, + vxA != 0, + ay != 0), + new And( + vyB == ay * sqrt(2 * (ay ^ -1) * ((ay ^ -1) / 2 * (vyA ^ 2) + -1 * yA + yB)), + (ay ^ -1) != 0, + vxA != 0, + ay != 0))) + .SubstituteEqLs(zeros) .AssertEqTo( new Or( new And( vyB == -ay * sqrt(-2 / ay * yA), 1 / ay != 0, - ay != 0, - yA != 0), + vxA != 0, + ay != 0), new And( vyB == ay * sqrt(-2 / ay * yA), 1 / ay != 0, - ay != 0, - yA != 0))) + vxA != 0, + ay != 0))) .SubstituteEqLs(vals) .AssertEqTo(new Or(vyB == 44.271887242357309, vyB == -44.271887242357309));