關於vb的矩陣求逆問題?

時間 2021-06-08 04:28:26

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...