// Instructions: // Compile and execute public class PowerMethodExample { public static void main (String[] argv) { double[][] A = { {5,-2}, {0,1} }; // Now start with some initial vector u0 double[] u0 = {1,1}; int numIterations = 10; // We'll also compute powers of A for illustration. double[][] A_power_k = copy (A); // Initialize: double[] u = {u0[0], u0[1]}; for (int k=1; k<=numIterations; k++) { u = MatrixTool.matrixVectorMult (A, u); u = normalize (u); MatrixTool.print (u); A_power_k = MatrixTool.matrixMult (A, A_power_k); } // Compute lambda = (Au dot u) / (u dot u) double[] y = MatrixTool.matrixVectorMult (A, u); double lambda = MatrixTool.dotProduct (y,u) / MatrixTool.dotProduct (u,u); System.out.println ("lambda=" + lambda); // Compare with A^k * u double[] x = MatrixTool.matrixVectorMult (A_power_k, u0); MatrixTool.print (x); } static double[] normalize (double[] x) { double normX = MatrixTool.norm (x); double[] y = new double [x.length]; for (int i=0; i