【发布时间】:2019-11-21 23:35:32
【问题描述】:
我正在编写一个多项式最佳拟合求解器,作为一个学期中断项目来取乐。
给定输入:多项式的次数(即 2)和他们想要使用的一组点
167, 563
264, 429
410, 562
使用最小二乘逼近法,求解矩阵时,系统得到以下系数:
x^0 = 1270.1336927645
x^1 = -5.9573736115
x^2 = 0.0103176055
等式是
y= (0.01031760552017095)x^2 + (-5.95737361147607913)x^1 + (1270.13369276445428113)x^0
现在,我想在以后使用这个等式。
但是,我可以用 n 个度数写出这些方程式吗?
目前coefs存储在一个
double A[];
所以如果我有一个 4 度的多项式,我知道等式将是
y = A[4]x^4 + A[3]x^3 + A[2]x^2 + A[1]x^1 + A[0]x^0
** 或 **
y = A[4]*x*x*x*x + A[3]*x*x*x + A[2]*x*x + A[1]*x + A[0]
如果我有一个 5 度的多项式,我的方程将是
y = A[5]x^5 + A[4]x^4 + A[3]x^3 + A[2]x^2 + A[1]x^1 + A[0]x^0
或
y = A[5]*x*x*x*x*x + A[4]*x*x*x*x + A[3]*x*x*x + A[2]*x*x + A[1]*x + A[0]
有什么方法可以根据多项式的次数来制定方程。我不想硬编码每个 coef 的学位。基于给定的输入输出。
谢谢
【问题讨论】:
-
“有没有什么特殊的检查可以让我做需要 n 度数的检查?”我不明白你在问什么。你的意思是给一个系数数组,你能确定度数吗?如果您需要多项式中每个项的所有系数,那将非常简单。对于
n系数,度数为n-1。 -
如果用户输入一个 3 作为度数并且 coefs = 3 , 2 ,1 等式应该是
y = 3*x*x + 2*x + 1。如何在不对每种情况进行硬编码的情况下制定该等式。 -
多项式的次数为 2,而不是次数为 3。
-
“如何在不对每个案例进行硬编码的情况下制定该方程式。”每种情况是什么?你能用一个简单的规则来定义它们吗?例如,系数总是递减整数吗?
标签: c polynomial-math best-fit-curve