#include <iostream>
#include <vector>
#include <cmath>
using namespace std;
void polyfit(const vector<double>& x, const vector<double>& y, int n, vector<double>& a)
{
int len = x.size();
int i, j, k;
vector<double> b(n + 1, 0);
vector<vector<double>> A(n + 1, vector<double>(n + 1, 0));
for (i = 0; i < len; i++)
{
for (j = 0; j <= n; j++)
{
b[j] += pow(x[i], j) * y[i];
for (k = 0; k <= n; k++)
{
A[j][k] += pow(x[i], j + k);
}
}
}
for (i = 0; i <= n; i++)
{
for (j = i + 1; j <= n; j++)
{
double ratio = A[j][i] / A[i][i];
for (k = i; k <= n; k++)
{
A[j][k] -= ratio * A[i][k];
}
b[j] -= ratio * b[i];
}
}
for (i = n; i >= 0; i--)
{
double sum = 0;
for (j = i + 1; j <= n; j++)
{
sum += a[j] * A[i][j];
}
a[i] = (b[i] - sum) / A[i][i];
}
}
int main()
{
vector<double> x;
x.push_back
C++实现多项式拟合求系数
最新推荐文章于 2024-05-30 09:42:44 发布
本文详细介绍了如何使用C++编程语言中的polyfit函数进行多项式拟合,以一组给定的x和y值为例,展示了如何计算并输出二次多项式表达式(y=ax^2+bx+c)的系数。


784

被折叠的 条评论
为什么被折叠?



