dgematrix.dgels
dgematrix.dgelss
zgematrix.zgels
zgematrix.zgelss
double型の実一般行列を例に紹介します.
A.dgels(y,r);
A.dgelss(y,S,RANK,RCOND);
dgelsはrには計算残差が入ります.rは引数に取らなくてもでも構いません.
dgelssは最小ノルム解を求めます.
Sは特異値を出力するdcovector型,
RANKはAのランクを出力するdouble型です.RCONDはAの実行精度を決めるdouble型で,
デフォルト引数で-1.0(機種精度)に設定されているので,ここは空欄でもかまいません.
dgelsではQR,LQ分解の詳細に,
dgelssでは右特異ベクトルへと上書きされ,
引数yは解xとして上書きされます.元の値を保持したい場合は,関数を呼び出す前にコピーを作っておいて下さい.
dgelsではフルランクを仮定しています.
行列Aがランク落ちの可能性がある場合はdgelssを用いてください.
![]() |
//====================================================================[include]
#include ``cpplapack.h''
//=======================================================================[main]
/*! main */
int main(int argc, char** argv)
{
//// make dgematrix A ////
CPPL::dgematrix A(4,3);
A(0,0)=4; A(0,1)=1; A(0,2)=3;
A(1,0)=5; A(1,1)=1; A(1,2)=-1;
A(2,0)=2; A(2,1)=2; A(2,2)=0;
A(3,0)=-3; A(3,1)=1; A(3,2)=5;
//// make dcovector y ////
CPPL::dcovector y(4);
y(0)=8;
y(1)=2;
y(2)=0;
y(3)=5;
//// solve Ax=y ////
A.dgels(y);
//// print ////
std::cout << ``x=\n'' << y << std::endl;
return 0;
}
x= 0.928934 -0.92422 1.74003