使用numpy.polyfit

2024-05-12 22:34:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用numpy.polyfit在一些数据上绘制了一条曲线,并试图找到曲线与另一条线相交的位置。然而,我似乎误解了函数是如何工作的,因为当试图使用产生的系数来寻找曲线上的值时,我得到的是非感官的答案

2458880.2995 1.595
2458880.3046 1.62
2458880.3566 1.609
2458880.3585 1.599
2458880.7 1.667
2458880.7549 1.571

这里JD是左栏,mag是右栏

x = JD
y = mag

coeffs = numpy.polyfit(x,y,2)

poly = numpy.poly1d(coeffs)

new_x = numpy.linspace(x[0], 2458940)
new_y = poly(new_x)

plt.plot(x,y,'x', new_x,new_y)

a,b,c = coeffs



# y = ax^2 + bx + c


xa = 2458880.2995

ya = a*(xa**2) + b*(xa) + c

print(ya)

当我们预计值接近1.595时,输出值为-2.82738757134839

因此,曲线正确地拟合了数据,但当试图使用产生的系数时,我得到了错误的答案


Tags: 数据函数答案numpynew绘制曲线jd
1条回答
网友
1楼 · 发布于 2024-05-12 22:34:41
import matplotlib.pyplot as plt
import numpy
import warnings
warnings.simplefilter('ignore', numpy.RankWarning)

JD = [2458880.2995,2458880.3046,2458880.3566,2458880.3585,2458880.7,2458880.7549] 
mag=[1.595,1.62,1.609,1.599,1.667,1.571]

x = JD
y = mag

coeffs = numpy.polyfit(x,y,2)

poly = numpy.poly1d(coeffs)

new_x = numpy.linspace(x[0], 2458940)
new_y = poly(new_x)

plt.plot(x,y,'x', new_x,new_y)

a,b,c = coeffs



# y = ax^2 + bx + c


xa = 2458880.2995

ya = a*(xa**2) + b*(xa) + c

print(ya)

我补充说

import warnings
warnings.simplefilter('ignore', numpy.RankWarning)

当我得到导致问题的rankwarning错误时,现在输出为1.6fixed output

“秩警告意味着最小二乘拟合中系数矩阵的秩不足。只有在full=False时才会发出警告。” ^最后一级警告中提到了{a2}

相关问题 更多 >