using System; namespace Project7_27 { class Matrix { public double[ , ] m; //2-dimensional array to hold matrix entries. /* * Constructor Input: * n : dimension size of the square matrix * val : an array of arrays to initialize m */ public Matrix( int n, double[][] val) { m = new double[n, n]; //Assign matrix entries row by row. for(int i=0; i < n; i++) { for(int j = 0; j < n; j++) { m[i,j] = val[i][j]; } } } public static Matrix Add( Matrix x, Matrix y) { double[ , ] m1, m2; m1 = x.m; //matrix values of x m2 = y.m; //matrix values of y int n = m1.GetLength(0); //x and y are nxn matrices //m3: an array of arrays to hold the sum of m1 and m2. double[][] m3 = new double[n][]; m3[0] = new double[n]; m3[1] = new double[n]; m3[2] = new double[n]; for(int i=0; i < n; i++) { for(int j = 0; j < n; j++) { m3[i][j] = m1[i,j] + m2[i,j]; } } //Construt a nxn matrix z from m3 and return z. Matrix z = new Matrix(n, m3); return z; } public static Matrix Subtract (Matrix x, Matrix y) { double[ , ] m1, m2; m1 = x.m; //matrix values of x m2 = y.m; //matrix values of y int n = m1.GetLength(0); //x and y are nxn matrices //m3: an array of arrays to hold the sum of m1 and m2. double[][] m3 = new double[n][]; m3[0] = new double[n]; m3[1] = new double[n]; m3[2] = new double[n]; for(int i=0; i < n; i++) { for(int j = 0; j < n; j++) { m3[i][j] = m1[i,j] - m2[i,j]; } } //Construt a nxn matrix z from m3 and return z. Matrix z = new Matrix(n, m3); return z; } public static Matrix ScalarMultiply (Matrix x, double s) { double[ , ] m1; m1 = x.m; //matrix values of x int n = m1.GetLength(0); //x is nxn matrice //m3: an array of arrays to hold the sum of m1 and m2. double[][] m3 = new double[n][]; m3[0] = new double[n]; m3[1] = new double[n]; m3[2] = new double[n]; for(int i=0; i < n; i++) { for(int j = 0; j < n; j++) { m3[i][j] = m1[i,j] * s; } } //Construt a nxn matrix z from m3 and return z. Matrix z = new Matrix(n, m3); return z; } public void Print() { int n = m.GetLength(0); for(int i=0; i < n; i++) { for(int j = 0; j < n; j++) { Console.Write(m[i,j]+"\t"); } Console.WriteLine(); } Console.WriteLine(); } } class TestMatrix { public static void Main() { //v1 - an array of arrays to create matrix x double[][] v1 = new double[3][]; v1[0] = new double[3]{2,5,4}; v1[1] = new double[3]{-2,7,9}; v1[2] = new double[3]{8,-3,2}; //v2 - an array of arrays to create matrix y double [][]v2 = new double[3][]; v2[0] = new double[3]{2,5,4}; v2[1] = new double[3]{-2,7,9}; v2[2] = new double[3]{8,-3,2}; Matrix x, y, z; x = new Matrix(3, v1); y = new Matrix(3, v2); Console.WriteLine("Matrix x: "); x.Print(); Console.WriteLine("Matrix y: "); y.Print(); //Add matrix x and y z = Matrix.Add(x,y); Console.WriteLine("x + y: "); z.Print(); //Subtract matrix x and y z = Matrix.Subtract(x,y); Console.WriteLine("x - y: "); z.Print(); //Multiply matrix x with a scale value. z = Matrix.ScalarMultiply(x,2.0); Console.WriteLine("x * 2.0: "); z.Print(); } } }