連立方程式(線形、非線形)を解く方法

[OS]ALL
[リリース] ALL
[キーワード] MODEL, SOLVE

[質問]

SASで連立方程式を解く方法を教えてください。

[回答]

SAS/ETSのMODELプロシジャを用いると、連立方程式(線形、非線形)の「実数解」を求めることができます。
次のプログラムは、連立方程式

 sqrt(x)-y=0
 3+2/x-y=0

を解くものです。

サンプルプログラム

data test;
 input a b @@;
cards;
3 2
;
run;

/*MODELプロシジャ*/
proc model data=test;

/*方程式は、以下のようにeq.### = の形で記述する。*/
 eq.sqrt      = sqrt(x) - y;
 eq.hyperbola = a + b / x - y;

/*SOLVEステートメントで解くべき変数を指定。
  また、アウトプットウィンドウへ解を出力するためSOLVEPRINTオプションも
  指定する。*/
 solve x y / solveprint;
run;
quit;

上記プログラムの出力結果

    Solution Values

       x              y

10.21329        3.19582

MODELプロシジャを利用した際には、解が2つ(2組)以上存在する場合にも1つ(1組)の解しか得られません。MODELプロシジャの詳細については、SAS/ETSのドキュメントをご参照ください。

なお、代数方程式の解法については下記のFAQをご参照ください。