C#矩阵相乘

第一种:交叉数组形式
  1. /// <summary>

  2. /// 矩阵乘法

  3. /// <param name="matrix1">矩阵1</param>

  4. /// <param name="matrix2">矩阵2</param>

  5. /// <returns>积</returns>

  6. private static double[][] MatrixMult(double[][] matrix1, double[][] matrix2)

  7. {

  8. //matrix1是m*n矩阵,matrix2是n*p矩阵,则result是m*p矩阵

  9. int m = matrix1.Length, n = matrix2.Length, p = matrix2[0].Length;

  10. double[][] result = new double[m][];

  11. for (int i = 0; i < result.Length; i++)

    扫描二维码关注公众号,回复: 4453397 查看本文章
  12. {

  13. result[i] = new double[p];

  14. }

  15. //矩阵乘法:c[i,j]=Sigma(k=1→n,a[i,k]*b[k,j])

  16. for (int i = 0; i < m; i++)

  17. {

  18. for (int j = 0; j < p; j++)

  19. {

  20. //对乘加法则

  21. for (int k = 0; k < n; k++)

  22. {

  23. result[i][j] += (matrix1[i][k] * matrix2[k][j]);

  24. }

  25. }

  26. }

  27. return result;

  28. }

  29. /// <summary>

  30. /// 打印矩阵

  31. /// </summary>

  32. /// <param name="matrix">待打印矩阵</param>

  33. private static void PrintMatrix(double[][] matrix)

  34. {

  35. for (int i = 0; i < matrix.Length; i++)

  36. {

  37. for (int j = 0; j < matrix[i].Length; j++)

  38. {

  39. Console.Write(matrix[i][j] + "\t");

  40. }

  41. Console.WriteLine();

  42. }

第二种:二维数组形式

  1. /// <summary>

  2. /// 矩阵乘法

  3. /// <param name="matrix1">矩阵1</param>

  4. /// <param name="matrix2">矩阵2</param>

  5. /// <returns>积</returns>

  6. private static double[,] MatrixMult(double[,] matrix1, double[,] matrix2)

  7. {

  8. //matrix1是m*n矩阵,matrix2是n*p矩阵,则result是m*p矩阵

  9. int m = matrix1.GetLength(0), n = matrix2.GetLength(0), p = matrix2.GetLength(1);

  10. double[,] result = new double[m,p];

  11. //矩阵乘法:c[i,j]=Sigma(k=1→n,a[i,k]*b[k,j])

  12. for (int i = 0; i < m; i++)

  13. {

  14. for (int j = 0; j < p; j++)

  15. {

  16. //对乘加法则

  17. for (int k = 0; k < n; k++)

  18. {

  19. result[i,j] += (matrix1[i,k] * matrix2[k,j]);

  20. }

  21. }

  22. }

  23. return result;

  24. }

  25. /// <summary>

  26. /// 打印矩阵

  27. /// </summary>

  28. /// <param name="matrix">待打印矩阵</param>

  29. private static void PrintMatrix(double[,] matrix)

  30. {

  31. for (int i = 0; i < matrix.GetLength(0); i++)

  32. {

  33. for (int j = 0; j < matrix.GetLength(1); j++)

  34. {

  35. Console.Write(matrix[i,j] + "\t");

  36. }

  37. Console.WriteLine();

  38. }

猜你喜欢

转载自blog.csdn.net/lwjzjw/article/details/82788336
今日推荐