我的订单|我的收藏|我的商城|帮助中心|返回首页
虚拟现实新闻>VR>行业资讯>行业知识

行列式

文章来源:[SouVR.com]网络收集整理 作者:Frank/Tracy 发布时间:2010年06月03日 点击数: 字号:
窗体

窗体代码如下

  Option Explicit   Option Base 1   Private Sub Form_Load()   Dim i As Long   n = Val(InputBox("请输入行列式的阶数!", "输入框"))   If n < 2 Then   MsgBox "输入错误阶数必须大于1!" & vbCrLf & "请单击重试重新输入!", vbCritical, "系统提示"   Exit Sub   Command2.TabIndex = 1   End If   If n > 9 Then   MsgBox "输入错误本程序只能计算10阶一下的行列式!" & "请单击重试重新输入!", vbCritical, "系统提示"   Exit Sub   Command2.TabIndex = 1   End If   str2 = "1"   For i = 2 To n   str2 = str2 & i '组成1到n组成的字符串123456.....n   Next i   s = n   MsgBox "请在文本框里按行排列输入行列式" & vbCrLf & "注意用一个空格隔开!", vbOKOnly, "信息提示"   Text1.TabIndex = 1   Text1.Text = ""   End Sub   Private Sub Command1_Click()   Dim i As Long, j As Long, k As Long, m As Long, sum As Long, w As Long   Dim strb As String, sz1() As String, sz2() As Long, sz3() As Long   Dim str1 As String, str3 As String, st() As String   ReDim sa(n) As Long, sz2(n) As Long   '//st() 为输入行列式的字符串数组   '//sz3()为二维行列式数组   '//str2为1到n组成的字符串123456.....n 为全局变量   '//str3为str2的全排列所组成的字符串每种排列以“,”隔开   str1 = Text1.Text   If Len(str1) < 2 * n ^ 2 - 1 Then   MsgBox "输入错误!" & vbCrLf & n & "阶行列式中元素个数应为" & n ^ 2 & "!" & vbCrLf & "请查看是否个元素之间都用空格隔开及个数是否正确!" & vbCrLf & "请点击重试重新输入!", vbCritical, "系统提示"   Text1.Text = ""   Exit Sub   End If   st() = Split(str1) '取得行列式的数据   ReDim sz3(n, s) As Long   For i = 1 To n   For j = 1 To s   k = (i - 1) * s + j '按行排列行列式中第k个数,k与i,j的关系   sz3(i, j) = Val(st(k - 1)) '把原数组按行排列存入一个二维数组   Next j   Next i   Permutation "", str2, str3   sz1() = Split(str3, ",") '取n!个全排列存入 数组 sz1()   For j = 1 To JC(n)   m = 1 '每次都降m初始为1   strb = sz1(j) '每次取出一种排列存入strb   For i = 1 To n   sz2(i) = Val(Mid(strb, i, 1)) '顺序取每个全排列中的数字存入数组sz2()   Next i   For i = 1 To n   m = m * sz3(sz2(i), i) '求元素之积   Next i   sum = sum + arr(sz2(), n) * m 'n!个积相加并相应冠上正负号   Next j   Text2.Text = sum   End Sub   Private Sub Command2_Click()   Dim i As Long   n = Val(InputBox("请输入行列式的阶数!", "输入框"))   If n < 2 Then   MsgBox "输入错误阶数必须大于1!" & vbCrLf & "请单击重试重新输入!", vbCritical, "系统提示"   Exit Sub   Command2.TabIndex = 1   End If   If n > 9 Then   MsgBox "输入错误本程序只能计算10阶一下的行列式!" & "请单击重试重新输入!", vbCritical, "系统提示"   Exit Sub   Command2.TabIndex = 1   End If   str2 = "1"   For i = 2 To n   str2 = str2 & i '组成1到n组成的字符串123456.....n   Next i   s = n   MsgBox "请在文本框里按行排列输入行列式" & vbCrLf & "注意用一个空格隔开!", vbOKOnly, "信息提示"   Text1.Text = ""   End Sub

模块1

  递归法求全排列   Option Explicit   Option Base 1   '递归求全排列并返回全排列所组成的字符串   '算法描述:   '以8位为例,求8位数的全排列,其实是8位中任取一位   '在后加上其余7位的全排列   '7 位:任取一位,其后跟剩下6位的全排列   '……   '这样就有两部分,一部分为前面的已经取出来的串,另一部分为后面即将进行的全排列的串   '参数pre即为前面已经取出来的串   '参数s即为将要进行排列的串   '参数str即为返回全排列所组成的字符串,每种排列以“,”隔开   Public Sub Permutation(pre As String, s As String, str As String)   Dim i As Long   '// 如果要排列的串长度为1,则返回   If Len(s) = 1 Then   '//将排列数以“,”隔开存入一个字符串   str = str & "," & pre & s   Exit Sub   End If   '// for循环即是取出待排列的串的任一位   For i = 1 To Len(s)   '// 递归,将取出的字符并入已经取出的串   '// 那么剩下的串即为待排列的串   Permutation pre & Mid$(s, i
共4页 您在第3页 首页 上一页 1 2 3 4 下一页 尾页 跳转到页 本页共有3135个字符
  • 暂无资料
  • 暂无资料
  • 暂无资料
  • 暂无资料
  • 暂无资料