線形および非線形連立方程式を解く方法について
[OS]ALL
[リリース] 6.07, 6.08, 6.09, 6.10, 6.11, 6.12
[キーワード] simultaneous equations, MODEL,SOLVE
[質問]線形および非線形連立方程式を解くプロシジャはありますか?
[回答]未知数の数と同じ数の方程式がある場合(n個の方程式に対して、n個の未知数)には、SAS/ETSプロダクトのMODELプロシジャ、 SOLVEステートメントでニュートン法などによって数値的に解くことができます。 また、線形方程式に限れば、SAS/IMLプロダクトのIMLプロシジャにて、SOLVE関数が用意されています。
/***********************************************************
* サンプル
* 非線形方程式をMODELプロシジャによって解くプログラム例
*
* x1 + x2 - x1*x2 = -2
* x1 * exp(-x2) = 1
************************************************************/
***** プログラム例1 *********************;
proc model ;
parms x1 0.1 x2 -2;
exogenous x1 x2;
eq.one=x1 + x2 - x1*x2 +2;
eq.two=x1 * exp(-x2) -1;
solve x1 x2 /newton itprint solveprint;
run;
***** プログラム例2 *********************;
data data1;
input y1 y2;
cards;
-2 1
;
proc model data=data1;
parms x1 0.1 x2 -2;
endogenous y1 y2;
exogenous x1 x2;
y1=x1 + x2 - x1*x2;
y2=x1 * exp(-x2) ;
solve x1 x2 /newton solveprint itprint;
run;
/*******************************************
IMLプロシジャによる線形方程式の解
4 a + 5 b + 1 c = 1
2 a + 3 b + 1 c = 2
4 a + 1 b + 3 c = 3
*******************************************/
proc iml;
A={4 5 1,
2 3 1,
4 1 3};
b={1, 2, 3};
X=solve(A,b);
print X;
quit;
|
|