Python進行指數(shù)和對數(shù)曲線擬合詳解
前言
在本文中,我們將學習如何在Python中進行指數(shù)和對數(shù)曲線擬合。首先我們要問的問題是什么是曲線擬合?
曲線擬合是構造曲線或數(shù)學函數(shù)的過程,其具有對一系列數(shù)據(jù)點的最佳擬合,可能受到約束。
- 對數(shù)曲線擬合:對數(shù)曲線是對數(shù)函數(shù)的曲線圖。
- 指數(shù)曲線擬合:指數(shù)曲線是指數(shù)函數(shù)的曲線圖。
讓我們考慮兩個方程
y = alog(x) + b 其中a、b是該對數(shù)方程的系數(shù)。
y = e(ax)*e(b)
我們將在上面的方程上擬合兩條曲線,并找到最佳擬合曲線。對于Python中的曲線擬合,我們將使用一些庫函數(shù)。
我們還將使用numpy.polyfit()方法來擬合曲線。這個函數(shù)有三個參數(shù)x,y,多項式次數(shù)(n)返回n次多項式的系數(shù)。
語法:numpy.polyfit(x,y,deg)
主要參數(shù):
x-> x坐標
y-> y坐標
deg ->擬合多項式的階數(shù)。因此,如果給定deg為1,我們得到線性多項式的系數(shù),或者如果它為2,我們得到二次多項式的系數(shù)。
對數(shù)曲線擬合
import numpy as np ???????# It is for plotting the curve import matplotlib.pyplot as plt
由于我們已經(jīng)導入了所需的庫,因此必須創(chuàng)建兩個名為x和y的數(shù)組。在創(chuàng)建這兩個數(shù)組之后,我們必須在numpy.log()方法的幫助下獲取x和y中的值的對數(shù)。
# Points on X-axis x_data = np.array([11, 23, 31, 43, 51]) # Points on Y-axis y_data = np.array([2, 4, 6, 8, 10]) print(x_data) print(y_data) # Taking log of x values xlog_data = np.log(x_data) print(xlog_data)
輸出
之后,得到x和y數(shù)組的對數(shù)值,在numpy.polyfit()的幫助下,我們找到了方程的系數(shù)。由于我們采用了線性方程,因此在polyfit方法中,我們將在度參數(shù)中傳遞1。
# Given log values of x , y as input curve = np.polyfit(log_x_data, y_data, 1) print(curve)
輸出
所以我們得到系數(shù)為[5.04,-10.79],我們可以得到曲線的方程為(y= a*log(x)+y,其中a,b是系數(shù))
y = 5.04 * log_x_data - 10.79 print(y)
輸出
現(xiàn)在,讓我們用xlog_data,ylog_data繪制一個圖,另一個用xlog_data和我們得到的y方程繪制一個圖。為了在python中繪制圖形,我們將使用Matplotlib.pyplot.plot()函數(shù)。
# Blue color plt.plot(log_x_data, y_data) ???????# Best fit in orange plt.plot(log_x_data, y)
在上圖中,黃線表示原始x和y坐標的圖,藍線是我們通過計算獲得的坐標圖,它是最佳擬合。
指數(shù)曲線擬合
我們將重復上述相同的過程,但唯一的區(qū)別是對數(shù)函數(shù)被指數(shù)函數(shù)取代。
x_data = np.array([11, 19, 31, 39, 51]) print(x_data) y_data = np.array([5, 8, 32, 84, 110]) print(y_data)
ylog_data = np.log(y_data) print(ylog_data) ???????curve_fit = np.polyfit(x_data, log_y_data, 1) print(curve_fit)
所以,a = 0.69和b = 0.085,這些是系數(shù),我們可以得到曲線的方程,即(y = e(ax)*e(b),其中a,b是系數(shù))
y = np.exp(0.69) * np.exp(0.085*x_data) print(y)
現(xiàn)在,讓我們在Matplotlib.pyplot.plot()函數(shù)的幫助下繪制圖表。
# Blue plt.plot(x_data, y_data) ???????# best fit in orange plt.plot(x_data, y)
在上圖中,藍線表示原始x和y坐標的圖形,黃線是我們通過計算獲得的坐標圖形,它是最佳擬合。
到此這篇關于Python進行指數(shù)和對數(shù)曲線擬合詳解的文章就介紹到這了,更多相關Python曲線擬合內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python統(tǒng)計字符串中英文字母、空格、數(shù)字和其它字符的個數(shù)
這篇文章主要給大家介紹了關于Python統(tǒng)計字符串中英文字母、空格、數(shù)字和其它字符的個數(shù)的相關資料,本文實例講述了python統(tǒng)計字符串中指定字符出現(xiàn)次數(shù)的方法,需要的朋友可以參考下2023-06-06分享一下Python 開發(fā)者節(jié)省時間的10個方法
在這篇文章,我想強調(diào)一些 Python 可以節(jié)約時間并最大限度地提高生產(chǎn)力的方面。在做準備時,我咨詢了幾個 Pythonists,他們最節(jié)省時間的技巧是什么?答案在這里2015-10-10