尝试在 python 中将 sin2 函数拟合到我的数据中

Trying to fit a sin2 function to my data in python

提问人:alice 提问时间:11/12/2023 更新时间:11/12/2023 访问量:55

问:

我正在尝试使用 curve_fit 将函数 sin2(π J TE) 拟合到我的数据中。但是,我真的很难让它跟随我的数据,我不确定它是否是因为

  1. 我没有足够的数据
  2. 我没有很好地猜测参数
  3. 功能不合适

有人对此有任何建议吗!

谢谢!

from scipy.optimize import curve_fit
import math

def func(x, J):
    return ((np.sin(x*J*math.pi))**2)

# perform the fit
p0 = (50) # start with values near those we expect for S0 and T2
params, cv = curve_fit(func, dataset['TE '], dataset['integral'], p0)
J = params

# plot the results
plt.plot(dataset['TE '], dataset['integral'], '.', label="data")
plt.plot(dataset['TE '], func(dataset['integral'], J), '--', label="fitted")
plt.title("Fitted Exponential Curve")

在此处输入图像描述

Python 函数 三角函数

评论

0赞 PortorogasDS 11/12/2023
根据您的数据,我认为您的问题可能来自您的拟合方程。也许你应该尝试用一个公式来拟合,比如 A + sin(Bx)。我建议删除 p0 并尝试安装。例如:def func(x, A, B): return (A+(np.sin(x*J*math.pi))**2) plt.plot(dataset['TE '], func(dataset['integral'], *J), '--', label="fitted")
0赞 PortorogasDS 11/12/2023
如果你确定控制你的数据的方程式是这个,那么我认为你的方程式或你的数据有问题;尝试检查它们。拟合通常应用于控制数据的方程已知的情况下,特别是如果您的目标是从方程中提取参数,例如,y=Ax+b 提取 A 或 B。但是,如果您的目标是从您不知道数学模型的数据(例如 y=ax+b 中的 y)中查找值,请考虑改用插值。
1赞 lastchance 11/13/2023
您是否意识到 sin^2 的最大值为 1,而您的数据上升到大约 80?尝试 A.sin^2(x.J.pi) 并求解 A 和 J。

答: 暂无答案