1.数学定义

    n阶行列式定义如下:

2.算法实现

  函数名: GetValue()

  功能:返回一个行列式的值

  1. Private Function GetValue()
  2. Dim gValue As Double
  3. Dim tempResultList As New List(Of Array)
  4. ) As Integer '要进行全排列的序列
  5.  
  6. tempNumArray(i) = i
  7. Next
  8. GetFullPerm(tempNumArray, , tempResultList)
  9. Dim temp As Double
  10. Dim tempData() As Integer
  11.  
  12. temp =
  13. tempData = tempResultList(i)
  14.  
  15. temp = temp * TableData(j, tempData(j))
  16. Next
  17. temp = Math.Pow(-, GetInverseNum(tempData)) * temp
  18. gValue += temp
  19. Next
  20. Return gValue
  21. End Function

3.完整的行列式类(determinant)

  使用示例:

Dim d As New Determinant(3)
d.Item(1, 1) = 1
d.Item(2, 2) = 2
d.Item(3, 3) = 4
Console.write(d.value)

  1. Public Class Determinant
  2. Private TableData(,) As Double
  3. Private RankLength As Integer
  4. '行列式的阶
  5. Public ReadOnly Property Rank()
  6. Get
  7. Return RankLength
  8. End Get
  9. End Property
  10. '行列式第iRow行第iCol列的元素
  11. Public Property Item(ByVal iRow As Integer, ByVal iCol As Integer)
  12. Get
  13. , iCol - )
  14. End Get
  15. Set(ByVal value)
  16. TableData(iRow - , iCol - ) = value
  17. End Set
  18. End Property
  19. Public ReadOnly Property value()
  20. Get
  21. Return GetValue()
  22. End Get
  23. End Property
  24. Public Sub New(ByVal nRank As Integer)
  25. , nRank - ) As Double
  26. TableData = tempArray
  27. RankLength = nRank
  28. End Sub
  29. '求行列式的值
  30. Private Function GetValue()
  31. Dim gValue As Double
  32. Dim tempResultList As New List(Of Array)
  33. ) As Integer '要进行全排列的序列
  34.  
  35. tempNumArray(i) = i
  36. Next
  37. GetFullPerm(tempNumArray, , tempResultList)
  38. Dim temp As Double
  39. Dim tempData() As Integer
  40.  
  41. temp =
  42. tempData = tempResultList(i)
  43.  
  44. temp = temp * TableData(j, tempData(j))
  45. Next
  46. temp = Math.Pow(-, GetInverseNum(tempData)) * temp
  47. gValue += temp
  48. Next
  49. Return gValue
  50. End Function
  51. '全排列
  52. Private Sub GetFullPerm(ByVal NumArray() As Integer, ByVal LeftIndex As Integer, ByRef Result As List(Of Array))
  53. Dim temp As Integer
  54. Then
  55. ) As Integer
  56. NumArray.CopyTo(tempArray, )
  57. Result.Add(tempArray)
  58. Else
  59. temp = NumArray(LeftIndex)
  60.  
  61. NumArray(LeftIndex) = NumArray(i)
  62. NumArray(i) = temp '对换
  63. GetFullPerm(NumArray, LeftIndex + , Result)
  64. NumArray(i) = NumArray(LeftIndex)
  65. NumArray(LeftIndex) = temp '还原对换
  66. Next
  67. End If
  68. End Sub
  69. '逆序数
  70. Private Function GetInverseNum(ByVal NumArray() As Integer)
  71.  
  72. Next
  73. Next
  74. Return Num
  75. End Function
  76. End Class

