C++拟合高次幂函数
时间: 2023-08-09 20:11:00 浏览: 129
高精度幂次方计算 C++实现
5星 · 资源好评率100%
对于C++来拟合高次幂函数,你可以使用最小二乘法或者多项式拟合方法。以下是一个使用最小二乘法的示例代码:
```cpp
#include <iostream>
#include <vector>
#include <cmath>
#include <Eigen/Dense>
using namespace Eigen;
int main() {
// 输入数据
std::vector<double> x = {1, 2, 3, 4, 5};
std::vector<double> y = {1.2, 2.5, 4.1, 6.0, 8.1};
// 构建矩阵A和向量b
int n = x.size();
MatrixXd A(n, 3);
VectorXd b(n);
for (int i = 0; i < n; ++i) {
A(i, 0) = x[i] * x[i]; // x^2
A(i, 1) = x[i]; // x
A(i, 2) = 1; // 常数项
b(i) = y[i];
}
// 使用最小二乘法求解系数向量
Vector3d coef = A.colPivHouseholderQr().solve(b);
// 输出结果
std::cout << "拟合结果:f(x) = " << coef(0) << "x^2 + " << coef(1) << "x + " << coef(2) << std::endl;
return 0;
}
```
该代码使用了Eigen库来进行矩阵运算。你需要先安装Eigen库,并将其包含在你的代码中。这个示例中,我们假设要拟合的函数为 f(x) = ax^2 + bx + c,通过最小二乘法来求解系数a、b、c。你可以根据自己的数据进行修改。
阅读全文