用 Astropy 拟合数据(一)
步骤:获取数据 > 拟合
一:直线拟合
导入需要的模块
import numpy as np
import matplotlib.pyplot as plt
from astropy.modeling import models, fitting
from astroquery.vizier import Vizier
import scipy.optimize
# Make plots display in notebooks
%matplotlib inline
生成模拟数据( y = 1 2 x + 1 y = \frac{1}{2}x + 1 y=21x+1),用高斯噪声产生误差
N = 100
x1 = np.linspace(0, 4, N)
y1 = 0.5*x1 + 1
y1 += np.random.normal(0, 1, size=len(y1))
sigma = 1.
y1_err = np.ones(N)*sigma
画出生成的模拟数据
plt.errorbar(x1, y1, yerr=y1_err,fmt='k.')
plt.xlabel('$x_1$')
plt.ylabel('$y_1$')
拟合
model = models.Linear1D()
fitter = fitting.LinearLSQFitter()
best_fit = fitter(model, x1, y1, weights=1.0/y1_err**2)
print(best_fit