行列式(三):n阶行列式的更多相关文章

  1. 基于上三角变换或基于DFS的行(列)展开的n阶行列式求值算法分析及性能评估

    进入大一新学期,看完<线性代数>前几节后,笔者有了用计算机实现行列式运算的想法.这样做的目的,一是巩固自己对相关概念的理解,二是通过独立设计算法练手,三是希望通过图表直观地展现涉及的两种算 ...

  2. C#程序计算N阶行列式的值及N元一次方程组

    C#程序计算N阶行列式的值及N元一次方程组 用了挺长时间自行完成了C#程序计算N阶行列式的值及N元一次方程组.由于自己没有在网上查阅其他资料,所以只能硬着头皮用最朴素的思想和基础的算法进行编程.在给出 ...

  3. n阶行列式计算----c语言实现(完结)

    花了半天时间,写了这个n阶行列式计算的程序,应该算是比较优美吧,有很多地方多次做了优化,程序占用内存不是很大,要是说小吧,也不合适,因为里边有一个递归,而且递归的深度还比较深.时间复杂度具体没有细看, ...

  4. 线代: N阶行列式

    线性变换 将 (x, y) 变成 (2 x + y, x - 3 y) 就叫做线性变换, 这就是矩阵乘法, 用于表示一切线性变换. 几何上看, 把平面上的每个点 (x, y) 都变到 (2 x + y ...

  5. TOJ4537: n阶行列式

    4537: n阶行列式  Time Limit(Common/Java):1000MS/3000MS     Memory Limit:65536KByteTotal Submit: 28       ...

  6. Herding(hdu4709)三点运用行列式求面积

    Herding Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  7. n阶行列式算法(c程序)

    #include<stdio.h> #include<math.h> #define N 100 //N比输入的阶数大即可 int main() {   int n,a[N][ ...

  8. 计算n阶行列式的模板

    之前在学习计数问题的时候也在网上找了很多关于行列式的资料 但是发现很多地方都只介绍2\3阶的情况 一些论文介绍的方法又看不懂 然后就一直耽搁着 今天恰好出到这样的题目 发现标算的代码简介明了 还挺开心 ...

  9. n阶行列式计算

    1.化为上下三角 该类型的矩阵.行列式在之前写过(https://www.cnblogs.com/wangzheming35/p/12906624.html),也建议记住这个行列式的结论. 当然不仅仅 ...

随机推荐

  1. 走进AngularJs(八) ng的路由机制

    在谈路由机制前有必要先提一下现在比较流行的单页面应用,就是所谓的single page APP.为了实现无刷新的视图切换,我们通常会用ajax请求从后台取数据,然后套上HTML模板渲染在页面上,然而a ...

  2. 字符串查找String.IndexOf

    String.indexOf的模拟实现,没想象中有多么高深的查找算法,就是最普通的遍历查找 思路:先找到第一个相同的字符,然后依次比较后面的字符,若都相等则表示查找成功 /** * 查找字符串patt ...

  3. MYSQL分页存储过程及事务处理

    最近给客户做的一小系统是SQLSERVER的数据库,因为特殊原因要切换到MYSQL上去,切换数据库确实让人头疼的,SQLSERVER和MYSQL的存储过程还是有很大差别的,下面是我做切换时转换的MYS ...

  4. Ubuntu 下配置Ganglia监控

    Ganglia是比较知名的开源监控系统, 运维上需要关注的一些通用的状态都有所涉及.其组成主要是gmond(监控程序),gmetad(信息收集程序),web(监控数据展现app).ubuntu的apt ...

  5. java.sql.SQLException: JZ00L

    出现, java.sql.SQLException: JZ00L: 登录失败.检查与此异常现象有关的 SQL 警告以获得失败原因. at com.sybase.jdbc3.jdbc.ErrorMess ...

  6. Bootstrap~多级导航(级联导航)的实现

    回到目录 在bootstrap官方来说,导航最多就是两级,两级以上是无法实现的,大叔找了一些第三方的资料,终于找到一个不错的插件,使用上和效果上都还不错,现在和大家分享一下 插件地址:http://v ...

  7. WindowManager 实现悬浮窗 详解

    WindowManager 实现悬浮窗 详解 一:对于想直接看效果的,可以看看我的demo app. 链接:http://sj.qq.com/myapp/detail.htm?apkName=com. ...

  8. [Java面试四]Strust2总结及在面试中的一些问题.

    1. JavaEE软件三层结构和MVC的区别? JavaEE软件三层机构是由sun公司提供JavaEE开发规范的:Web层(表现层).业务逻辑层.数据持久层.[其中WEB层会使用前端控制器模式] MV ...

  9. [Spring框架] Spring中的 ContextLoaderListener 实现原理.

    前言: 这是关于Spring的第三篇文章, 打算后续还会写入AOP 和Spring 事务管理相关的文章, 这么好的两个周末 都在看code了, 确实是有所收获, 现在就来记录一下. 在上一篇讲解Spr ...

  10. ASP.NET MVC的Action拦截器(过滤器)ActionFilter

    有时项目要进行客户端请求(action)进行拦截(过滤)验证等业务,可以使用拦截器进行实现,所谓的action拦截器也没有什么的,只是写一个类,继承另一个类(System.Web.Mvc.Filter ...