summaryrefslogtreecommitdiff
path: root/info/maad/pgm5.bas
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /info/maad/pgm5.bas
Initial commit
Diffstat (limited to 'info/maad/pgm5.bas')
-rw-r--r--info/maad/pgm5.bas35
1 files changed, 35 insertions, 0 deletions
diff --git a/info/maad/pgm5.bas b/info/maad/pgm5.bas
new file mode 100644
index 0000000000..f022808475
--- /dev/null
+++ b/info/maad/pgm5.bas
@@ -0,0 +1,35 @@
+100 DEFDBL A-H, O-Z
+102 C2 = SIN(EXP(1!) / 2!) * SIN(EXP(1!) / 2!)
+105 DEF FNA (x AS DOUBLE) = SQR(1! - C2 * SIN(x) ^ 2)
+106 DEF FNB (x AS DOUBLE) = -.5 * C2 * SIN(2! * x) / FNA(x)
+107 DEF FNC (x AS DOUBLE) = -C2 * COS(2! * x) / FNA(x) - .25 * C2 * C2 * SIN(2! * x) ^ 2 / FNA(x) ^ 3
+108 DEF FND (x AS DOUBLE) = 2! * C2 * SIN(2! * x) / FNA(x) - .75 * C2 * C2 * SIN(4! * x) / FNA(x) ^ 3 - .375 * C2 ^ 3 * SIN(2! * x) ^ 3 / FNA(x) ^ 5
+109 DEF FNE (x AS DOUBLE) = 4! * C2 * COS(2! * x) / FNA(x) + C2 ^ 2 * SIN(2! * x) ^ 2 / FNA(x) ^ 3 - 3! * C2 ^ 2 * COS(4! * x) / FNA(x) ^ 3 - 1.125 * C2 ^ 3 * SIN(4! * x) * SIN(2! * x) / FNA(x) ^ 5 - (18! / 8!) * C2 ^ 3 * SIN(2! * x) ^ 2 * COS(2! * x) / FNA(x) ^ 5 - (15! / 16!) * C2 ^ 4 * SIN(2! * x) ^ 4 / FNA(x) ^ 7
+110 A = 0!
+112 INPUT "Left endpoint = "; B
+114 IF (A > B) OR (B > 3.141592653589793# / 2!) THEN PRINT "Input out of range": GOTO 112
+116 OPEN "92_12_14.txt" FOR APPEND AS #1
+120 REM Left endpoint <= 3.141592653589793# / 2!
+130 SUM1 = 0!: SUM2 = 0!: SUM3 = 0!: SUM4 = 0!
+150 N = 512: H = (B - A) / N
+160 FOR I = 1 TO N STEP 2: REM The "FOR" loop is done n/2 times.
+170 SUM1 = SUM1 + FNB(A + (I - 1) * H)
+172 SUM2 = SUM2 + FNC(A + (I - 1) * H)
+174 SUM3 = SUM3 + FND(A + (I - 1) * H)
+176 SUM4 = SUM4 + FNE(A + (I - 1) * H)
+180 SUM1 = SUM1 + 4! * FNB(A + I * H)
+182 SUM2 = SUM2 + 4! * FNC(A + I * H)
+184 SUM3 = SUM3 + 4! * FND(A + I * H)
+186 SUM4 = SUM4 + 4! * FNE(A + I * H)
+190 SUM1 = SUM1 + FNB(A + (I + 1) * H)
+192 SUM2 = SUM2 + FNC(A + (I + 1) * H)
+194 SUM3 = SUM3 + FND(A + (I + 1) * H)
+196 SUM4 = SUM4 + FNE(A + (I + 1) * H)
+200 NEXT I
+210 L$ = "##.##### ##.##### ##.##### ##.##### ##.#####"
+300 PRINT USING L$; FNA(B) - FNA(A); FNB(B) - FNB(A); FNC(B) - FNC(A); FND(B) - FND(A)
+310 PRINT USING L$; SUM1 * H / 3!; SUM2 * H / 3!; SUM3 * H / 3!; SUM4 * H / 3!
+320 PRINT #1, USING L$; FNA(B) - FNA(A); FNB(B) - FNB(A); FNC(B) - FNC(A); FND(B) - FND(A)
+330 PRINT #1, USING L$; SUM1 * H / 3!; SUM2 * H / 3!; SUM3 * H / 3!; SUM4 * H / 3!
+340 CLOSE #1
+