home *** CD-ROM | disk | FTP | other *** search
/ HAM Radio 1 / HamRadio.cdr / tech / rf3 / mat.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1979-12-31  |  3.3 KB  |  78 lines

  1. 10  REM MATRIX ALGEBRA PROGRAM
  2. 15  PI=3.1416
  3. 20  REM OPTION #0,"W",128: REM PRECISION 5
  4. 30  DIM CR(2,2), CX(2,2), CM(2,2), CA(2,2)
  5. 40  DIM BR(2,2), BX(2,2), BM(2,2), BA(2,2): DG=180/PI: Z0=50
  6. 50  DIM AR(2,2), AX(2,2), AM(2,2), AA(2,2)
  7. 60  REM COMPLEX ARITHMATIC SUBROUTEENS
  8. 70  DEF FNMR(AR,AX,BR,BX)=AR*BR-AX*BX
  9. 80  DEF FNMX(AR,AX,BR,BX)=AR*BX+AX*BR
  10. 90  DEF FNDR(AR,AX,BR,BX)=(AR*BR+AX*BX)/(BR^2+BX^2)
  11. 100  DEF FNDX(AR,AX,BR,BX)=(AX*BR-AR*BX)/(BR^2+BX^2)
  12. 110  DEF FNMG(AR,AX)=SQR(AR^2+AX^2)
  13. 120  REM DEF FNAG(AR,AX): REM IF AR>=0 THEN FNRETURN DG*ATN(AX/AR)
  14. 130  REM FNEND DG*(ATN(AX/AR)+PI)
  15. 140  DEF FNR(MG,AG)=MG*COS(AG/DG)
  16. 150  DEF FNX(MG,AG)=MG*SIN(AG/DG)
  17. 160  REM PARAMETER INPUT
  18. 170  PRINT: PRINT "PROGRAM FOR MATRIX ALGEBRA"
  19. 172  PRINT:PRINT,"K2UYH ----- modified for ibm pc -- wa2tif":PRINT
  20. 180  PRINT "ANGLES IN DEGREES"
  21. 190  PRINT: INPUT "MATRIX #1 FORM = ('POL' OR 'RECT' OR 'FILE')"; Q$
  22. 200  IF Q$="POL" THEN 210 ELSE IF Q$="RECT" THEN 270  ELSE IF Q$="FILE" THEN 330 ELSE IF Q$="END" THEN END ELSE 190
  23. 210  PRINT: FOR I=1 TO 2: FOR J=1 TO 2
  24. 220  PRINT "MAG OF A("; I; ","; J; ")=";: INPUT AM(I,J)
  25. 230  PRINT "ANG OF A("; I; ","; J; ")=";: INPUT AA(I,J)
  26. 240  AR(I,J)=FNR(AM(I,J),AA(I,J)): PRINT "REAL A("; I; ","; J; ")="; AR(I,J)
  27. 250  AX(I,J)=FNX(AM(I,J),AA(I,J)): PRINT "IMAG. A("; I; ","; J; ")="; AX(I,J)
  28. 260  PRINT: NEXT: NEXT: GOTO 350
  29. 270  PRINT: FOR I=1 TO 2: FOR J=1 TO 2
  30. 280  PRINT "REAL OF A("; I; ","; J; ")=";: INPUT AR(I,J)
  31. 290  PRINT "IMG OF A("; I; ","; J; ")=";: INPUT AX(I,J)
  32. 300  AM(I,J)=FNMG(AR(I,J),AX(I,J)): PRINT "MAG A("; I; ","; J; ")="; AM(I,J)
  33. 305  GOSUB 700
  34. 310  AA(I,J)=FNAG(AR(I,J),AX(I,J)): PRINT "ANGLE A("; I; ","; J; ")="; AA(I,J)
  35. 320  PRINT: NEXT: NEXT: GOTO 350
  36. 330  PRINT: INPUT "PARAMETER #1 FILE NAME"; F$: PRINT:
  37. 340  OPEN #1,"I",F$: MAT READ #1,AR,AX,AM,AA: PRINT
  38. 350  INPUT "MATRIX #2 FORM = ('POL' OR 'RECT' OR 'FILE')"; Q$
  39. 360  IF Q$="POL" THEN 370 ELSE IF Q$="RECT" THEN 430  ELSE IF Q$="FILE" THEN 490 ELSE 350
  40. 370  PRINT: FOR I=1 TO 2: FOR J=1 TO 2
  41. 380  PRINT "MAG OF B("; I; ","; J; ")=";: INPUT BM(I,J)
  42. 390  PRINT "ANG OF B("; I; ","; J; ")=";: INPUT BA(I,J)
  43. 400  BR(I,J)=FNR(BM(I,J),BA(I,J)): PRINT "REAL B("; I; ","; J; ")="; BR(I,J)
  44. 410  BX(I,J)=FNX(BM(I,J),BA(I,J)): PRINT "IMAG. B("; I; ","; J; ")="; BX(I,J)
  45. 420  PRINT: NEXT: NEXT: GOTO 510
  46. 430  PRINT: FOR I=1 TO 2: FOR J=1 TO 2
  47. 440  PRINT "REAL OF B("; I; ","; J; ")=";: INPUT BR(I,J)
  48. 450  PRINT "IMG OF B("; I; ","; J; ")=";: INPUT BX(I,J)
  49. 460  BM(I,J)=FNMG(BR(I,J),BX(I,J)): PRINT "MAG B("; I; ","; J; ")="; BM(I,J)
  50. 465  GOSUB 700
  51. 470  BA(I,J)=FNAG(BR(I,J),BX(I,J)): PRINT "ANGLE B("; I; ","; J; ")="; BA(I,J)
  52. 480  PRINT: NEXT: NEXT: GOTO 510
  53. 490  PRINT: INPUT "PARAMETER #2 FILE NAME"; F$: PRINT:
  54. 500  OPEN #1,"I",F$: MAT READ #1,BR,BX,BM,BA: PRINT
  55. 510  INPUT "OPERATION ('ADD' OR 'MULT')"; Q$
  56. 520  IF Q$="ADD" THEN 580 ELSE IF Q$="NEW" THEN 190 ELSE IF Q$="END" THEN END ELSE IF Q$<>"MULT" THEN 510
  57. 530  REM MATRIX MULT PROGRAM
  58. 540  FOR I=1 TO 2: FOR J=1 TO 2: CR(I,J)=FNMR(AR(I,1),AX(I,1),BR(1,J),BX(1,J))+FNMR(AR(I,2),AX(I,2),BR(2,J),BX(2,J))
  59. 550  CX(I,J)=FNMX(AR(I,1),AX(I,1),BR(1,J),BX(1,J))+FNMX(AR(I,2),AX(I,2),BR(2,J),BX(2,J))
  60. 560  NEXT: NEXT: PRINT: GOTO 600
  61. 570  REM MATRIX ADD PROGRAM
  62. 580  FOR I=1 TO 2: FOR J=1 TO 2: CR(I,J)=AR(I,J)+BR(I,J)
  63. 590  CX(I,J)=AX(I,J)+BX(I,J): NEXT: NEXT: PRINT
  64. 600  FOR I=1 TO 2: FOR J=1 TO 2: PRINT
  65. 610  PRINT "REAL C("; I; ","; J; ")="; CR(I,J)
  66. 620  PRINT "IMG C("; I; ","; J; ")="; CX(I,J)
  67. 625  GOSUB 700
  68. 630  CM(I,J)=FNMG(CR(I,J),CX(I,J)): CA(I,J)=FNAG(CR(I,J),CX(I,J))
  69. 640  PRINT "MAG C("; I; ","; J; ")="; CM(I,J)
  70. 650  PRINT "ANG C("; I; ","; J; ")="; CA(I,J): NEXT: NEXT
  71. 660  PRINT: INPUT "WANT TO SAVE FILE (Y OR N)"; Q$: PRINT
  72. 670  IF Q$="N" THEN 510 ELSE IF Q$="END" THEN END ELSE INPUT "FILE NAME (BEGIN WITH PARAMETER)"; F$: PRINT
  73. 680  ERASE F$: OPEN #1,"O",F$: MAT WRITE #1, CR,CX,CM,CA
  74. 690  CLOSE #1: GOTO 510
  75. 700  IF AR>0 THEN GOTO 710 ELSE GOTO 720
  76. 710  DEF FNAG(AR,AX)=DG*ATN(AR/AX):RETURN
  77. 720  DEF FNAG(AR,AX)=DG*(ATH(AR/AX)+PI):RETURN
  78.