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
最終執行結果
相關文章
- Origin進行多元線性迴歸、指數擬合和非線性曲面擬合
- Java 使用 Apache commons-math3 線性擬合、非線性擬合例項(帶效果圖)JavaApache
- matlab求解非線性方程的Regula Falsi方法Matlab
- 一階線性非齊次方程組的通解
- 牛頓單點線割迭代法求解非線性方程
- 線性方程組
- Python擬合曲線Python
- 牛頓迭代法 - 求解非線性方程根的近似解
- 【數值計算方法】非線性方程求根-數值實驗
- 常數變易法求解非齊次線性微分方程
- 新的量子演算法有望破解非線性方程 - Quanta Magazine演算法
- 線性代數中的線性方程組方法
- MATLAB版線性代數-線性方程組1Matlab
- 如何使用Python曲線擬合Python
- 正規方程法來求解線性迴歸模型引數模型
- 線性方程組 入門概念
- 線性差分方程解法
- 【Python】keras使用LSTM擬合曲線PythonKeras
- 給定區間記憶體在多根情況下的非線性方程求根記憶體
- js 線性最小二乘迴歸線方程JS
- 什麼是機器學習迴歸演算法?【線性迴歸、正規方程、梯度下降、正則化、欠擬合和過擬合、嶺迴歸】機器學習演算法梯度
- 4擬合線性函式的k和b函式
- 九章算術與線性方程組
- 線性方程組的直接解法——Gauss消去法
- 什麼是“非線性疊加”?線性又是哪條線?
- 數值分析:線性方程組的直接解法(上)
- 連續性方程
- 流線方程
- matlab求解非線性規劃Matlab
- 【數值計算方法】線性方程組迭代演算法的Python實現演算法Python
- 基於TRE文章的非線性模型化線性方法模型
- Python解線性方程組的迭代法(3)————逐次超鬆弛(SOR)迭代法Python
- 齊次方程組(超定方程組)的最小二乘解,及利用其擬合空間平面
- 自控原理中的線性系統和非線性系統
- 非線性最優化最佳教材優化
- 線性篩合數
- 關於 線性規劃 非線性規劃 與 凸優化優化
- 結合scipy.linalg在Python中使用線性系統Python