C# 将两个矩阵相乘,但得到错误的答案
这是我的矩阵代码。我将两个矩阵相乘。其中一个矩阵是标量矩阵,这意味着对角线元素是相同的,但是当我运行这段代码时,我得到了错误的答案C# 将两个矩阵相乘,但得到错误的答案,c#,matrix,C#,Matrix,这是我的矩阵代码。我将两个矩阵相乘。其中一个矩阵是标量矩阵,这意味着对角线元素是相同的,但是当我运行这段代码时,我得到了错误的答案 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++) {
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();
}
你不是在乘以矩阵,而是在乘以它们的值。看 例如,{1,1},{0,0}}x{1,0},{1,0}}应该导致{2,0},{0,0},而不是{1,0},{0,0} 下面是矩阵乘法的正确代码请注意,它的复杂性是在^3上,而不是在^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();
}
你不是在乘以矩阵,而是在乘以它们的值。看 例如,{1,1},{0,0}}x{1,0},{1,0}}应该导致{2,0},{0,0},而不是{1,0},{0,0} 下面是矩阵乘法的正确代码请注意,它的复杂性是在^3上,而不是在^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();
}
那么你想让我们帮你做功课吗?请你说明你输入的矩阵和输出的矩阵。实际上代码中有什么错误…第一矩阵[1行0 0第2行0 1 03第0行0 0 1]第二矩阵[1行1 0 45第2行0 1-1053行0 0 1]那么你想让我们帮你做功课吗?请你说明你输入的矩阵和输出的矩阵。实际上代码中有什么错误…第一矩阵[1行0 0第2行0 1 03第0行0 0 1]第二矩阵[1行1 0 45第2行0 1-1053行0 0 1]