home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Brotikasten
/
BROTCD01.iso
/
lern
/
lern338.d64
/
spulenfeld
(
.txt
)
< prev
next >
Wrap
Commodore BASIC
|
1995-08-09
|
4KB
|
148 lines
100 REM BERECHNUNG DER MAGNETISCHEN FELDSTAERKE
110 REM EINER SPULE
120 REM R: SPULENRADIUS
130 REM L: SPULENLAENGE
140 REM Z: KOORDINATE AUF DER SPULENACHSE,
150 REM NULLPUNKT IM MITTELPUNKT
160 REM S: KOORDINATE IN RADIALER RICHTUNG
170 REM I: STROMSTAERKE
180 REM N: WINDUNGSZAHL
190 REM BEI PROGRAMMSTOP: C DRUECKEN
200 PRINT "[147]"
210 PRINT "WERDEN ERKLAERUNGEN ZUM PROGRAMM GEWUENSCHT ?"
220 PRINT
230 PRINT "JA: TASTE J DRUECKEN"
240 PRINT "NEIN: TASTE N DRUECKEN"
250 GET R$ : IF R$ <> "J" AND R$ <> "N" THEN 250
260 IF R$ = "N" THEN 1100
300 PRINT "[147]"
310 PRINT "DAS PROGRAMM BERECHNET DIE KOMPONENTEN"
320 PRINT "DER MAGNETISCHEN FELDSTAERKE FUER EINE"
330 PRINT "GERADE SPULE MIT KREISFOERMIGEM QUER- SCHNITT"
340 PRINT
350 PRINT "DIE Z-KOORDINATE LIEGT AUF DER SPULEN-"
360 PRINT "ACHSE, NULLPUNKT IM MITTELPUNKT"
370 PRINT
380 PRINT "DIE S-KOORDINATE WEIST IN RADIALER RICHTUNG"
390 PRINT
400 PRINT "AM ANFANG WERDEN RADIUS R, LAENGE L,"
410 PRINT "WINDUNGSZAHL N, STROMSTAERKE I SOWIE"
420 PRINT "DIE KOORDINATEN Z UND S DES PUNKTES,"
430 PRINT "FUER DEN DIE FELDSTAERKE BERECHNET WERDEN SOLL, EINGEGEBEN"
440 PRINT
450 PRINT "DAS PROGRAMM KANN, JE NACH DEN EINGEGE-"
460 PRINT "BENEN WERTEN, RELATIV LANGE LAUFEN"
470 PRINT "(ETWA 1 MINUTE BIS 1 STUNDE)"
480 PRINT
490 PRINT "ZUR FORTSETZUNG DIE TASTE C DRUECKEN"
500 GET R$ : IF R$ <> "C" THEN 500
510 PRINT "[147]"
520 PRINT "BEISPIEL FUER DIE DATENEINGABE:"
530 PRINT "R = 0.05"
540 PRINT "L = 1"
550 PRINT "N = 100"
560 PRINT "I = 1"
570 PRINT "Z = 0.5"
580 PRINT "S = 0.025"
590 PRINT "SOLLEN DIE ERKLAERUNGEN WIEDERHOLT WERDEN ?"
600 PRINT "TASTE J BZW. N DRUECKEN"
610 GET R$ : IF R$ <> "J" AND R$ <> "N" THEN 610
620 IF R$ = "J" THEN 300
1100 PRINT "[147]"
1110 PRINT " [215][215][215][215][215][215][215][215][215][215][215][215][215][215][215][215][215][215][215][215][215] [221]"
1120 PRINTTAB(4); ":"; TAB(14); "[221]"; TAB(24); ": [221]"
1130 PRINTTAB(4); ":"; TAB(14); "R"; TAB(24); ": S"
1140 PRINTTAB(4); ":"; TAB(14); "[221]"; TAB(24); ": [221]"
1150 PRINTTAB(4); ":"; TAB(14); "[221]"; TAB(24); ": [221]"
1160 PRINT " [192][192][192][192][192][192][192][192][192][192][192][192]0[192][192][192][192][192][192][192][192][192][192][192][192][177][192][192][192][192]> Z"
1170 FOR I = 1 TO 4
1180 :PRINTTAB(4); ":"; TAB(14); "[221]"; TAB(24); ":"
1190 NEXT
1200 PRINT " [215][215][215][215][215][215][215][215][215][215][215][215][215][215][215][215][215][215][215][215][215]"
1210 PRINT " <[192][192][192][192][192][192][192][192] L [192][192][192][192][192][192][192][192]>"
1220 PRINT "FORTSETZUNG: C DRUECKEN"
1230 GET R$ : IF R$ <> "C" THEN 1230
1240 PRINT "[147]"
1250 INPUT "SPULENRADIUS R = "; R
1260 INPUT "SPULENLAENGE L = "; L
1270 INPUT "WINDUNGSZAHL N = "; N
1280 INPUT "STROMSTAERKE I = "; I
1290 INPUT "Z-KOORDINATE Z = "; Z
1300 INPUT "S-KOORDINATE S = "; S
1310 IF S <> R OR ABS(Z) > L/2 THEN 1330
1320 PRINT "S,Z FALSCH EINGEGEBEN, WIEDERHOLEN !" : GOTO 1290
1330 I = N*I
1340 P = (null)/2 : M = 2 : GZ = 0 : GS = 0 : L1 = 0 : L2 = 0
1350 PRINT "[147]"
1360 PRINT "BITTE WARTEN"
1370 PRINT "DIE RECHNUNG WIRD IM AUGENBLICK"
1380 PRINT "DURCHGEFUEHRT MIT EINER UNTERTEILUNG"
1390 PRINT "DER SPULE IN"
1400 PRINT ""; TAB(12); " "
1410 PRINT "[145]"; TAB(12); M; "TEILE"
1420 FZ = 0 : FS = 0
1430 FOR J = 1 TO M/2+0.1
1440 :ZA = Z+(2*J-1)*L/2/M
1450 :ZB = Z-(2*J-1)*L/2/M
1460 :GOSUB 1660
1470 :IF L1 = 1 THEN 1500
1480 :GOSUB 1810
1490 :FZ = FZ+HZ
1500 :IF L2 = 1 THEN 1530
1510 :GOSUB 1870
1520 :FS = FS+HS
1530 NEXT J
1540 FZ = FZ/M : FS = FS/M
1550 IF ABS(GZ-FZ) > ABS(FZ)*1E-3 OR L1 = 1 THEN 1570
1560 L1 = 1 : HZ = FZ
1570 IF ABS(GS-FS) > ABS(FS)*1E-3 OR L2 = 1 THEN 1590
1580 L2 = 1 : HS = FS
1590 IF L1 = 1 AND L2 = 1 THEN 1630
1600 GZ = FZ : GS = FS
1610 M = 2*M
1620 GOTO 1400
1630 PRINT "HZ ="; HZ
1640 PRINT "HS ="; HS
1650 END
1660 KA = 4*R*S/((R+S)*(R+S)+ZA*ZA)
1670 KB = 4*R*S/((R+S)*(R+S)+ZB*ZB)
1680 DEF FNY(X) = SQR(1-KA*SIN(X)*SIN(X))
1690 GOSUB 1940
1700 E1 = A/2
1710 DEF FNY(X) = SQR(1-KB*SIN(X)*SIN(X))
1720 GOSUB 1940
1730 E2 = A/2
1740 DEF FNY(X) = 1/SQR(1-KA*SIN(X)*SIN(X))
1750 GOSUB 1940
1760 K1 = A/2
1770 DEF FNY(X) = 1/SQR(1-KB*SIN(X)*SIN(X))
1780 GOSUB 1940
1790 K2 = A/2
1800 RETURN
1810 H1 = I/2/(null)/SQR((R+S)*(R+S)+ZA*ZA)
1820 H1 = H1*(K1+((R*R-S*S-ZA*ZA)*E1)/((R-S)*(R-S)+ZA*ZA))
1830 H2 = I/2/(null)/SQR((R+S)*(R+S)+ZB*ZB)
1840 H2 = H2*(K2+((R*R-S*S-ZB*ZB)*E2)/((R-S)*(R-S)+ZB*ZB))
1850 HZ = H1+H2
1860 RETURN
1870 IF S = 0 THEN HS = 0 : RETURN
1880 H3 = I*ZA/2/(null)/S/SQR((R+S)*(R+S)+ZA*ZA)
1890 H3 = H3*(-K1+((R*R+S*S+ZA*ZA)*E1)/((R-S)*(R-S)+ZA*ZA))
1900 H4 = I*ZB/2/(null)/S/SQR((R+S)*(R+S)+ZB*ZB)
1910 H4 = H4*(-K2+((R*R+S*S+ZB*ZB)*E2)/((R-S)*(R-S)+ZB*ZB))
1920 HS = H3+H4
1930 RETURN
1940 N = 1
1950 H = FNY(0)+FNY(P)
1960 A = H*P
1970 N = 2*N
1980 AA = A : HH = 0
1990 DX = P/N
2000 FOR Q = 1 TO N/2
2010 :HH = HH+FNY((2*Q-1)*DX)
2020 NEXT Q
2030 H = H+2*HH
2040 A = H*DX
2050 IF ABS(A-AA) > ABS(A)*1E-3 THEN 1970
2060 RETURN