diff --git a/src/FSharp/Fit.fs b/src/FSharp/Fit.fs
index 0e9e3f8b..3c290cda 100644
--- a/src/FSharp/Fit.fs
+++ b/src/FSharp/Fit.fs
@@ -39,18 +39,35 @@ module Fit =
let private tofs (f:Func<_,_>) = fun a -> f.Invoke(a)
+ /// Least-Squares fitting the points (x,y) to a line y : x -> a+b*x,
+ /// returning its best fitting parameters as [a, b] array.
let line x y = let p = Fit.Line(x,y) in (p.[0],p.[1])
+
+ /// Least-Squares fitting the points (x,y) to a line y : x -> a+b*x,
+ /// returning a function y' for the best fitting line.
let lineF x y = Fit.LineFunc(x,y) |> tofs
+
+ /// Least-Squares fitting the points (x,y) to a k-order polynomial y : x -> p0 + p1*x + p2*x^2 + ... + pk*x^k,
+ /// returning its best fitting parameters as [p0, p1, p2, ..., pk] array, compatible with Evaluate.Polynomial.
let polynomial order x y = Fit.Polynomial(x,y,order)
+
+ /// Least-Squares fitting the points (x,y) to a k-order polynomial y : x -> p0 + p1*x + p2*x^2 + ... + pk*x^k,
+ /// returning a function y' for the best fitting polynomial.
let polynomialF order x y = Fit.PolynomialFunc(x,y,order) |> tofs
+
+ /// Least-Squares fitting the points (x,y) to an arbitrary linear combination y : x -> p0*f0(x) + p1*f1(x) + ... + pk*fk(x),
+ /// returning its best fitting parameters as [p0, p1, p2, ..., pk] list.
let linear functions (x:float[]) (y:float[]) =
functions
|> List.map (fun f -> List.init (Array.length x) (fun i -> f x.[i]))
|> DenseMatrix.ofColumnsList (Array.length x) (List.length functions)
|> fun m -> m.QR(QRMethod.Thin).Solve(DenseVector(y)).ToArray()
|> List.ofArray
+
+ /// Least-Squares fitting the points (x,y) to an arbitrary linear combination y : x -> p0*f0(x) + p1*f1(x) + ... + pk*fk(x),
+ /// returning a function y' for the best fitting combination.
let linearF functions x y =
let parts = linear functions x y |> List.zip functions
in fun z -> parts |> List.fold (fun s (f,p) -> s+p*(f z)) 0.0
diff --git a/src/Numerics/Fit.cs b/src/Numerics/Fit.cs
index 86b3cf69..c23dcb43 100644
--- a/src/Numerics/Fit.cs
+++ b/src/Numerics/Fit.cs
@@ -101,7 +101,7 @@ namespace MathNet.Numerics
}
///
- /// LLeast-Squares fitting the points (x,y) to an arbitrary linear combination y : x -> p0*f0(x) + p1*f1(x) + ... + pk*fk(x),
+ /// Least-Squares fitting the points (x,y) to an arbitrary linear combination y : x -> p0*f0(x) + p1*f1(x) + ... + pk*fk(x),
/// returning a function y' for the best fitting combination.
///
public static Func LinearCombinationFunc(double[] x, double[] y, params Func[] functions)