public static string PolynomialFit(List <float[]> data) { int elements = data[0].Length - 1; int samples = data.Count; double[][] xy = new double[samples][]; double[] z = new double[samples]; for (int s = 0; s < samples; s++) { xy[s] = new double[elements]; for (int i = 0; i < elements; i++) { xy[s][i] = data[s][i + 1]; } z[s] = data[s][0]; } if (elements == 3) { double[] p = Fit.LinearMultiDim(xy, z, d => 1.0, d => d[0], d => d[1], d => d[2], d => d[0] * d[1], d => d[1] * d[2], d => d[0] * d[2], d => d[0] * d[1] * d[2] ); return($"a+bX+cY+dI+eXY+fYI+gXI+hXYI,{p[0]},{p[1]},{p[2]},{p[3]},{p[4]},{p[5]},{p[6]},{p[7]}"); } else if (elements == 2) { double[] p = Fit.LinearMultiDim(xy, z, d => 1.0, d => d[0], d => d[1], d => d[0] * d[1] ); return($"a+bX+cY+dXY,{p[0]},{p[1]},{p[2]},{p[3]}"); } else if (elements == 1) { double[] p = Fit.LinearMultiDim(xy, z, d => 1.0, d => d[0] ); return($"a+bX,{p[0]},{p[1]}"); } else if (elements == 0) { double[] p = Fit.LinearMultiDim(xy, z, d => 1.0 ); return($"a,{p[0]}"); } throw new ArgumentException(); }