From 3032cbd303dfa70bcd02d9bd514aded571d33cd8 Mon Sep 17 00:00:00 2001 From: Ben Culkin Date: Mon, 6 Apr 2020 16:46:59 -0400 Subject: Fix Bisection Get the various Bisection bits working properly --- CSMath/src/bisection/Bisection.java | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) (limited to 'CSMath/src/bisection/Bisection.java') diff --git a/CSMath/src/bisection/Bisection.java b/CSMath/src/bisection/Bisection.java index 039c9b9..06f6cf1 100644 --- a/CSMath/src/bisection/Bisection.java +++ b/CSMath/src/bisection/Bisection.java @@ -10,6 +10,7 @@ package bisection; import bjc.utils.math.Dual; import bjc.utils.math.DualExpr; +import bjc.utils.math.DualExpr.ExprType; /** * Bisect a curve to find bracketed roots of arbitrary real-valued functions. @@ -32,26 +33,26 @@ public class Bisection { DualExpr varXExpr = new DualExpr(varX); /* The functions to find the roots of. */ - DualExpr dualA = new DualExpr(DualExpr.ExprType.SUBTRACTION, - new DualExpr(DualExpr.ExprType.COS, varXExpr), varXExpr); + DualExpr dualA = new DualExpr(ExprType.SUBTRACTION, + new DualExpr(ExprType.COS, varXExpr), varXExpr); DualExpr dualB; { /* Construct the second function. */ - DualExpr tempA = new DualExpr(varXExpr, 5); - DualExpr tempB = new DualExpr(DualExpr.ExprType.MULTIPLICATION, new DualExpr(new Dual(3)), - new DualExpr(varXExpr, 4)); - DualExpr tempC = new DualExpr(DualExpr.ExprType.MULTIPLICATION, new DualExpr(new Dual(4)), - new DualExpr(varXExpr, 3)); - - dualB = new DualExpr(DualExpr.ExprType.ADDITION, - new DualExpr(DualExpr.ExprType.SUBTRACTION, tempA, tempB), - new DualExpr(DualExpr.ExprType.SUBTRACTION, tempC, new DualExpr(new Dual(1)))); + DualExpr tempA = new DualExpr(ExprType.POWER, varXExpr, new DualExpr(new Dual(5))); + DualExpr tempB = new DualExpr(ExprType.MULTIPLICATION, new DualExpr(new Dual(3)), + new DualExpr(ExprType.POWER, varXExpr, new DualExpr(new Dual(4)))); + DualExpr tempC = new DualExpr(ExprType.MULTIPLICATION, new DualExpr(new Dual(4)), + new DualExpr(ExprType.POWER, varXExpr, new DualExpr(new Dual(3)))); + + dualB = new DualExpr(ExprType.ADDITION, + new DualExpr(ExprType.SUBTRACTION, tempA, tempB), + new DualExpr(ExprType.SUBTRACTION, tempC, new DualExpr(new Dual(1)))); } - DualExpr dualC = new DualExpr(DualExpr.ExprType.SUBTRACTION, - new DualExpr(DualExpr.ExprType.MULTIPLICATION, varXExpr, varXExpr), + DualExpr dualC = new DualExpr(ExprType.SUBTRACTION, + new DualExpr(ExprType.MULTIPLICATION, varXExpr, varXExpr), new DualExpr(new Dual(3))); /* The approximated roots, using Newton's method. */ -- cgit v1.2.3