1.数学定义

    n阶行列式定义如下:

2.算法实现

  函数名: GetValue()

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

    Private Function GetValue()
        Dim gValue As Double
        Dim tempResultList As New List(Of Array)
        ) As Integer '要进行全排列的序列

            tempNumArray(i) = i
        Next
        GetFullPerm(tempNumArray, , tempResultList)
        Dim temp As Double
        Dim tempData() As Integer

            temp =
            tempData = tempResultList(i)

                temp = temp * TableData(j, tempData(j))
            Next
            temp = Math.Pow(-, GetInverseNum(tempData)) * temp
            gValue += temp
        Next
        Return gValue
    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)

Public Class Determinant
    Private TableData(,) As Double
    Private RankLength As Integer
    '行列式的阶
    Public ReadOnly Property Rank()
        Get
            Return RankLength
        End Get
    End Property
    '行列式第iRow行第iCol列的元素
        Public Property Item(ByVal iRow As Integer, ByVal iCol As Integer)
            Get
                , iCol - )
            End Get
            Set(ByVal value)
                TableData(iRow - , iCol - ) = value
            End Set
        End Property
    Public ReadOnly Property value()
        Get
            Return GetValue()
        End Get
    End Property
    Public Sub New(ByVal nRank As Integer)
        , nRank - ) As Double
        TableData = tempArray
        RankLength = nRank
    End Sub
    '求行列式的值
    Private Function GetValue()
        Dim gValue As Double
        Dim tempResultList As New List(Of Array)
        ) As Integer '要进行全排列的序列

            tempNumArray(i) = i
        Next
        GetFullPerm(tempNumArray, , tempResultList)
        Dim temp As Double
        Dim tempData() As Integer

            temp =
            tempData = tempResultList(i)

                temp = temp * TableData(j, tempData(j))
            Next
            temp = Math.Pow(-, GetInverseNum(tempData)) * temp
            gValue += temp
        Next
        Return gValue
    End Function
    '全排列
    Private Sub GetFullPerm(ByVal NumArray() As Integer, ByVal LeftIndex As Integer, ByRef Result As List(Of Array))
        Dim temp As Integer
         Then
            ) As Integer
            NumArray.CopyTo(tempArray, )
            Result.Add(tempArray)
        Else
            temp = NumArray(LeftIndex)

                NumArray(LeftIndex) = NumArray(i)
                NumArray(i) = temp '对换
                GetFullPerm(NumArray, LeftIndex + , Result)
                NumArray(i) = NumArray(LeftIndex)
                NumArray(LeftIndex) = temp '还原对换
            Next
        End If
    End Sub
    '逆序数
    Private Function GetInverseNum(ByVal NumArray() As Integer)

            Next
        Next
        Return Num
    End Function
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. [Asp.net 开发系列之SignalR篇]专题二:使用SignalR实现酷炫端对端聊天功能

    一.引言 在前一篇文章已经详细介绍了SignalR了,并且简单介绍它在Asp.net MVC 和WPF中的应用.在上篇博文介绍的都是群发消息的实现,然而,对于SignalR是为了实时聊天而生的,自然少 ...

  2. Java设计模式8:迭代器模式

    迭代器模式 迭代器模式又叫做游标(Cursor)模式,其作用是提供一种方法访问一个容器元素中的各个对象,而又不暴露该对象的内部细节. 迭代器模式结构 迭代器模式由以下角色组成: 1.迭代器角色 负责定 ...

  3. Java设计模式7:适配器模式

    适配器模式 适配器模式说的是,可以把一个类的接口变换成客户端所期待的另一种接口,使得原本因接口不匹配而无法在一起工作的两个类可以一起工作. 适配器模式的用途 适配器模式的用途,在网上找了一幅图,挺形象 ...

  4. Java虚拟机1:什么是Java

    前言 让我们来看一下Java的广告词,来自http://www.java.com/zh_CN/about/: 97%的企业桌面运行Java 美国有89%的桌面(或计算机)运行Java 全球有900万J ...

  5. 使用MYSQL命令直接导入导出SQL文件

    很多时候,我们的数据开发都会用到很多开发利器,比如powerdesigner, navicat等这些软件,虽然好用,但是要收费,在公司里面是禁止使用盗版软件的,怕罚款各方面的,所以我们也不敢直接在公司 ...

  6. <HTML5和CSS3响应式WEB设计指南>译者序

    "不是我不明白,这世界变化快."崔健的这首歌使用在互联网领域最合适不过.只短短数年的功夫,互联网的浪潮还没过去,移动互联网的时代已经来临.人们已经习惯将越来越多的时间花在各种移动设 ...

  7. Visual Studio 2015 速递(4)——高级特性之移动开发

    系列文章 Visual Studio 2015速递(1)——C#6.0新特性怎么用 Visual Studio 2015速递(2)——提升效率和质量(VS2015核心竞争力) Visual Studi ...

  8. KindEditor编辑器For DotNet控件

    KindEditor很不错,刚接触不久,非常喜欢.KindEditor网站有ForPHP等扩展的,没有ForNet的. 我是搞.net开发的,就用它简单封装了一个控件,拖过来即可使用,使用更加简单.源 ...

  9. Node.js入门:事件机制

    Evented I/O for V8 JavaScript     基于V8引擎实现的事件驱动IO.   事件机制的实现     Node.js中大部分的模块,都继承自Event模块(http://n ...

  10. Atitit 深入了解UUID含义是通用唯一识别码 (Universally Unique Identifier),

    Atitit 深入了解UUID含义是通用唯一识别码 (Universally Unique Identifier), UUID1 作用1 组成1 全球唯一标识符(GUID)2 UUID 编辑 UUID ...