zoukankan      html  css  js  c++  java
  • 基于Eigen调用Pardiso求解线性方程组

     1 #include <Eigen/Sparse>
     2 #include <Eigen/IterativeLinearSolvers>
     3 #include <Eigen/PardisoSupport>
     4 using namespace Eigen;
     5 using namespace std;
     6 typedef Eigen::SparseMatrix<double> SpMat;
     7 typedef Eigen::PardisoLU <SpMat> PLUSolver;
     8 typedef Eigen::PardisoLDLT <SpMat> PLDLTSolver;
     9 
    10 //构造稀疏矩阵,按照行列号插入非零元素
    11 SpMat A(8, 8); 
    12 A.insert(0, 0) = 7.0; 
    13 A.insert(0, 2) = 1.0;
    14 ……
    15 A.makeCompressed();
    16 VectorXd b(8), x(8);
    //使用Eigen自带CG求解器求解对称稀疏矩阵线性方程组
    ConjugateGradient<SparseMatrix<double>, Eigen::Upper> solver;
    x = solver.compute(A).solve(b);
    //调用pardiso求解非对称稀疏矩阵线性方程组
    PLUSolver solver;
    solver.analyzePattern(A);
    solver.factorize(A);
    x = solver.solve(b);
    //调用pardiso求解对称稀疏矩阵线性方程组
    PLDLTSolver solver;
    solver.analyzePattern(A);
    solver.factorize(A);
    x = solver.solve(b);
  • 相关阅读:
    多任务拷贝小案例
    进程池
    进程间的通信
    互斥锁
    创建函数/类的线程
    udp/tcp流程
    发布模块
    私有属性/方法的访问
    深入了解jQuery之整体架构
    (转)前端面试题
  • 原文地址:https://www.cnblogs.com/dalanjing/p/13654226.html
Copyright © 2011-2022 走看看