Non-linear Curve Fitting using Python

In this post, I show a sample code along with a YouTube tutorial that can be used to fit a set of data-points using a non-linear fitting function with multiple fitting parameters.

I believe the code is pretty much self explanatory, and the YouTube video goes through all the details, so I won’t write much.



import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
import numpy as np

#Fitting function
def func(x, a, b):
    return a*np.exp(b*x)
    #return a*x+b

#Experimental x and y data points    
xData = np.array([1, 2, 3, 4, 5])
yData = np.array([1, 9, 50, 300, 1500])

#Plot experimental data points
plt.plot(xData, yData, 'bo', label='experimental-data')

# Initial guess for the parameters
initialGuess = [1.0,1.0]    

#Perform the curve-fit
popt, pcov = curve_fit(func, xData, yData, initialGuess)

#x values for the fitted function
xFit = np.arange(0.0, 5.0, 0.01)

#Plot the fitted function
plt.plot(xFit, func(xFit, *popt), 'r', label='fit params: a=%5.3f, b=%5.3f' % tuple(popt))


YouTube Tutorial

SciPy Documentation

[wpedon id="7041" align="center"]

4 thoughts on “Non-linear Curve Fitting using Python

  1. how to do it for a function:(a*np.exp(b*x)+c) on data obtained from csv file?

  2. hi, can python do fitting for nonlinear curve? Let say have datas (x,y),and from there got the equation. the equation have 3 known variables (2 varied, 1 fixed) and 1 unknown variable. from the fitting curve, the report will gv value of the unknown variable. is pyhton can do that?

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.