CurveFit.jl
July 27, 2026 · View on GitHub
CurveFit.jl is a high-performance curve fitting library for Julia that provides linear, polynomial, special function, and nonlinear least squares fitting algorithms. It is part of the SciML ecosystem and implements the common solve interface from CommonSolve.jl.
Installation
To install CurveFit.jl, use the Julia package manager:
using Pkg
Pkg.add("CurveFit")
Features
CurveFit.jl provides the following fitting algorithms:
- Linear fitting:
LinearCurveFitAlgorithm- General linear fits with customizable transformations - Log fitting:
LogCurveFitAlgorithm- Fitsy = a*log(x) + b - Power fitting:
PowerCurveFitAlgorithm- Fitsy = b*x^a - Exponential fitting:
ExpCurveFitAlgorithm- Fitsy = b*exp(a*x) - Polynomial fitting:
PolynomialFitAlgorithm- Fits polynomials of arbitrary degree - Rational polynomial fitting:
RationalPolynomialFitAlgorithm- Fits rational functions p(x)/q(x) - Sum of exponentials:
ExpSumFitAlgorithm- Fitsy = k + p1*exp(λ1*t) + p2*exp(λ2*t) + ... - King's law:
KingCurveFitAlgorithm,ModifiedKingCurveFitAlgorithm- For hotwire anemometry - Nonlinear least squares: Via
NonlinearCurveFitProblemwith any user-defined function
Quick Start
Linear Fit
using CurveFit
using CommonSolve: solve
x = 1.0:10.0
y = @. 1.0 + 2.0 * x # y = 1 + 2x
prob = CurveFitProblem(x, y)
sol = solve(prob, LinearCurveFitAlgorithm())
sol.u # (2.0, 1.0) - coefficients (slope, intercept)
sol(5.0) # Evaluate fitted curve at x=5
Polynomial Fit
using CurveFit
x = 1.0:10.0
y = @. 1.0 + 2.0*x + 0.5*x^2
prob = CurveFitProblem(x, y)
sol = solve(prob, PolynomialFitAlgorithm(degree=2))
sol.u # [1.0, 2.0, 0.5] - polynomial coefficients
sol(3.0) # Evaluate at x=3
Nonlinear Fit
using CurveFit
x = 1.0:10.0
fn(a, x) = @. a[1] + a[2] * x^a[3] # Nonlinear model
y = fn([3.0, 2.0, 0.7], x) # Generate data
prob = NonlinearCurveFitProblem(fn, [0.5, 0.5, 0.5], x, y) # Initial guess
sol = solve(prob)
sol.u # Fitted parameters ≈ [3.0, 2.0, 0.7]
sol(5.0) # Evaluate at x=5
Statistical Analysis
CurveFit.jl provides statistical functions compatible with StatsAPI.jl:
using CurveFit
# ... after fitting ...
coef(sol) # Fitted coefficients
residuals(sol) # Residuals
fitted(sol) # Fitted values
rss(sol) # Residual sum of squares
stderror(sol) # Standard errors
confint(sol) # Confidence intervals
Documentation
For more details, see the documentation.