Because the syntax of the SAS/IML language is similar to the notation used in linear algebra, it is often possible to directly translate mathematical methods from matrix-algebraic expressions into executable SAS/IML statements. For example, consider the problem of solving three simultaneous equations:

These equations can be written in matrix form as
![\[ \left[ \begin{array}{rrr} 3 & -1 & 2 \\ 2 & -2 & 3 \\ 4 & 1 & -4 \\ \end{array} \right] \left[ \begin{array}{c} x_1 \\ x_2 \\ x_3 \\ \end{array} \right] ~ = ~ \left[ \begin{array}{c} 8 \\ 2 \\ 9 \\ \end{array} \right] \]](images/imlug_tutorial0008.png)
and can be expressed symbolically as
where
is the matrix of coefficients for the linear system. Because
is nonsingular, the system has a solution given by
This example solves this linear system of equations.
Define the matrices
and
. Both of these matrices are input as matrix literals; that is, you type the row and column values as discussed in Chapter 3: Understanding the SAS/IML Language.
proc iml;
a = {3 -1 2,
2 -2 3,
4 1 -4};
c = {8, 2, 9};
Solve the equation by using the built-in INV function and the matrix multiplication operator. The INV function returns the inverse of a square matrix and * is the operator for matrix multiplication. Consequently, the solution is computed as follows:
x = inv(a) * c; print x;
Equivalently, you can solve the linear system by using the more efficient SOLVE function, as shown in the following statement:
x = solve(a, c);
After SAS/IML executes the statements, the rows of the vector x contain the
, and
values that solve the linear system.
You can end PROC IML by using the QUIT statement:
quit;