1樓:掌握原力的小羊
這是我之前做的一次課後作業,當時要趕作業,所以做的一般般,你可以參考參考這個業餘的演算法233333333333
Public Class Form1
Dim m!, n!, p!, q!, o!
Dim value1(1) As Single
Dim value2(2) As Single
Dim value3(2) As Single
Dim num1(3, 3) As Single
Dim num2(3, 3) As Single
Dim num3(3, 3) As Single '矩陣的乘積
Dim det! '行列式計算結果
Dim ajm(3, 3) As Single '伴隨矩陣
Dim im(3, 3) As Single '可逆矩陣
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.
Load
End Sub
Private Sub TextBox3_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.
Click
For Me.m = 0 To 3
For Me.n = 0 To 3
num1(m, n) = Val(InputBox("請輸入標號為" & "(" & m & "," & n & ")" & "的數字:", "生成二維陣列1"))
Next
Next
For Me.m = 0 To 3
For Me.n = 0 To 3
num2(m, n) = Val(InputBox("請輸入標號為" & "(" & m & "," & n & ")" & "的數字:", "生成二維陣列2"))
Next
Next
Button1.Enabled = False
For Me.m = 0 To 3
For Me.n = 0 To 3
TextBox2.Text &= num1(m, n) & Space(6 - Len(Str(num1(m, n))))
Next
TextBox2.Text &= vbCrLf
Next
TextBox2.Text &= vbCrLf
For Me.m = 0 To 3
For Me.n = 0 To 3
TextBox2.Text &= num2(m, n) & Space(6 - Len(Str(num2(m, n))))
Next
TextBox2.Text &= vbCrLf
Next
End Sub
Private Sub TextBox2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.
TextChanged
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.
Click
For Me.m = 0 To 3
For Me.n = 0 To 3
num3(m, n) = num1(m, 0) * num2(0, n) + num1(m, 1) * num2(1, n) + num1(m, 2) * num2(2, n) + num1(m, 3) * num2(3, n) '可以用迴圈來計算,略
Next
Next
For Me.m = 0 To 3
For Me.n = 0 To 3
TextBox1.Text &= num3(m, n) & Space(6 - Len(Str(num3(m, n))))
Next
TextBox1.Text &= vbCrLf
Next
Button2.Enabled = False
End Sub
Private Sub TextBox1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox1.
TextChanged
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.
Click
For Me.m = 0 To 3
For Me.n = 0 To 3
TextBox3.Text &= num3(n, m) & Space(6 - Len(Str(num3(m, n))))
Next
TextBox3.Text &= vbCrLf
Next
Button3.Enabled = False
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.
Click
For Me.n = 0 To 3
For Me.m = 0 To 3
If m = n Then
Exit For
End If
For Me.p = 0 To 3
If p = n Or p = m Then
Exit For
End If
If q > 1 Then
q = 0
End If
value1(q) = p
q += 1
Next
det += num3(0, n) * num3(1, m) * (num3(2, value1(0)) * num3(3, value1(1)) - num3(2, value1(1)) * num3(3, value1(0)))
Next
Next
If det = 0 Then
TextBox4.Text &= "該矩陣為不可逆矩陣" & vbCrLf
Else
TextBox4.Text &= "該矩陣為可逆矩陣" & vbCrLf
For Me.m = 0 To 3
For Me.n = 0 To 3
For Me.p = 0 To 3
If p = m Then
Exit For
End If
If o > 2 Then
o = 0
End If
value2(o) = p
o += 1
Next
For Me.q = 0 To 3
If q = n Then
Exit For
End If
If o > 2 Then
o = 0
End If
value3(o) = q
o += 1
Next
ajm(m, n) = num3(value2(0), value3(0)) * (num3(value2(1), value3(1)) * num3(value2(2), value3(2)) - num3(value2(1), value3(2)) * num3(value2(2), value3(1)))
Next
Next
For Me.m = 0 To 3
For Me.n = 0 To 3
im(m, n) = ajm(m, n) / det
Next
Next
For Me.m = 0 To 3
For Me.n = 0 To 3
TextBox4.Text &= im(m, n) & Space(6 - Len(Str(num3(m, n))))
Next
TextBox4.Text &= vbCrLf
Next
End If
Button4.Enabled = False
End Sub
Private Sub TextBox3_TextChanged_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox3.
TextChanged
End Sub
Private Sub TextBox4_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox4.
TextChanged
End Sub
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.
Click
EndEnd Sub
Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.
Click
TextBox1.Text = ""
TextBox2.Text = ""
TextBox3.Text = ""
TextBox4.Text = ""
det = 0
ReDim num1(3, 3)
ReDim num2(3, 3)
ReDim num3(3, 3)
ReDim value1(1)
ReDim value2(2)
ReDim value3(2)
ReDim ajm(3, 3)
ReDim im(3, 3)
Button1.Enabled = True
Button2.Enabled = True
Button3.Enabled = True
Button4.Enabled = True
End Sub
End Class
矩陣求逆的幾何意義是什麼?
或許可以這樣理解,將一組向量經過某種線性變換 逆矩陣 回歸為單位向量組。若一組向量的秩不滿則不存在逆矩陣,即低維不能線性變換為高維。 單建華 由於知乎不太好貼公式,請移步我的部落格 https blog.csdn.net jhshanvip article month 2020 03 過渡矩陣 舊基...
利用初等變化求逆矩陣原理是什麼?
一帆風順 剛好思考到這個問題。我想稍微說一下,我們的世界本質上就是無窮多個元素的集合,可以說是乙個超大的矩陣,單個實數,複數都是一階矩陣。那麼我們要讓 A E A E是我假想的兩個元素集合,也就是子矩陣。我現在要讓A矩陣這個位置變成E。自然要對他進行乘乙個陣列集合,這個不是單獨的數,而是乙個數的集合...
matlab中矩陣求逆,報錯說記憶體不足怎麼辦,128g的工作站都跑不下來?
Ruhr MATLAB裡矩陣求逆是很容易出現記憶體不足的。基本上10000x10000以上的矩陣求逆我都不會考慮在MATLAB直接用pinv 或者 去做了 考慮到我接觸的大部分問題都是病態欠定問題,這裡不考慮inv 的情況 大矩陣求逆最好還是從演算法上做出改進來入手吧,有很多matrix inver...