分散数据图
我需要将 (x,y) 数据拟合到具有两个变量(x 和 y)的方程并检索 5 个未知参数。
我正在制作一个脚本来处理来自简单 .txt 文件的 IV 数据(电流电压)并将其拟合到一个方程,称为非理想二极管方程;这是一个隐含的非线性函数。
到目前为止,我已经用 python 打开了文件,将数据排序为 numpy 数组,制作了原始数据的散点图,并且我知道要拟合的函数应该是什么样子。我尝试定义方程,并尝试了 SciPy 函数 fsolve 和 curve_fit,但没有运气(也许我只是不擅长使用它们)。
我需要的只是将数据拟合到以下等式,检索参数并绘制实际曲线:
y = a - b * (np.exp((x - y * d) / c) - 1) - (x + y * d) / e
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from scipy import optimize
OpenFile = pd.read_csv("test.txt", sep="\t", header=0)
FileArray = np.array(OpenFile)
x = FileArray[:, 0]
y = FileArray[:, 1] * 1000.0 / 0.08
plt.scatter(x, y)
def diode(data, a, b, c, d, e):
v, j = data
return a - b * (np.exp((v - j * d) / c) - 1) - (v + j * d) / e - j
### FAILED SCIPY OPTIMIZE ATTEMPT ###
parameters, parameterscovariance = optimize.curve_fit(diode, (x,y), y,
bounds = ([0, 0, 0, 0, 0],
[np.inf, np.inf, np.inf, np.inf, np.inf]),
max_nfev=10000)
plt.plot(x, diode((x,y), parameters[0], parameters[1], parameters[2], parameters[3], parameters[4]))
plt.show()
该代码绘制了数据点,但需要优化二极管方程、检索参数并绘制优化的方程。
编辑:现在插入尝试使 scipy 优化隐式函数