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

PhD researcher at Friedrich-Schiller University Jena, Germany. I'm a physicist specializing in computational material science. I write efficient codes for simulating light-matter interactions at atomic scales. I like to develop Physics, DFT and Machine Learning related apps and softwares from time to time. Can code in most of the popular languages. Like to share my knowledge in Physics and applications using this Blog and a YouTube channel.
[wpedon id="7041" align="center"]

3 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?

Leave a Reply

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