private bool CalcQ() { BestA = 0.0; BestB = 0.0; BestC = 0.0; var f = new DoubleParameterizedDelegate(AnalysisFunctions.ThreeParameterExponential); var fitter = new OneVariableFunctionFitter <TrustRegionMinimizer>(f); var lvect = new DoubleVector(); var kvect = new DoubleVector(); foreach (var pt in SpmVals) { lvect.Append(pt.X); kvect.Append(pt.Y); } var start = new DoubleVector(0.1, 0.1, 0.1); DoubleVector solution = fitter.Fit(lvect, kvect, start); BestA = solution[0]; BestB = solution[1]; BestC = solution[2]; q = BestA; return(true); }
private DoubleVector FitData(double[] xDataRaw, double[] yDataRaw) { DoubleParameterizedFunction func = new Function(); var f = new DoubleParameterizedDelegate( func.Evaluate); var fitter = new OneVariableFunctionFitter <TrustRegionMinimizer>(f); DoubleVector x = new DoubleVector(xDataRaw); DoubleVector y = new DoubleVector(yDataRaw); DoubleVector init = new DoubleVector((yDataRaw.Min()).ToString() + " " + 0.5 + " " + ((yDataRaw.Max() - yDataRaw.Min())).ToString()); DoubleVector solution = fitter.Fit(x, y, init); double[] yData = new double[xDataRaw.Length * 600]; double[] xData = new double[xDataRaw.Length * 600]; for (int g = 0; g < yData.Length; g++) { double rads = ((xDataCourse[0] + g)) * 2 * Math.PI / 180; yData[g] = MyFunction(solution, (rads)); xData[g] = xDataCourse[0] + g; Console.Writeline("x: " + xData[g] + " y: " + yData[g]); } return(solution); }