2012-02-15 4 views
1

これは私の行列コードです。私は2つの行列を掛けています。行列の1つはスカラー(対角要素が同じであることを意味します)ですが、このコードを実行すると間違った答えが得られます。2つの行列を掛けたが、間違った答えを得る

static void Main(string[] args) 
{ 
    int[,] matrix1 = new int[3, 3]; 
    int[,] matrix2 = new int[3, 3]; 
    int[,] result = new int[3, 3]; 

    for (int i = 0; i < 3; i++) 
    { 
     for (int j = 0; j < 3; j++) 
     { 
      Console.WriteLine("Enter 1st Matrix: "); 
      matrix1[i, j] = Convert.ToInt32(Console.ReadLine()); 
     } 
    } 

    Console.ReadLine(); 

    for (int k = 0; k < 3; k++) 
    { 
     for (int l = 0; l < 3; l++) 
     { 
      Console.WriteLine("Enter 2nd Matrix: "); 
      matrix2[k, l] = Convert.ToInt32(Console.ReadLine()); 
     } 
    } 

    Console.WriteLine(); 
    Console.WriteLine("Matrix 1: "); 

    for (int i = 0; i < 3; i++) 
    { 
     for (int j = 0; j < 3; j++) 
     { 
      Console.Write(matrix1[i, j] + " "); 
     } 
     Console.WriteLine(); 
    } 

    Console.WriteLine(); 
    Console.WriteLine("Matrix 2: "); 

    for (int k = 0; k < 3; k++) 
    { 
     for (int l = 0; l < 3; l++) 
     { 
      Console.Write(matrix2[k, l] + " "); 
     } 
     Console.WriteLine(); 
    } 

    Console.WriteLine("Matrix 1 * Matrix 2: "); 

    for (int i = 0; i < 3; i++) 
    { 
     for (int j = 0; j < 3; j++) 
     { 
      result[i, j] = result[i, j] + matrix1[i, j] * matrix2[i, j]; 
      Console.Write(result[i, j] + " "); 
     } 
     Console.WriteLine(); 
    } 

    Console.ReadLine(); 
    Console.ReadLine(); 
} 
+0

ですから、私たちはあなたの宿題をやってみたいですあなたのために? – zerkms

+0

あなたが入れている行列と、何を出ているのかを明記してください。 –

+0

実際にコードで何が間違っていますか... – harsh

答えて

4

あなたは行列を掛けていないので、それらの値を乗算しています。 https://en.wikipedia.org/wiki/Matrix_multiplication

などを参照してください。 {{1, 1}, {0, 0}} x {{1, 0}, {1, 0}}は、{{1, 0}, {0, 0}}ではなく、{{2, 0}, {0, 0}}になります。ここで

は、行列の乗算のための右のコードは、()、それはOの複雑さ(N^3)ではなく、O(N^2を持っていることに注意してください)です。

 for (int i = 0; i < 3; i++) 
     { 
      for (int j = 0; j < 3; j++) 
      { 
       result[i, j] = 0; 
       for(int k = 0; k < 3; k++) 
       { 
        result[i, j] = result[i, j] + matrix1[i, k] * matrix2[k, j]; 
       } 
       Console.Write(result[i, j] + " "); 
      } 
      Console.WriteLine(); 
     } 
関連する問題