I managed to solve it to the extent that it works well enough for me. I pinched some code and changed it a little for my purposes: https://stackoverflow.com/questions/32494230/newton-raphson-method-using-the-math-commons-library
public static void main(String args[]) { //setup all variables final double R =(new Double(args[0])).doubleValue(); //=250.0; final double om1 =(new Double(args[1])).doubleValue(); //= 5.0; final double om2 =(new Double(args[2])).doubleValue(); //= 15.0; final double th21=(new Double(args[3])).doubleValue(); //= 29.07965; final double th22=(new Double(args[4])).doubleValue(); //= 29.69008; final double D_obs = th21 - th22; BisectionSolver solver = new BisectionSolver(); UnivariateFunction f = new UnivariateFunction() { public double value(double s) { return ((delta(R,om1,th21,s)-delta(R,om2,th22,s)) - (D_obs)); } }; System.out.printf("The speciment offset is %.3f mm.\n", solver.solve(1000, f, -3, 3)); } On Thu, 4 Apr 2019 at 23:15, Matthew Rowles <rowle...@gmail.com> wrote: > I'm having difficulty even beginning to solve this problem. All examples > that I have found are either too simple or way too complex to digest. > > I want to to find the value S given a series of inputs. The function is > univariate but non-linear. S will always be between -3 .. 3. > > I would like to use the Apache Commons library, as I have had prior > experience in other sections of the code. > > For each time I want to solve my problem, I know the following information: > > double R =250.0; > double om1 = 5.0; > double om2 = 15.0; > double th21 = 29.07965; > double th22 = 29.69008; > double D_obs = th21 - th22; > > The actual values will change between solutions, but they are fixed for > any one particular solution. > > The value I want to find is: > > double S = 0.0; > > such that > > double d1 = delta(R,om1,th21,S); > double d2 = delta(R,om2,th22,S); > double D_calc = d1 - d2; > > have values to make > > double minme = Math.abs(D_obs - D_calc); > > a minimum. (ideally zero, but a minimum). > > The function delta is defined as > > public static double delta(double R, double om, double th2, double s) > { > if(Math.abs(s) <= 0.0001) //is the displacement == 0? > { > return 0.0; > } > else > { > return > Math.toDegrees((-1*Cos(th2)*s-R*Sin(om)+Sqrt(-1*Math.pow(Cos(th2),2)*Math.pow(s,2)+2*Cos(th2)*Sin(om)*R*s-Math.pow(Cos(om),2)*Math.pow(R,2)+Math.pow(R,2)+2*Math.pow(s,2)))/(Sin(th2)*s)); > } > } > > where, for example, Cosis defined elsewhere as > Math.cos(Math.toRadians(val)) > > Where/what can I read/do to get a start on this problem? > > > Thanks > > > Matthew >