package com.imsl.test.example.math; import com.imsl.math.*; import java.util.logging.*; /** *
* Solves a small linear system with logging.
* * A solution to a small linear system is found. The coefficient matrix is * stored as a full matrix and no preconditioning is used. Typically, * preconditioning is required to achieve convergence in a reasonable number of * iterations. Logging is enabled so that intermediate output and a summary * report are generated. * * @see Code * @see Output */ public class GenMinResEx7 implements GenMinRes.Function { static private double a[][] = { {33.0, 16.0, 72.0}, {-24.0, -10.0, -57.0}, {18.0, -11.0, 7.0} }; static private double b[] = {129.0, -96.0, 8.5}; /** * Obtains the multiplication of the matrixa
and the input
* p
. The result is returned in z
.
*
* @param p a double
array with
* p.length
=a[0].length
* @param z a double
array
*/
@Override
public void amultp(double p[], double z[]) {
double[] result;
result = Matrix.multiply(a, p);
System.arraycopy(result, 0, z, 0, z.length);
}
public static void main(String args[]) throws Exception {
int n = 3;
GenMinResEx7 atp = new GenMinResEx7();
// Construct a GenMinRes object
GenMinRes gnmnrs = new GenMinRes(n, atp);
Logger logger = gnmnrs.getLogger();
Handler h = new java.util.logging.FileHandler("GenMinReslog.txt");
logger.addHandler(h);
logger.setLevel(Level.FINER);
h.setFormatter(new com.imsl.IMSLFormatter());
// Solve Ax = b
new PrintMatrix("x").print(gnmnrs.solve(b));
}
}