fb:porticula NoPaste
FormatierungsProbleme aufzeigen
Uploader: | ![]() |
Datum/Zeit: | 29.09.2007 19:28:26 |
'Was das Programm macht, ist eigentlich egal..
'Wenn es nur um die tabellarische Ausgabe geht,
'ist Print Using.. besser ;-))
'RSet geht natürlich auch, ist aber komplizierter..
#include once "vbcompat.bi"
Type Real As Double
Declare Sub MatrixAusgeben(A() As Real)
Declare Sub MatrixAusgeben2(A() As Real)
Declare Function Mpy(i As Integer, j As Integer, k As Integer, Eins() As Real, Zwei() As Real) As Real
Declare Function Determinante(A() As Real) As Real
Const unten=0
Const iDim=2
Dim As Real A(iDim, iDim)={{1, 2, 3}, {4, 5, 6}, {7, 8, 9}}, d
Dim As Integer i, j, k
Cls
?"Berechnung der Determinanten einer Matrix A"
?"Matrix ausgeben"
MatrixAusgeben(A())
?"Determinante berechnen"
d=Determinante(A())
?"Determinante=" &d;
If d=0.0 Then ?", exakt NULL";
?!"\nMatrix ausgeben"
MatrixAusgeben2(A())
?"Eniki..";
Sleep
End
Sub MatrixAusgeben(A() As Real)
Dim As Integer i, j
For i=unten To iDim
For j=unten To iDim
If j<>iDim Then
?Using "###.####";a(i, j);
Else
?Using "###.####";a(i, j)
End If
Next
Next
End Sub
Sub MatrixAusgeben2(A() As Real)
Dim As Integer i, j
For i=unten To iDim
For j=unten To iDim
If j<>iDim Then
?Format(a(i, j), "###.0000 ");
Else
?Format(a(i, j), "###.0000 ")
End If
Next
Next
End Sub
Function Determinante(A() As Real) As Real
Dim As Real Eins(iDim, iDim), Zwei(iDim, iDim), d
Dim As Integer m, i
Zwei(unten, unten)=1.0
Eins(unten, unten)=A(unten, unten)
For k As Integer=unten To iDim-1
If Eins(k, k)=0.0 Then Return 0.0
i=k+1
For j As Integer=unten To k
Zwei(j, i)=(A(j, i)-Mpy(j-1, j, i, Eins(), Zwei()))/Eins(j, j)
Eins(i, j)=A(i, j)-Mpy(j-1, i, j, Eins(), Zwei())
Eins(i, i)=A(i,i)-Mpy(k, i, i, Eins(), Zwei())
Zwei(i, i)=1.0
Next
Next
d=1.0
For i=unten To iDim
d*=Eins(i, i)
Next
Determinante=d 'Funktionsergebnis an den Namen zuweisen!!!
End Function
Function Mpy(i As Integer, j As Integer, k As Integer, Eins() As Real, Zwei() As Real) As Real 'Funktioniert nur mit Determinante ZUSAMMEN..
Dim d As Real=0.0
For m As Integer=unten To i
d+=Eins(j, m)*Zwei(m, k)
Next
Mpy=d
End Function