我想将numpy.polyfit
或Polynomial.polyfit
应用于3个数据点[a1,a2,a3],每个点都有大约300位数字。
如果我使用:
x = numpy.array([1.0, 2.0, 3.0])
y = numpy.array([a1, a2, a3])
c = numpy.polyfit(x,y,2)
d = Polynomial.polyfit(x,y,2)
我得到了不精确的系数
polyfit不接受数据类型dtype=object
来处理具有大量数字的数字。
另外,我可以从python调用MAXIMA来解决这个问题吗?在
对于三个点,这是一个线性方程组问题。您可以使用SymPy:
对于超过三个点,这是一个线性最小二乘问题:
https://en.wikipedia.org/wiki/Linear_least_squares_(mathematics)
当双精度不够时,通常需要查找其他库,例如}。并且} function :
mpmath
或{sympy
有一个内置的^{第一个参数是点数;第二个参数是多项式中要使用的符号。如果你这样做,那么就不要写
1.0
为1
写1.0
,以此类推;这将强制所有的东西都浮起,你将回到你和NumPy在一起时的状态。符号计算需要整数、有理数和符号表达式。在结果以牛顿多项式形式与
^{pr2}$(x-1)
,(x-1)*(x-2)
等一起返回;可以使用expand
将其变成更熟悉的多项式形式:返回
22070000000000000000000000001*x**2/2 - 66061111111111111111111111115*x/2 + 21998888888888888888888888890
。这些系数是精确的,可以用[p.subs(x, v) for v in xp]
检查:返回原始的yp
值。在相关问题 更多 >
编程相关推荐