You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中实现观测数据与预测等时线数据的对齐拟合

天文观测数据与等时线的XY偏移最佳拟合问题

补充信息

  • 观测数据、等时线(预测数据)均可从公开文本资源获取

问题描述

我需要将天文观测数据与等时线(一种非函数型的预测模式)进行最佳拟合,核心需求是通过调整预测数据的X、Y轴偏移量,匹配观测数据中2<y<6区间内的平滑曲线段(该曲线段在所有等时线中均存在)。

由于等时线并非函数,无法直接使用scipy.curve_fit工具。

已尝试方案

多项式拟合实现水平偏移

我先对等时线目标区域拟合40次多项式,再结合scipy.curve_fit实现了水平偏移,代码如下:

poly_coeffs = np.polyfit(iso_g, iso_bprp, deg=40)
poly = np.poly1d(poly_coeffs)

# 可视化
fig = plt.figure(figsize=(10,8))
ax = fig.add_subplot()

ax.plot(iso_bprp, iso_g)
ax.plot(poly(iso_g), iso_g)

ax.set_xlabel(r'Colour Index [$Bp - Rp$]', fontsize=20)
ax.set_ylabel('G Mag', fontsize=20)

ax.invert_yaxis()
ax.tick_params(axis='both', which='major', labelsize=15)
plt.show()

该方案成功得到了等时线多项式拟合结果,并实现了预期的水平偏移效果。

XY偏移尝试失败

当我在拟合函数中加入垂直偏移参数后,无法实现有效的垂直偏移,代码如下:

def fit(x, xshift, yshift):
    return poly(x + xshift) + yshift

parameters, covariance = curve_fit(fit, data_g, data_bprp)

# 可视化
fig = plt.figure(figsize=(10,8))
ax = fig.add_subplot()

ax.plot(poly(iso_g), iso_g, label='Original Curve')
ax.scatter(data_bprp, data_g, s=0.5)

ax.plot(fit(iso_g, parameters[0], parameters[1]), iso_g, label='XY Shifted Curve')

ax.set_xlabel(r'Colour Index [$Bp - Rp$]', fontsize=20)
ax.set_ylabel('G Mag', fontsize=20)

ax.invert_yaxis()
ax.tick_params(axis='both', which='major', labelsize=15)
plt.legend()
plt.show()

运行后得到的XY偏移效果不符合预期,垂直偏移未生效。

寻求建议

我相信存在更合适的方法实现这一拟合需求,但尚未找到,希望能得到相关思路或解决方案。


内容的提问来源于stack exchange,提问作者sshamsi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 13:32:48