【发布时间】:2023-04-05 02:45:01
【问题描述】:
我有三个数据点,我执行了线性拟合并获得了 1 sigma 不确定性线。现在我想生成 100k 数据点,均匀分布在 1 个 sigma 误差条(左侧的大三角形)之间,但我不知道我怎么能做到这一点。这是我的代码
import matplotlib.pyplot as plt
import numpy as np
import math
from scipy.optimize import curve_fit
x = np.array([339.545772, 339.545781, 339.545803])
y = np.array([-0.430843, -0.43084 , -0.430842])
def line(x,m,c):
return m*x + c
popt, pcov = curve_fit(line,x,y)
slope = popt[0]
intercept = popt[1]
xx = np.array([326.0,343.0])
fit = line(xx,slope,intercept)
fit_plus1sigma = line(xx, slope + pcov[0,0]**0.5, intercept - pcov[1,1]**0.5)
fit_minus1sigma = line(xx, slope - pcov[0,0]**0.5, intercept + pcov[1,1]**0.5)
plt.plot(xx,fit,"C4",label="Linear fit")
plt.plot(xx,fit_plus1sigma,'g--',label=r'One sigma uncertainty')
plt.plot(xx,fit_minus1sigma,'g--')
plt.fill_between(xx, fit_plus1sigma, fit_minus1sigma, facecolor="gray", alpha=0.15)
在 NumPy 中有一个 Numpy random triangle function,但是,在我的情况下,我无法实现它,我什至不确定这是否是正确的方法。感谢您的帮助。
【问题讨论】:
-
请注意,如果您在水平区间内均匀采样 x 并在相应的垂直区间内采样 y,则与您希望在三角形内均匀采样 x 和 y 时,您会得到不同的解决方案。
标签:
python
python-3.x
numpy
matplotlib
random
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python统一随机数生成为三角形 - Python技术站