ホーム > 数値計算ソフトウェア > パッケージ > SciLab >

 連立方程式の解法 (SciLab)

連立方程式は、様々な場面で利用されます。特に、最適化問題や逆問題や実験データの曲線近似に対しては、過剰定義式や過少定義式が時として利用されます。Scilabでは、過剰定義および過少定義式でも"\"の記号一つで、最小2乗解を求める事が出来ます。

 

連立方程式が以下で与えられる時に

    

は x=A\b で解く事が出来ます。(\は英語環境のコンピュータではbackslash)

 

行列Aが正則行列ならば、x=A\b は x=inv(A)*b と等価である。

行列Aが特異行列ならば、解xは最小二乗解となる。すなわち、norm(A*x-b)が最小となる解となる。行列Aが"Full column rank"、つまり、行列Aのランクが列数と同じならば(大概過剰定義式)、x=A\bはnorm(A*x-b)を最小にする唯一の解である。もし、行列Aが"full coulmn rank"では無いならば、最小二乗解は唯一の解では無い。その場合は大概、x=A\bはノルム最小にする解ではない。この場合の最小ノルム解は、x=pinv(A)*bで与えられる。

   A.\B  is the matrix with (i,j) entry A(i,j)\B(i,j). If A (or B) is a

  scalar A.\B is equivalent to  A*ones(B).\B (or A.\(B*ones(A))

  

   A\.B  is an operator with no predefined meaning. It may be used to define

  a new operator (see overloading) with  the same precedence as * or /.

  

EXAMPLE

 A=rand(3,2);b=[1;1;1]; x=A\b; y=pinv(A)*b;  x-y

 A=rand(2,3);b=[1;1]; x=A\b; y=pinv(A)*b; x-y, A*x-b, A*y-b

 A=rand(3,1)*rand(1,2); b=[1;1;1]; x=A\b; y=pinv(A)*b; A*x-b, A*y-b

 A=rand(2,1)*rand(1,3); b=[1;1]; x=A\b; y=pinv(A)*b; A*x-b, A*y-b

SEE ALSO

   slash, inv, pinv, percent, ieee



Copyright (C) 2001- Keisuke ABE. All Rights Reserved.