public int N = 4; public double[,] _WVarray; public double[,] _WTarray; public double[,] _HA = new double[,] { { 1, -1, 3, 1 }, { 4, -1, 5, 4 }, { 2, -2, 4, 1 }, { 1, -4, 5, -1 } }; public double[] _B = new double[] { 5, 4, 6, 3 }; public double[,] _E = new double[,] { { 1, 0, 0, 0 }, { 0, 1, 0, 0 }, { 0, 0, 1, 0 }, { 0, 0, 0, 1 } }; public double[,] _WVT; public double[] _X; public double[,] _H; public double[,] _HAtemp; public double b; public double n; public double sum; public void zeroing() { _WVarray = new double[1, N]; _WTarray = new double[N, 1]; for (int i = 0; i < N; i++) { _WVarray[0, i] = 0; _WTarray[i, 0] = 0; } } public bool sign(double data) { return data > 0 ? (true) : (false); } public void transp() { for (int i = 0; i < N; i++) { _WTarray[i, 0] = _WVarray[0, i]; } } public void mult() { double[,] res = new double[N, N]; double temp = 0; for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { temp = 0; for (int k = 0; k < N; k++) { temp += _H[i, k] * _HA[k, j]; } res[i,j] = temp; } } for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { _HA[i,j] = res[i, j]; } } } public void cut() { double[,] res = new double[N, N]; for (int i = 0; i < N; i++) { _HAtemp[i, 0] = 0; _HAtemp[0, i] = 0; } } public void copy() { _HAtemp = new double[N,N]; for(int i = 0; i< N; i++) { for(int j = 0 ; j < N; j++) { _HAtemp[i, j] = _HA[i, j]; } } } public void multMatrixVec() { double [] res = new double[N]; for(int i =0 ; i < N; i++) { double temp = 0; for(int j = 0 ; j < N; j++) { temp += _H[i, j] * _B[j]; } res[i] = temp; } for (int i = 0; i < N; i++) { _B[i] = res[i]; } } public void multVect() { _WVT = new double[N, N]; for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { _WVT[i, j] = 2 * _WVarray[0, i] * _WTarray[j, 0]; } } }