線形および非線形連立方程式を解く方法について
[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; |