python拟合曲线求方程,曲线拟合方程python
我試圖用一個包含6個元件的rlc電路的導納方程來擬合數據。我按照給定的he[fit]1re的例子,插入我的方程。該方程是用Mathcad簡化的六元件電路導納的實部。在附圖中,x軸是ω(w=2*pi*f),y是以milli Siemens為單位的導納。在
該程序運行,但它沒有做擬合,盡管有一個良好的試驗功能。我感謝任何幫助,為什么適合是一條直線。我還附上了一個高斯擬合的例子。在
這就是當我試圖擬合方程時得到的結果。數據為左側峰值較小的數據,試驗函數為虛線。擬合是一條直線
from numpy import sqrt, pi, exp, linspace, loadtxt
from lmfit import Model
import matplotlib.pyplot as plt
data = loadtxt("C:/Users/susu/circuit_eq_real5.dat")
x = data[:, 0]
y = data[:, 1]
def circuit(x,C0,Cm,Lm,Rm,R0,Rs):
return ((C0**2*Cm**2*Lm**2*R0*x**4)+(Rs*C0**2*Cm**2*Lm**2*x**4)+(C0**2*Cm**2*R0**2*Rm*x**2)+(Rs*C0**2*Cm**2*R0**2*x**2)+(C0**2*Cm**2*R0*Rm**2*x**2)+(2*Rs*C0**2*Cm**2*R0*Rm*x**2)+(Rs*C0**2*Cm**2*Rm**2*x**2)-(2*C0**2*Cm*Lm*R0*x**2)-(2*Rs*C0**2*Cm*Lm*x**2)+(C0**2*R0)+(Rs*C0**2)-(2*Rs*C0*Cm**2*Lm*x**2)+(2*Rs*C0*Cm)+(Cm**2*Rm)+(Rs*Cm**2))/((C0**2*Cm**2*Lm**2*x**4)+(C0**2*Cm**2*R0**2*x**2)+(2*C0**2*Cm**2*R0*Rm*x**2)+(C0**2*Cm**2*Rm**2*x**2)-(2*C0**2*Cm*Lm*x**2)+(C0**2)-(2*C0*Cm**2*Lm*x**2)+(2*C0*Cm)+(Cm**2))
gmodel = Model(circuit)
result = gmodel.fit(y, x=x, C0=1.0408*10**(-12), Cm=5.953*10**(-14),
Lm=1.475*10**(-7), Rm=1.571, R0=2.44088, Rs=0.42)
print(result.fit_report())
plt.plot(x, y, 'bo')
plt.plot(x, result.init_fit, 'k--')
plt.plot(x, result.best_fit, 'r-')
plt.show()
下面是Fit報告
^{pr2}$
非常感謝M Newville和Mikuszefski以及其他人提供的見解和反饋。我同意我所說的也許是一個混亂的程序。從python代碼中可以明顯看出,我并不精通python或編程。在
Mikuszefsky,感謝您發布rlc示例代碼。你的方法既簡潔又有趣。我不知道Python是直接進行復雜擬合的,我會試試你的方法,看看能不能做到。我要同時擬合Y(準入)的實部和虛部。我肯定會被困在某個地方,并將我的進步張貼在這里。
最好的,
蘇蘇
總結
以上是生活随笔為你收集整理的python拟合曲线求方程,曲线拟合方程python的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ubuntu磁盘扩容及启动问题整理
- 下一篇: Python爬虫实战--斗鱼直播爬虫