C#判断一个矩阵是否为对称矩阵及反称矩阵的方法

 更新时间:2015年08月12日 15:48:58   作者:北风其凉  
这篇文章主要介绍了C#判断一个矩阵是否为对称矩阵及反称矩阵的方法,涉及C#矩阵遍历及检查等相关运算技巧,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了C#判断一个矩阵是否为对称矩阵及反称矩阵的方法。分享给大家供大家参考。具体如下:

1.判断对称矩阵

对任意i和j,有a[i,j]=a[j,i]

/// <summary>
/// 检查一个矩阵是否为对称矩阵
/// </summary>
/// <param name="matrix">矩阵</param>
/// <returns>true:是对称矩阵 false:不是对称矩阵</returns>
private static bool isSymmetric(double[][] matrix)
{
 //矩阵没有元素的情况
 if (matrix.Length == 0)
 {
  return true;
 }
 //合法性检查:1)matrix应为矩阵;2)matrix应为方阵
 if (!isMatrix(matrix) || matrix.Length != matrix[0].Length)
 {
  throw new Exception("输入不合法");
 }
 //矩阵对称条件:对任意i,j有a[i,j]=a[j,i]
 for (int i = 0; i < matrix.Length; i++)
 {
  for (int j = 0; j < i; j++)
  {
   if (matrix[i][j] != matrix[j][i])
   {
    return false;
   }
  }
 }
 return true;
}

2.判断反称矩阵

对任意i和j,有a[i,j]=-a[j,i]

/// <summary>
/// 检查一个矩阵是否为反称矩阵
/// </summary>
/// <param name="matrix">矩阵</param>
/// <returns>true:是反称矩阵 false:不是反称矩阵</returns>
private static bool isSkewSymmetric(double[][] matrix)
{
 //矩阵没有元素的情况
 if (matrix.Length == 0)
 {
  return true;
 }
 //合法性检查:1)matrix应为矩阵;2)matrix应为方阵
 if (!isMatrix(matrix) || matrix.Length != matrix[0].Length)
 {
  throw new Exception("输入不合法");
 }
 //矩阵反称条件:对任意i,j有a[i,j]=-a[j,i]
 for (int i = 0; i < matrix.Length; i++)
 {
  for (int j = 0; j <= i; j++)
  {
   if (matrix[i][j] != -matrix[j][i])
   {
    return false;
   }
  }
 }
 return true;
}

3.相关函数

/// <summary>
/// 判断一个二维数组是否为矩阵
/// </summary>
/// <param name="matrix">二维数组</param>
/// <returns>true:是矩阵 false:不是矩阵</returns>
private static bool isMatrix(double[][] matrix)
{
 //空矩阵是矩阵
 if (matrix.Length < 1) return true;
 //不同行列数如果不相等,则不是矩阵
 int count = matrix[0].Length;
 for (int i = 1; i < matrix.Length; i++)
 {
  if (matrix[i].Length != count)
  {
   return false;
  }
 }
 //各行列数相等,则是矩阵
 return true;
}

4.函数调用示例

1)Main函数代码

static void Main(string[] args)
{
 //测试矩阵1:matrix1
 double[][] matrix1 = new double[][] 
 {
  new double[] { 1, 2, 3 },
  new double[] { 2, 1, 2 },
  new double[] { 3, 2, 1 }
 };
 if (isSymmetric(matrix1)) { Console.WriteLine("matrix1 是对称矩阵"); }
 else { Console.WriteLine("matrix1 不是对称矩阵"); }
 if (isSkewSymmetric(matrix1)) { Console.WriteLine("matrix1 是反称矩阵"); }
 else { Console.WriteLine("matrix1 不是反称矩阵"); }
 //测试矩阵2:matrix2
 double[][] matrix2 = new double[][] 
 {
  new double[] { 0, 1, 2 },
  new double[] { -1, 0, 1 },
  new double[] { -2, -1, 0 }
 };
 if (isSymmetric(matrix2)) { Console.WriteLine("matrix2 是对称矩阵"); }
 else { Console.WriteLine("matrix2 不是对称矩阵"); }
 if (isSkewSymmetric(matrix2)) { Console.WriteLine("matrix2 是反称矩阵"); }
 else { Console.WriteLine("matrix2 不是反称矩阵"); }
 //测试矩阵3:matrix3
 double[][] matrix3 = new double[][] 
 {
  new double[] { 1, 2, 3 },
  new double[] { 4, 5, 6 },
  new double[] { 7, 8, 9 }
 };
 if (isSymmetric(matrix3)) { Console.WriteLine("matrix3 是对称矩阵"); }
 else { Console.WriteLine("matrix3 不是对称矩阵"); }
 if (isSkewSymmetric(matrix3)) { Console.WriteLine("matrix3 是反称矩阵"); }
 else { Console.WriteLine("matrix3 不是反称矩阵"); }
 Console.ReadLine();
}

2)示例运行结果

希望本文所述对大家的C#程序设计有所帮助。

相关文章

  • Unity实现角色受击身体边缘发光特效

    Unity实现角色受击身体边缘发光特效

    这篇文章主要为大家详细介绍了Unity实现角色受击身体边缘发光特效,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-04-04
  • c#生成缩略图的实现方法

    c#生成缩略图的实现方法

    c#生成缩略图的实现方法,需要的朋友可以参考一下
    2013-04-04
  • Unity3D Shader实现贴图切换效果

    Unity3D Shader实现贴图切换效果

    这篇文章主要为大家详细介绍了Unity3D Shader实现贴图切换效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-03-03
  • C#表达式树Expression动态创建表达式

    C#表达式树Expression动态创建表达式

    这篇文章介绍了C#表达式树Expression动态创建表达式的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-12-12
  • C#表达式树讲解

    C#表达式树讲解

    本文详细讲解了C#表达式树的创建、生成和使用,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-01-01
  • 详解WPF如何使用必应地图控件

    详解WPF如何使用必应地图控件

    这篇文章主要为大家详细介绍了WPF如何使用必应地图控件,文中的示例代码讲解详细,对我们学习或工作有一定帮助,感兴趣的小伙伴可以了解一下
    2022-11-11
  • C# using的本质及使用详解

    C# using的本质及使用详解

    这篇文章主要为大家介绍了C# using的本质及使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • C#从前面或后面按指定数量删除字符串

    C#从前面或后面按指定数量删除字符串

    这篇文章介绍了C#从前面或后面按指定数量删除字符串的方法,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • C#使用iCSharpcode进行文件压缩实现方法

    C#使用iCSharpcode进行文件压缩实现方法

    这篇文章主要介绍了C#使用iCSharpcode进行文件压缩实现方法,末尾附有完整实例,有助于大家参考借鉴,需要的朋友可以参考下
    2014-08-08
  • c#后台输出javascript语句示例程序

    c#后台输出javascript语句示例程序

    一个很不错的b/s前台输出弹出对话框、后台写javascript语句、后台直接关闭web页面及一个集成了常用验证的通用类,十分的方便。代码如下
    2013-12-12

最新评论