300 "A" GOTO 302 301 A= INT (1000*X+.5)/1000: RETURN 302 CLEAR : RESTORE 343: READ N,M 303 DIM A(N,M),B(N,M),C(N,M),D(M,M),E(N,N),F(M),G(N),H(N),I(N),J(N),K(M+1,M) 304 FOR I=1 TO N: PAUSE I;"Messung": FOR J=1 TO M: READ A(I,J):B(I,J)=A(I,J): NEXT J: READ H(I) 305 READ I(I): NEXT I: CLS : FOR I=1 TO N:E=E+ SQU A(I,1): NEXT I: FOR I=1 TO N:A(I,1)=A(I,1)/ SQR E: NEXT I 306 C(1,1)= SQR E: FOR B=2 TO M: FOR J=1 TO B-1:C(J,B)=0 307 FOR I=1 TO N:C(J,B)=C(J,B)+A(I,J)*A(I,B): NEXT I 308 FOR I=1 TO N:A(I,B)=A(I,B)-C(J,B)*A(I,J): NEXT I: NEXT J 309 E=0: FOR I=1 TO N:E=E+ SQU A(I,B): NEXT I 310 C(B,B)= SQR E: FOR I=1 TO N:A(I,B)=A(I,B)/C(B,B): NEXT I: NEXT B 311 FOR B=1 TO M:F(B)=0: FOR I=1 TO N 312 F(B)=F(B)+A(I,B)*H(I): NEXT I: FOR I=1 TO N:H(I)=H(I)-F(B)*A(I,B): NEXT I: NEXT B 313 FOR I=M TO 1 STEP -1:E=F(I) 314 IF I=M THEN 316 315 FOR B=I+1 TO M:E=E+G(B)*C(I,B): NEXT B 316 G(I)=-E/C(I,I): NEXT I: GOSUB 338: FOR I=1 TO M:X=G(I): GOSUB 301: PRINT A: NEXT I: GOSUB 339 317 FOR I=1 TO N:E=0: FOR J=1 TO M:E=E+B(I,J)*G(J): NEXT J:X=E 318 GOSUB 301: PRINT STR$ I+")=";A:J(I)=E: NEXT I: FOR I=1 TO M: FOR J=1 TO M:E=0 319 FOR B=1 TO N:E=E+B(B,I)*B(B,J): NEXT B:K(I,J)=E: NEXT J: NEXT I 320 FOR I=1 TO M:D=I+1: FOR J=I TO M:G=J+1 321 X=K(I,J): FOR B=I-1 TO 1 STEP -1:X=X-K(G,B)*K(D,B): NEXT B: IF J<>I THEN 324 322 IF X<=0 PRINT "Matrix<=0!": END 323 H=1/ û X:K(D,I)=H: GOTO 325 324 K(G,I)=X*H 325 NEXT J: NEXT I: FOR I=1 TO M-1: FOR J=I+1 TO M:K=0:G=J+1 326 FOR B=J-1 TO I STEP -1:K=K-K(G,B)*K(B+1,I): NEXT B 327 K(G,I)=K*K(G,J): NEXT J: NEXT I: FOR I=1 TO M: FOR J=1 TO M 328 K=0:G=M+1: FOR B=J+1 TO G:K=K+K(B,J)*K(B,I) 329 NEXT B:K(J+1,I)=K: NEXT J: NEXT I: FOR I=2 TO M+1: FOR J=1 TO I-1 330 D(I-1,J)=K(I,J),D(J,I-1)=K(I,J): NEXT J: NEXT I 331 GOSUB 340: FOR I=1 TO M: FOR J=1 TO M:D(I,J)= SQU I(I)*D(I,J):X=D(I,J) 332 GOSUB 301: PRINT "P("+ STR$ I+"/"+ STR$ J+")=";A: NEXT J: NEXT I: FOR I=1 TO N: FOR B=1 TO I 333 E=0 334 FOR J=1 TO M: FOR C=1 TO M:E=E+B(I,J)*D(J,C)*B(B,C): NEXT C: NEXT J 335 E(I,B)=E:E(B,I)=E: NEXT B: NEXT I: GOSUB 341 336 FOR I=1 TO N: FOR J=1 TO N:X=E(I,J): GOSUB 301: PRINT "M("+ STR$ I+"/"+ STR$ J+")=";A: NEXT J: NEXT I 337 GOSUB 342: FOR I=1 TO N:X= SQR E(I,I): GOSUB 301: PRINT "F("+ STR$ I+")=";A: NEXT I: END 338 "1" PRINT "Ausgleichsgerade": RETURN 339 "2" PRINT "ausgegl. Messwerte": RETURN 340 "3" PRINT "Kovarianzmatrix der Parameter": RETURN 341 "4" PRINT "Kovarianzmatrix d. ausgegl. Messwerte": RETURN 342 "5" PRINT "Fehler d. ausgegl. Messwerte": RETURN 343 DATA 5,2 344 DATA 273.15,1,-300,.3 345 DATA 319.7,1,-300.3234,.3 346 DATA 370,1,-300.6919,.3 347 DATA 423.7,1,-301.1162,.3 348 DATA 500,1,-301.6229,.3