【问题标题】:Python uniform random number generation to a triangle shapePython统一随机数生成为三角形
【发布时间】: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