目录
一、Eigen库
1、简介
2、特点
二、代码实现
一、Eigen库
1、简介
Eigen库的安装:Eigen 库的安装_eigen-3.3.9.zip-CSDN博客
Eigen是一个C++模板库,专门用于线性代数运算。它提供了矩阵、向量操作和线性代数算法所需的功能,且采用头文件形式,易于集成到C++项目中。
2、特点
①快速且高效:Eigen被设计为快速执行矩阵运算,使用了优化的表达式模板来提高性能。
②易于使用:其API设计得很直观,支持常见的线性代数运算,如矩阵乘法、求逆、特征值分解等。
③纯头文件:只需包含相应的头文件,无需编译额外的库或依赖。
④跨平台:Eigen可以在多种平台上运行,不依赖特定的硬件或操作系统。
⑤开源:Eigen是开源的,基于MPL2许可证发布,可免费用于商业项目。
二、代码实现
//当涉及曲线拟合时,C++中有几种方法可以实现,但其中一个流行的方式是使用最小二乘法来拟合曲线。
//使用C++的Eigen库进行多项式曲线拟合:#include <iostream>
#include <Eigen/Dense>// 曲线拟合函数
Eigen::VectorXd curveFitting(const Eigen::VectorXd& x, const Eigen::VectorXd& y, int degree)
{int n = x.size();Eigen::MatrixXd A(n, degree + 1);for (int i = 0; i < n; ++i){for (int j = 0; j <= degree; ++j){A(i, j) = pow(x(i), j);}}Eigen::VectorXd result = A.householderQr().solve(y);return result;
}int main()
{Eigen::VectorXd x(3);Eigen::VectorXd y(3);// 假设这是一些已知的数据点x << 515, 541, 567 ;y << 59, 121, 91;// 多项式拟合的阶数int degree = 2;Eigen::VectorXd coefficients = curveFitting(x, y, degree);std::cout << "拟合多项式:y=a2x^2+a1x+a0" << std::endl;std::cout << "拟合多项式的系数a0 a1 a2分别为:" << coefficients.transpose() << std::endl;system("pause");return 0;
}