Python進(jìn)行指數(shù)和對(duì)數(shù)曲線擬合詳解
前言
在本文中,我們將學(xué)習(xí)如何在Python中進(jìn)行指數(shù)和對(duì)數(shù)曲線擬合。首先我們要問(wèn)的問(wèn)題是什么是曲線擬合?
曲線擬合是構(gòu)造曲線或數(shù)學(xué)函數(shù)的過(guò)程,其具有對(duì)一系列數(shù)據(jù)點(diǎn)的最佳擬合,可能受到約束。
- 對(duì)數(shù)曲線擬合:對(duì)數(shù)曲線是對(duì)數(shù)函數(shù)的曲線圖。
- 指數(shù)曲線擬合:指數(shù)曲線是指數(shù)函數(shù)的曲線圖。
讓我們考慮兩個(gè)方程
y = alog(x) + b 其中a、b是該對(duì)數(shù)方程的系數(shù)。
y = e(ax)*e(b)
我們將在上面的方程上擬合兩條曲線,并找到最佳擬合曲線。對(duì)于Python中的曲線擬合,我們將使用一些庫(kù)函數(shù)。
我們還將使用numpy.polyfit()方法來(lái)擬合曲線。這個(gè)函數(shù)有三個(gè)參數(shù)x,y,多項(xiàng)式次數(shù)(n)返回n次多項(xiàng)式的系數(shù)。
語(yǔ)法:numpy.polyfit(x,y,deg)
主要參數(shù):
x-> x坐標(biāo)
y-> y坐標(biāo)
deg ->擬合多項(xiàng)式的階數(shù)。因此,如果給定deg為1,我們得到線性多項(xiàng)式的系數(shù),或者如果它為2,我們得到二次多項(xiàng)式的系數(shù)。
對(duì)數(shù)曲線擬合
import numpy as np ???????# It is for plotting the curve import matplotlib.pyplot as plt
由于我們已經(jīng)導(dǎo)入了所需的庫(kù),因此必須創(chuàng)建兩個(gè)名為x和y的數(shù)組。在創(chuàng)建這兩個(gè)數(shù)組之后,我們必須在numpy.log()方法的幫助下獲取x和y中的值的對(duì)數(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ù)組的對(duì)數(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繪制一個(gè)圖,另一個(gè)用xlog_data和我們得到的y方程繪制一個(gè)圖。為了在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坐標(biāo)的圖,藍(lán)線是我們通過(guò)計(jì)算獲得的坐標(biāo)圖,它是最佳擬合。
指數(shù)曲線擬合
我們將重復(fù)上述相同的過(guò)程,但唯一的區(qū)別是對(duì)數(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)在,讓我們?cè)贛atplotlib.pyplot.plot()函數(shù)的幫助下繪制圖表。
# Blue plt.plot(x_data, y_data) ???????# best fit in orange plt.plot(x_data, y)
在上圖中,藍(lán)線表示原始x和y坐標(biāo)的圖形,黃線是我們通過(guò)計(jì)算獲得的坐標(biāo)圖形,它是最佳擬合。
到此這篇關(guān)于Python進(jìn)行指數(shù)和對(duì)數(shù)曲線擬合詳解的文章就介紹到這了,更多相關(guān)Python曲線擬合內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python統(tǒng)計(jì)字符串中英文字母、空格、數(shù)字和其它字符的個(gè)數(shù)
這篇文章主要給大家介紹了關(guān)于Python統(tǒng)計(jì)字符串中英文字母、空格、數(shù)字和其它字符的個(gè)數(shù)的相關(guān)資料,本文實(shí)例講述了python統(tǒng)計(jì)字符串中指定字符出現(xiàn)次數(shù)的方法,需要的朋友可以參考下2023-06-06keras 簡(jiǎn)單 lstm實(shí)例(基于one-hot編碼)
這篇文章主要介紹了keras 簡(jiǎn)單 lstm實(shí)例(基于one-hot編碼),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07python散點(diǎn)圖雙軸設(shè)置坐標(biāo)軸刻度的實(shí)現(xiàn)
散點(diǎn)圖是一種常用的圖表類型,可以用來(lái)展示兩個(gè)變量之間的關(guān)系,本文主要介紹了python散點(diǎn)圖雙軸設(shè)置坐標(biāo)軸刻度的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-01-01分享一下Python 開發(fā)者節(jié)省時(shí)間的10個(gè)方法
在這篇文章,我想強(qiáng)調(diào)一些 Python 可以節(jié)約時(shí)間并最大限度地提高生產(chǎn)力的方面。在做準(zhǔn)備時(shí),我咨詢了幾個(gè) Pythonists,他們最節(jié)省時(shí)間的技巧是什么?答案在這里2015-10-10