Eigen(8)实例最小二乘法

用Eigen库解Ax=b线性方程,使用最小二乘法

#include <iostream>

#include <Eigen/Dense>

using namespace std;

using namespace Eigen;

int main()

{

    //对方程Ax=b


    MatrixXf A = MatrixXf::Random(3, 2);

    std::cout << "Here is the matrix A:\n" << A << std::endl;

    VectorXf b = VectorXf::Random(3);

    std::cout << "Here is the right hand side b:\n" << b << std::endl;

    cout << endl;

    cout << endl;

    cout << "**********jacobiSvd方法********************" << endl;

    MatrixXf x_jacobiSvd, x_colPivHouseholderQr;

    //jacobiSvd 方式:Slow (but fast for small matrices)

    x_jacobiSvd = A.jacobiSvd(ComputeThinU | ComputeThinV).solve(b);

    std::cout << "The least-squares solution is:\n"

        << A.jacobiSvd(ComputeThinU | ComputeThinV).solve(b) << std::endl;


    cout << endl;

    cout << endl;

    cout << "**********colPivHouseholderQr方法********************" << endl;

    x_colPivHouseholderQr = A.colPivHouseholderQr().solve(b);

    //colPivHouseholderQr方法:fast

    std::cout << "The least-squares solution is:\n"

        << x_colPivHouseholderQr << std::endl;


   

    system("pause");

    return 0;


}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值