Subsections

2 (基本演算)連立一次方程式の解法

2.1 概要

CPPLapackでは,連立一次方程式を解くための関数が各行列クラスのメンバ関数として用意されています.
      dgematrix.dgesv
      dgbmatrix.dgbsv
      dsymatrix.dsysv
      zgematrix.zgesv
      zgbmatrix.zgbsv
      zhematrix.zhesv

2.2 使い方

ここではdouble型の実一般行列を例に紹介します.
連立一次方程式Ax=yを解くには下記の様に記述します.解xyに上書きされます.
      A.dgesv(y);

2.3 注意点

2.4 例題

連立一次方程式

$\displaystyle \begin{bmatrix}
 1 & 1 & -2\ 
 -3 & 2 & 1 \ 
 3 & -1 & 2 \ 
 \...
...}
 \right)
 =
 \left(
 \begin{array}{c}
 1\ 
 2\ 
 3\ 
 \end{array}
 \right)$    

を解く.


コードを以下に示します.
//====================================================================[include]
#include ``cpplapack.h''

//=======================================================================[main]
/*! main */
int main(int argc, char** argv)
{
  //// make dgematrix A  ////
  CPPL::dgematrix A(3,3);
  A(0,0)=1;  A(0,1)=1;  A(0,2)=-2;
  A(1,0)=-3; A(1,1)=2;  A(1,2)=1;
  A(2,0)=3;  A(2,1)=-1; A(2,2)=2;

  //// make dcovector y ////
  CPPL::dcovector y(3);
  y(0)=1;
  y(1)=2;
  y(2)=3;

  //// solve Ax=y ////
  A.dgesv(y);

  //// print ////
  std::cout << ``x=\n'' << y << std::endl;

  return 0;
}



実行結果は以下の様になります.
x=
 1
 2
 1

]



Masashi UESHIMA