python來擬合Langmuir非線性方程
python來擬合Langmuir非線性方程``
簡介
以前都是用origin來進行擬合,但是引數初值需要猜測,有時候不一定能夠得到正確結果。後來用過MATLAB的工具箱,可以擬合,但電腦要安裝MATLAB還是佔挺大空間的。花了一下午瞭解了一下用Python來擬合已有的函式,感覺還不錯,分享出來給大家。初學Python,大神們多多包涵。
程式碼
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
df1 = pd.read_excel('F:/langmuir.xls',header=None,usecols="A") #匯入資料,A列為x軸備用
df2 = pd.read_excel('F:/langmuir.xls',header=None,usecols="B") #匯入資料,B列為y軸備用
Ce0 = np.array(df1) #dataframe轉陣列,此時為單列陣列,需要轉置為單行
Ce = Ce0[:,0] #轉置
print(Ce)
qe0 = np.array(df2) #dataframe轉陣列,此時為單列陣列,需要轉置為單行
qe = qe0[:,0] #轉置
print(qe)
# 這裡的函式可以自定義任意形式。
def func(Ce, qm, Ka):
return qm*Ka*Ce/(1+Ka*Ce)
# popt返回的是給定模型的最優引數。我們可以使用pcov的值檢測擬合的質量,其對角線元素值代表著每個引數的方差。
param_bounds=([0,0],[np.inf,np.inf]) #引數上下限,第一個方括號為所有引數下限,第二個為所有引數上限
popt, pcov = curve_fit(func, Ce, qe, bounds=param_bounds) #擬合函式
qm = popt[0]
Ka = popt[1]
qe_pre = func(Ce,qm,Ka) #擬合y值
plot1 = plt.plot(Ce, qe, 's',label='original values')
plot2 = plt.plot(Ce, qe_pre, 'r',label='polyfit values')
plt.xlabel('Ce')
plt.ylabel('qe')
plt.legend(loc=4) #右下角畫圖例
SSE = ((qe_pre-qe)**2).sum()
chi_square = ((qe-qe_pre)**2/qe_pre).sum()
#計算R平方
from sklearn.metrics import r2_score
r2 = r2_score(qe, qe_pre)
print('qm=',qm)
print('Ka=',Ka)
print('擬合R方為:',r2)
print('SSE =',SSE)
print('chi_square =',chi_square)
本文首發嗶哩嗶哩
https://www.bilibili.com/read/cv8512063
最終執行結果
相關文章
- 實驗五 迭代法解線性方程組與非線性方程(android)Android
- Java 使用 Apache commons-math3 線性擬合、非線性擬合例項(帶效果圖)JavaApache
- matlab求解非線性方程的Regula Falsi方法Matlab
- 線性方程組
- 牛頓迭代法 - 求解非線性方程根的近似解
- 常數變易法求解非齊次線性微分方程
- 【數值計算方法】非線性方程求根-數值實驗
- Python擬合曲線Python
- 新的量子演算法有望破解非線性方程 - Quanta Magazine演算法
- 線性代數中的線性方程組方法
- excel線性迴歸擬合線Trend函式是這樣來使用的Excel函式
- 最小二乘法擬合非線性函式及其Matlab/Excel 實現函式MatlabExcel
- MATLAB版線性代數-線性方程組1Matlab
- 如何使用Python曲線擬合Python
- 什麼是機器學習迴歸演算法?【線性迴歸、正規方程、梯度下降、正則化、欠擬合和過擬合、嶺迴歸】機器學習演算法梯度
- 【Python】keras使用LSTM擬合曲線PythonKeras
- js 線性最小二乘迴歸線方程JS
- 給定區間記憶體在多根情況下的非線性方程求根記憶體
- 4擬合線性函式的k和b函式
- 九章算術與線性方程組
- 流線方程
- 機器學習之特徵組合: 多非線性規律進行編碼機器學習特徵
- 連續性方程
- 基於TRE文章的非線性模型化線性方法模型
- 關於非線性和線性是什麼的理解
- 實驗一 直接法解線性方程組(android)Android
- 【數值計算方法】線性方程組迭代演算法的Python實現演算法Python
- 齊次方程組(超定方程組)的最小二乘解,及利用其擬合空間平面
- 自控原理中的線性系統和非線性系統
- 非線性最優化最佳教材優化
- matlab求解非線性規劃Matlab
- Python解線性方程組的迭代法(3)————逐次超鬆弛(SOR)迭代法Python
- 關於 線性規劃 非線性規劃 與 凸優化優化
- 高等代數:3 線性方程組的解集的結構
- POJ 2891-trange Way to Express Integers(解線性同餘方程組)Express
- 【基底 / 線性組合 / 線性無關(相關)】- 圖解線性代數 02圖解
- 蒙特卡洛模擬(3)————求解有約束的非線性規劃問題
- excel曲線擬合怎麼弄Excel