Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Option Explicit
- Dim A(1 To 100, 1 To 100) As Double
- Dim Nrighe As Integer
- Dim Ncolonne As Integer
- Dim i As Integer
- Dim j As Integer
- Dim k As Integer
- Private Sub Command1_Click()
- Nrighe = txtNrighe.Text
- Ncolonne = txtNcolonne.Text
- TxtRisposta.Text = TxtRisposta.Text & vbCrLf
- For i = 1 To Nrighe
- For j = 1 To Ncolonne
- A(i, j) = InputBox("inserisci il valore a(" & i & "," & j & " ) ")
- TxtRisposta.Text = TxtRisposta.Text & " " & A(i, j)
- Next j
- TxtRisposta.Text = TxtRisposta.Text & vbCrLf
- TxtRisposta.SelStart = Len(TxtRisposta.Text)
- Next i
- End Sub
- Private Sub Command2_Click()
- Dim Trasposta(1 To 100, 1 To 100) As Double
- Dim M As Double
- Dim N As Double
- TxtRisposta.Text = TxtRisposta.Text & vbCrLf
- M = Nrighe
- N = Ncolonne
- For i = 1 To N
- For j = 1 To M
- Trasposta(i, j) = A(j, i)
- TxtRisposta.Text = TxtRisposta.Text & " " & Trasposta(i, j)
- Next j
- TxtRisposta.Text = TxtRisposta.Text & vbCrLf
- TxtRisposta.SelStart = Len(TxtRisposta.Text)
- Next i
- End Sub
- Private Sub Command3_Click()
- If Nrighe <> Ncolonne Then
- MsgBox ("Per calcolare il determinante la matrice deve essere quadrata"), vbInformation
- Exit Sub
- End If
- TxtRisposta.Text = TxtRisposta.Text & vbCrLf & "Determinante=" & Determinante(A, Nrighe) & vbCrLf
- TxtRisposta.SelStart = Len(TxtRisposta.Text)
- End Sub
- Private Sub Command4_Click()
- Dim N As Integer
- Dim M As Integer
- Dim i1 As Integer
- Dim i2 As Integer
- Dim i3 As Integer
- Dim j1 As Integer
- Dim j2 As Integer
- Dim j3 As Integer
- Dim det As Double
- Dim Inversa(1 To 100, 1 To 100) As Double
- Dim B(1 To 100, 1 To 100) As Double
- Dim C(1 To 100, 1 To 100) As Double
- If Nrighe <> Ncolonne Then
- MsgBox "Per calcolare l'inversa la matrice dev'essere quadrata.", vbInformation
- Exit Sub
- End If
- det = Determinante(A, Nrighe)
- If det = 0 Then
- MsgBox "La matrice ha determinante nullo.", vbExclamation
- Else
- For i1 = 1 To Nrighe
- For j1 = 1 To Ncolonne
- i3 = 0
- For i2 = 1 To Nrighe
- If i2 <> i1 Then
- i3 = i3 + 1
- j3 = 0
- For j2 = 1 To Ncolonne
- If j2 <> j1 Then
- j3 = j3 + 1
- B(i3, j3) = A(i2, j2)
- End If
- Next j2
- End If
- Next i2
- If (i1 + j1) Mod 2 = 0 Then
- C(i1, j1) = Determinante(B, Nrighe - 1)
- Else
- C(i1, j1) = -Determinante(B, Nrighe - 1)
- End If
- Next j1
- Next i1
- TxtRisposta.Text = TxtRisposta.Text & vbCrLf
- For i = 1 To Nrighe
- For j = 1 To Ncolonne
- Inversa(i, j) = C(j, i) / det
- TxtRisposta.Text = TxtRisposta.Text & " " & Inversa(i, j)
- Next j
- TxtRisposta.Text = TxtRisposta.Text & vbCrLf
- TxtRisposta.SelStart = Len(TxtRisposta.Text)
- Next i
- End If
- End Sub
- Private Sub Command5_Click()
- Dim E(1 To 100, 1 To 100) As Double
- Dim Controllo As Integer
- Dim Rango As Integer
- Dim P As Double
- Dim O As Double
- Dim N As Integer
- Dim M As Integer
- Dim i1 As Integer
- Dim j1 As Integer
- Dim i2 As Integer
- N = Nrighe
- M = Ncolonne
- For i = 1 To N
- For j = 1 To M
- E(i, j) = A(i, j)
- Next j
- Next i
- j = 0
- For i = 1 To N
- j = j + 1
- If E(i, j) = 0 Then
- For i1 = i + 1 To N
- If E(i1, j) <> 0 Then
- For j1 = 1 To M
- E(i, j1) = E(i, j1) + E(i1, j1)
- E(i1, j1) = E(i, j1) - E(i1, j1)
- E(i, j1) = E(i, j1) - E(i1, j1)
- Next j1
- i1 = N
- End If
- Next i1
- End If
- For i1 = i + 1 To N
- If E(i1, j) <> 0 Then
- P = E(i1, j)
- O = E(i, j)
- For j1 = j To M
- E(i, j1) = -E(i, j1) * P / O
- E(i1, j1) = E(i1, j1) + E(i, j1)
- Next j1
- End If
- Next i1
- Next i
- For i = 1 To N - 1
- j = 0
- Do
- j = j + 1
- Controllo = 1
- If E(i + 1, j) = 0 Then
- If E(i, j) <> 0 Then
- Controllo = 0
- End If
- Else
- If E(i, j) / E(i + 1, j) <> E(i, j + 1) / E(i + 1, j + 1) Then
- Controllo = 0
- End If
- End If
- Loop Until Controllo = 0 Or j = M - 1
- If Controllo = 1 And j = M - 1 Then
- For i1 = i + 1 To N
- For j = 1 To M
- E(i1, j) = 0
- Next j
- i = N - 1
- Next i1
- End If
- Next i
- Rango = N
- For i = N To 1 Step -1
- j = 0
- Controllo = 1
- Do
- j = j + 1
- If E(i, j) <> 0 Then
- Controllo = 0
- End If
- Loop Until Controllo = 0 Or j = M
- If Controllo = 1 Then
- Rango = Rango - 1
- End If
- Next i
- TxtRisposta.Text = TxtRisposta.Text & vbCrLf
- TxtRisposta.Text = TxtRisposta.Text & vbCrLf & "Rango=" & Rango & vbCrLf
- TxtRisposta.SelStart = Len(TxtRisposta.Text)
- End Sub
- Private Sub Command6_Click()
- Unload Me
- End Sub
- Public Function Determinante(Matrice() As Double, N As Integer) As Double
- Dim D(1 To 100, 1 To 100) As Double
- Dim S As Double
- For i = 1 To N
- For j = 1 To N
- D(i, j) = Matrice(i, j)
- Next j
- Next i
- If N = 1 And D(1, 1) = 0 Then
- Determinante = 0
- Exit Function
- End If
- For i = 1 To N
- If D(i, i) = 0 Then
- k = i
- Do
- If i = N Then
- k = k - 1
- Else
- k = k + 1
- End If
- For j = 1 To N
- D(i, j) = D(i, j) + Matrice(k, j)
- Next j
- Loop Until D(i, i) <> 0
- End If
- Next i
- Determinante = 1
- For i = 1 To N - 1
- For j = i + 1 To N
- S = -D(j, i) / D(i, i)
- For k = 1 To N
- D(j, k) = D(j, k) + D(i, k) * S
- Next k
- Next j
- Next i
- For i = 1 To N
- Determinante = Determinante * D(i, i)
- Next i
- End Function
Add Comment
Please, Sign In to add comment