from math import log, exp
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
from scipy import asarray as ar,exp
# 将txt文件读入numpy数组
yOriginal = np.loadtxt('C:\\工作\数据.txt')
#一维数据
#yOriginal = np.array([5.81528E-05, 0.000111682, 0.000271214, 0.000391546, 0.000786933, 0.002034528, 0.002968284, 0.005004177, 0.007329225, 0.011119662, 0.017025547, 0.02488255, 0.04219861, 0.040429801, 0.035320014, 0.05154864, 0.06894745,
# 0.105841984, 0.083166325, 0.110311517, 0.055681743, 0.093540639, 0.066621081, 0.056688568, 0.045128754, 0.045911571, 0.028179728, 0.021262112, 0.018781554, 0.008240159, 0.008562607, 0.004372914, 0.002847578, 0.001717186, 0.001081616])
xOriginal = np.arange(len(yOriginal))
print("输入数据n", yOriginal)
average = sum(yOriginal)/len(yOriginal)
#y = yOriginal
#x = xOriginal
#print("过滤数据n", y)
y = np.log(y)
zMatrix = np.matrix(y)
print("取对数n", y)
# 构造 X 矩阵
xMatrixT = np.matrix(np.reshape(np.concatenate(
(np.ones((len(y))), x, x*x)), (3, len(y))))
xMatrix = np.matrix(xMatrixT.T)
print("X 矩阵n", xMatrix)
#np.matrix.__mul__ = np.dot # 重载运算符
print(xMatrixT*xMatrix)
bMatrix = ((xMatrixT*xMatrix).I*xMatrixT)*zMatrix.T#矩阵运算
print("B 矩阵n", bMatrix)
b2, b1, b0 = float(bMatrix[2][0]), float(bMatrix[1][0]), float(bMatrix[0][0])
print("b0={}b1={}b2={}".format(b0, b1, b2))
s = -1/b2
xMaxi = s*b1/2
yMaxi = exp(b0+xMaxi**2/s)
print(yMaxi, xMaxi, s)
def gaussian(x,*param):
return param[0]*np.exp(-np.power(x - param[1], 2.) / (2 * np.power(param[2], 2.)))#高斯公式
popt,pcov = curve_fit(gaussian,xOriginal,yOriginal,p0=[yMaxi,xMaxi,s])
print(popt)
print(pcov)
plt.plot(xOriginal,yOriginal,'b+:',label='data')
plt.plot(xOriginal,gaussian(xOriginal,*popt),'ro:',label='fit')#绘图
plt.legend()
plt.show()
其中传参数时s应改为 np.sqrt(s/2)
return param[0]*np.exp(-np.power(x - param[1], 2.) / (2 * np.power(param[2], 2.)))#高斯公式。plt.plot(xOriginal,gaussian(xOriginal,*popt),'ro:',label='fit')#绘图。bMatrix = ((xMatrixT*xMatrix).I*xMatrixT)*zMatrix.T#矩阵运算。print("输入数据n", yOriginal)#print("过滤数据n", y)
高斯
曲线拟合
原理以及
Python
源码
高斯
函数
曲线拟合
数学基础
Python
求解
高斯
函数代码结论
高斯
函数
曲线拟合
数学基础
为了更好的对实验数据更好的
拟合
使用
高斯
函数曲线进行
拟合
。
使用
高斯
函数
拟合
比多项式
拟合
更加合适,多项式
拟合
必须把曲线分为两段,
高斯
函数
拟合
是对所有数据进行整体
拟合
,更能够反映出数据的总体变化情况,而多项式
拟合
只能对数据进行分段
拟合
,对数据的变化趋势进行割裂。
一下给出
高斯
函数
拟合
的数值基础:
证明X^T X矩阵非奇异是很有意义的需要证明在你的数据集上最小二乘法优化方式是可行的,但是我的
FLARE:原子稀有事件的快速学习
FLARE是一个开放源代码的
Python
程序包,用于创建快速而准确的原子间电势。 可以在以下位置访问代码的文档: :
我们在谷歌Colab提供的入门教程 。
高斯
过程力场
2体和3体多元素内核
最大似然超参数优化
耦合到Quantum Espresso,CP2K和VASP DFT引擎
映射
高斯
过程
映射到有效的三次样条曲线模型
ASE接口
适用于GP型号的ASE计算器
ASE MD引擎的即时培训
从AIMD轨迹训练GP的模块
如果您想即时训练更准确的多体潜能,请查看我们的多体扩展 ,并 提供入门教程。
要动态地训练潜能,您需要有效安装与ASE兼容的DFT代码(例如 , CP2K或VASP )。
FLARE需要
Python
3及其在requirements.txt指定的软件包。 这是由pip 。
Sherpa是用于
Python
的建模和
拟合
应用程序。 它包含一种功能强大的语言,用于将简单的模型组合成复杂的表达式,这些表达式可以使用各种统计信息和优化方法适合数据。 它很容易扩展,包括用户模型,统计信息和优化方法。 它为诸如Jupyter笔记本之类的交互式数据分析工作提供了一个高级用户界面,它还可以用作库组件,为应用程序提供
拟合
和建模功能。
夏尔巴你能做什么?
拟合
一维(多个)数据,包括:光谱,表面亮度曲线,光曲线,常规ASCII数组
在泊松/
高斯
体制中
拟合
2D图像/曲面
建立复杂的模型表达式
导入并使用自己的模型
使用适当的统计数据对泊松或
高斯
数据建模
导入新的统计信息,如果分析需要,则具有先验
通过仿真或参数空间的1D / 2D切割可视化参数空间
计算最佳
拟合
模型参数的置信度
选择合适的鲁棒优化方法:Levenberg-Marquardt,Nelder-Mead
python
曲线拟合
(一次二次比较简单,直接使用
numpy
中的函数即可,来自 <https://blog.csdn.net/yefengzhichen/article/details/52767733> )
1.多项式
拟合
(1)简介
z=
numpy
.polyfit(x, y, deg, rcond=None, f...
高斯
曲线拟合
是一种常见的数据
拟合
方法,可以用来对数据进行参数估计和预测。在
Python
中,可以使用SciPy库来进行
高斯
曲线拟合
。
下面是一个简单的示例代码,展示了如何使用SciPy库中的curve_fit函数进行
高斯
曲线拟合
:
```
python
import
numpy
as np
from scipy.optimize import curve_fit
import matplotlib.pyplot as plt
# 定义
高斯
函数
def gaussian(x, amplitude, mean, stddev):
return amplitude * np.exp(-((x - mean) / stddev) ** 2 / 2)
# 生成测试数据
x = np.linspace(0, 10, 100)
y = gaussian(x, 3, 5, 1.5) + np.random.normal(0, 0.2, x.size)
# 执行
拟合
initial_guess = [1,1, 1] # 初始猜测参数
params, _ = curve_fit(gaussian, x, y, p0=initial_guess)
# 绘制原始数据和
拟合
结果
plt.scatter(x, y, label='Data')
plt.plot(x, gaussian(x, params[0], params[1], params[2]), 'r-', label='Fit')
plt.legend()
plt.show()
# 输出
拟合
参数
print('Amplitude:', params[0])
print('Mean:', params[1])
print('Standard Deviation:', params[2])
在上述代码中,首先定义了一个
高斯
函数`gaussian`,然后生成了一组测试数据。接下来,调用`curve_fit`函数进行
拟合
,传入x、y数据以及初始猜测的参数。
拟合
结果存储在`params`变量中,可以通过索引访问对应的
拟合
参数。
最后,使用Matplotlib库绘制原始数据和
拟合
结果,并输出
拟合
参数。
希望以上代码对你有帮助!如果有任何问题,请随时提问。