复函数曲线拟合 (Python)

问题描述

我目前正在尝试将数据拟合到此函数提取“e/lambda”:

Formula

为此,我尝试(第一次)使用 python 拟合数据,并重新排列了拟合函数

import matplotlib.pyplot as plt
import scipy.optimize as optimize
import numpy as np

# data

Io = np.array([0.3,0.5,1.4,2.9,3.8])
Is = np.array([2.7,2.7,2.7])
R = Io/Is

T = np.array([0.,50,70,80,85])
F = R/R[0]

plt.plot(T,F,'ro',label="original data")

# curvefit
## a = np.exp(e/lambda)

def func(T,a):
    return a * (((np.exp ((np.cos(T)-1)/(np.cos(T)))) - \
                 (np.exp ((1-np.cos(T))/((np.cos(T))**2)))) \
                / ((np.exp ((np.cos(T)-1)/(np.cos(T)))) - \
                   (np.exp ((1-np.cos(T))/((np.cos(T)))))))

popt,pcov = optimize.curve_fit(func,T,maxfev=100000)

t = np.linspace(0,85)
plt.plot(t,func(t,*popt),label="Fitted Curve")

plt.legend(loc='upper left')
plt.show()

但是,我收到此消息:“未找到最佳参数:函数调用次数已达到 maxfev = 100000”

这可能更像是一个数学问题,因为我已经成功地使用另一个函数尝试了这段代码

def func(T,a,b,c):
    return a + np.exp(b*T-c)

Fit obtained

有谁知道是否可以使用它的“真实”形式来拟合这个函数

谢谢!!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)