fb:porticula NoPaste
MatInv in GWBasic
Uploader: | ytwinky |
Datum/Zeit: | 16.01.2011 17:03:03 |
1 GOTO 99 ' So ist Platz fr einen System Bereich geschaffen, Danke Rainer!
3 JZ$="Matin.Bas":PRINT JZ$" laden...":LOAD JZ$ ' Falls mal nix mehr geht!
4 JZ$="Matin.Bas":PRINT JZ$" speichern...":SAVE JZ$,A ' sonst ist alles weg!
99 'Start des eigentlichen Programms, bloá kein Renum benutzen!
100 DEFINT I-N:DEFDBL A-H,O-Z:F$="####.#####":FI$="###":RANDOMIZE TIMER
110 IZ=10:DIM C(IZ,IZ),B(IZ,IZ),IIZ(IZ)
120 PRINT"Dimension der Matrix(1..";RIGHT$(STR$(IZ),2);:INPUT;"):",L:PRINT
130 IF L<1 OR L>IZ THEN 120
140 PRINT"Matrix":FOR I=1 TO L:FOR J=1 TO L:C(I,J)=RND
150 PRINT USING F$;C(I,J);:B(I,J)=C(I,J):NEXT:PRINT:NEXT I:PRINT"Inverse"
160 FOR I=1 TO L:N=I-1
170 N=N+1:IF N>L THEN PRINT"Matrix singulr":STOP
180 IF C(N,I)=0! THEN 170
190 K=N:FOR J=1 TO L:D=C(I,J):C(I,J)=C(K,J):C(K,J)=D:NEXT:IIZ(I)=K
200 C(I,I)=1!/C(I,I):FOR J=1 TO L:IF J<>I THEN C(I,J)=C(I,J)*C(I,I)
210 NEXT J:FOR N=1 TO L:IF N=I THEN 230
220 D=-C(N,I):C(N,I)=0!:FOR J=1 TO L:C(N,J)=C(N,J)+D*C(I,J):NEXT
230 NEXT N,I:FOR I=1 TO L:IF IIZ(I)=I THEN 270
240 FOR J=1 TO L:D=C(J,I):K=IIZ(I)
250 REPEAT K=IIZ(K) UNTIL K=IIZ(I)
260 C(J,I)=C(J,K):C(J,K)=D:NEXT J
270 NEXT:FOR I=1 TO L:FOR J=1 TO L:PRINT USING F$;C(I,J);:NEXT:PRINT:NEXT
280 PRINT"Einheits-Matrix":FOR I=1 TO L:FOR J=1 TO L:D=0!:FOR K=1 TO L
290 D=D+B(I,K)*C(K,J):NEXT:PRINT USING FI$;D;:NEXT:PRINT:NEXT:END