'Vjezba za pozivanje SUB ' matzbroj ... zbrajanje dviju matrica ' vektmnoz ... skalarno mnozenje dvaju vektora ' matmnoz ... mnozenje dviju matrica ' gausl ... Gaussova eliminacija DECLARE SUB MATZBROJ (n, m, a(), b(), c()) DECLARE SUB VEKTMNOZ (n, a(), b(), p) DECLARE SUB MATMNOZ (n, p, m, a(), b(), c()) DECLARE SUB GAUSL (n, ns, a()) CLS 'Rjesavanje sistema linearnih jednadzbi 'test za potprogram GAUSL CLS n = 4: ns = 1 DIM a(n, n + ns) PRINT "Zadani sistem linearnih jednad`bi " FOR i = 1 TO n FOR j = 1 TO n + ns READ a(i, j) PRINT "A("; i; j; ")="; a(i, j), NEXT j PRINT NEXT i DATA 3.4,6.7,-1.2,4.5,9,7.2,-1.5,3.9,1.7 DATA 10,2.2,4.7,5.5,3.8,1.1,8.8,-2.4,-1.9 DATA 7.7,0.5 PRINT "---------------------" PRINT "Za nastavak pritisnite tipku ENTER " INPUT r$ CALL GAUSL(n, ns, a()) PRINT "Rje{enje metodom GAUSSOVE eliminacije ": PRINT FOR i = 1 TO n: PRINT "x("; i; ")="; a(i, n + ns): NEXT i PRINT : PRINT "Za nastavak pritisnite tipku ENTER " INPUT r$ ' Zbrajanje dviju MATRICA ' test za potprogram MATZBROJ CLS PRINT "Program za zbrajanje dvije matrice C(n,m) = AA(n,m) + BB(n,m)" n = 2: m = 3 DIM AA(n, m), BB(n, m), c(n, m) FOR i = 1 TO n: FOR j = 1 TO m READ AA(i, j) NEXT j: NEXT i DATA 2,5,-4,5,-1,3 FOR i = 1 TO n: FOR j = 1 TO m READ BB(i, j) NEXT j: NEXT i DATA 5,-4,2,3,-2,4 PRINT "Prva matrica" FOR i = 1 TO n: FOR j = 1 TO m PRINT "AA("; i; j; ")="; AA(i, j), NEXT j: PRINT : NEXT i PRINT "Druga matrica" FOR i = 1 TO n: FOR j = 1 TO m PRINT "BB("; i; j; ")="; BB(i, j), NEXT j: PRINT : NEXT i CALL MATZBROJ(n, m, AA(), BB(), c()) PRINT "ZBROJ MATRICA" FOR i = 1 TO n: FOR j = 1 TO m PRINT "C("; i; ","; j; ")="; c(i, j), NEXT j: PRINT : NEXT i INPUT r$ 'test za mno`enje matrica P(n,m)=M1(n,s)*M2(s,m) CLS PRINT "PROGRAM ZA MNO@ENJE DVIJU MATRICA P= M1 * M2" n = 2: s = 3: m = 3 DIM M1(n, s), M2(s, m), p(n, m) PRINT "Matrica M1" FOR i = 1 TO n: FOR j = 1 TO s READ M1(i, j): PRINT "M1("; i; ","; j; ")="; M1(i, j), NEXT j: PRINT : NEXT i DATA 2,4,4,5,6,-3 PRINT "Matrica M2" FOR i = 1 TO s: FOR j = 1 TO m READ M2(i, j): PRINT "M2("; i; ","; j; ")="; M2(i, j), NEXT j: PRINT : NEXT i DATA 2,5,3,-4,1,-1,3,-3,5 CALL MATMNOZ(n, s, m, M1(), M2(), p()) PRINT "Produkt matrica P" FOR i = 1 TO n: FOR j = 1 TO m PRINT "P("; i; ","; j; ")="; p(i, j), NEXT j: PRINT : NEXT i PRINT : PRINT " Za nastavak pritisnite tipku ENTER" INPUT r$ 'test za skalarno mnozenje dvaju vektora CLS PRINT "test za skalarno mno`enje dva vektora" d = 3 DIM vektor1(d), vektor2(d) FOR i = 1 TO d: READ vektor1(i) PRINT "vektor1("; i; ")="; vektor1(i): NEXT i DATA 1,3,-4 PRINT FOR i = 1 TO d: READ vektor2(i) PRINT "Vektor2("; i; ")="; vektor2(i) NEXT i DATA 5,-1,3 CALL VEKTMNOZ(d, vektor1(), vektor2(), produkt) PRINT "Skalarni produkt ="; produkt END SUB GAUSL (n, ns, a()) 'Gaussova eliminacija za rjesavanje linearnog 'sistema jednadzbi A(n,n)X(n,ns)=B(n,ns) 'rjesenja su stupci (n+1) do (n+ns) matrice A 'pocetni elementi matrice A se nakon pozivanja GAUSL gube n1 = n + 1 nt = n + ns IF i = 1 THEN GOTO 5650 FOR i = 2 TO n ip = i - 1 i1 = ip x = ABS(a(i1, i1)) FOR j = i TO n IF ABS(a(j, i1)) < x THEN GOTO 5520 x = ABS(a(j, i1)) ip = j 5520 NEXT j IF ip = i1 THEN GOTO 5590 FOR j = i1 TO nt x = a(i1, j) a(i1, j) = a(ip, j) a(ip, j) = x NEXT j 5590 FOR j = i TO n x = a(j, i1) / a(i1, i1) FOR k = i TO nt a(j, k) = a(j, k) - x * a(i1, k) NEXT k NEXT j NEXT i 5650 FOR l = 1 TO n i = n1 - l FOR k = n1 TO nt a(i, k) = a(i, k) / a(i, i) IF i = 1 THEN GOTO 5730 i1 = i - 1 FOR j = 1 TO i1 a(j, k) = a(j, k) - a(i, k) * a(j, i) 5730 NEXT j NEXT k NEXT l END SUB SUB MATMNOZ (n, p, m, a(), b(), c()) FOR i = 1 TO n: FOR j = 1 TO m c(i, j) = 0 FOR k = 1 TO p c(i, j) = c(i, j) + a(i, k) * b(k, j) NEXT k NEXT j: NEXT i END SUB SUB MATZBROJ (n, m, a(), b(), c()) 'potprogram za zbrajanje dviju matrica ' C(n,m)=A(n,m)+B(n,m) FOR i = 1 TO n FOR j = 1 TO m c(i, j) = a(i, j) + b(i, j) NEXT j NEXT i END SUB SUB VEKTMNOZ (n, a(), b(), p) p = 0 FOR i = 1 TO n p = p + a(i) * b(i) NEXT i END SUB