Python進(jìn)行指數(shù)和對(duì)數(shù)曲線擬合詳解
前言
在本文中,我們將學(xué)習(xí)如何在Python中進(jìn)行指數(shù)和對(duì)數(shù)曲線擬合。首先我們要問的問題是什么是曲線擬合?
曲線擬合是構(gòu)造曲線或數(shù)學(xué)函數(shù)的過程,其具有對(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中的曲線擬合,我們將使用一些庫函數(shù)。
我們還將使用numpy.polyfit()方法來擬合曲線。這個(gè)函數(shù)有三個(gè)參數(shù)x,y,多項(xiàng)式次數(shù)(n)返回n次多項(xiàng)式的系數(shù)。
語法: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)入了所需的庫,因此必須創(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)線是我們通過計(jì)算獲得的坐標(biāo)圖,它是最佳擬合。
指數(shù)曲線擬合
我們將重復(fù)上述相同的過程,但唯一的區(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)的圖形,黃線是我們通過計(jì)算獲得的坐標(biāo)圖形,它是最佳擬合。
到此這篇關(guān)于Python進(jìn)行指數(shù)和對(duì)數(shù)曲線擬合詳解的文章就介紹到這了,更多相關(guān)Python曲線擬合內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python使用正則實(shí)現(xiàn)計(jì)算字符串算式
這篇文章主要介紹了Python使用正則實(shí)現(xiàn)計(jì)算字符串算式的方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-12-12
詳解Python如何實(shí)現(xiàn)批量為PDF添加水印
我們有時(shí)候需要把一些機(jī)密文件發(fā)給多個(gè)客戶,為了避免客戶泄露文件,會(huì)在機(jī)密文件中添加水印。本文將利用Python實(shí)現(xiàn)批量為PDF添加水印,需要的可以參考一下2022-05-05
Python?requests用法和django后臺(tái)處理詳解
這篇文章主要給大家介紹了關(guān)于Python中requests用法和django后臺(tái)處理的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-03-03
使用Python3+PyQT5+Pyserial 實(shí)現(xiàn)簡(jiǎn)單的串口工具方法
今天小編就為大家分享一篇使用Python3+PyQT5+Pyserial 實(shí)現(xiàn)簡(jiǎn)單的串口工具方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-02-02
Python實(shí)現(xiàn)的數(shù)據(jù)結(jié)構(gòu)與算法之隊(duì)列詳解
這篇文章主要介紹了Python實(shí)現(xiàn)的數(shù)據(jù)結(jié)構(gòu)與算法之隊(duì)列,詳細(xì)分析了隊(duì)列的定義、功能與Python實(shí)現(xiàn)隊(duì)列的相關(guān)技巧,以及具體的用法,需要的朋友可以參考下2015-04-04
python畫圖——實(shí)現(xiàn)在圖上標(biāo)注上具體數(shù)值的方法
今天小編就為大家分享一篇python畫圖——實(shí)現(xiàn)在圖上標(biāo)注上具體數(shù)值的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-07-07
Python結(jié)合FFmpeg實(shí)現(xiàn)批量提取視頻音頻
在日常開發(fā)或音頻處理場(chǎng)景中,我們經(jīng)常需要從大量視頻文件中批量提取音頻,本文介紹一種 使用 Python 調(diào)用 FFmpeg 的通用方案,同時(shí)支持 Windows、macOS 和 Linux,有需要的小伙伴可以了解下2026-01-01
Python 如何用一行代碼實(shí)現(xiàn)for循環(huán)初始化數(shù)組
這篇文章主要介紹了Python 用一行代碼實(shí)現(xiàn)for循環(huán)初始化數(shù)組的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-03-03

