APPLICAZIONI DEL QBASIC A VARI

Transcript

APPLICAZIONI DEL QBASIC A VARI
APPLICAZIONI DEL QBASIC A VARI ARGOMENTI MATEMATICI
E RIFLESSIONI PER VIVERE SANI E PIU’ A LUNGO…
GUIDO CAROLLA
Sunto.
Dopo una breve introduzione che fa riferimento al linguaggio Basic, all’avvento del QBasic, a come
scaricarlo dalla rete ed iniziare a programmare sia con l’ausilio della guida on line che mediante
manuali cartacei, si entra in argomento con la ‘Didamatica’ e in particolare con l’originaria
Digidattica matematica, proponendo nella prima parte questi listati in QBasic con i relativi esempi:
numeri perfetti, numeri binari, terne pitagoriche (n.2), numeri primi, massimo comune divisore e
minimo comune multiplo, serie armoniche divergenti e convergenti (n. 3), teorema di Fermat,
equazioni indeterminate (n. 2), integrale definito.
Nella seconda parte si entra in argomento dapprima con due listati “Salute” e “Quanto vivrai?”
che possono in qualche modo… aiutarci a vivere meglio; segue poi la parte relativa alla Digidattica
matematica, in cui si propongono i seguenti listati in QBasic (di cui alcuni con i relativi esempi):
velocità tangenziale di rotazione in qualunque punto del globo terrestre; numeri grandi a partire dal
googol; equivalenze aritmetiche; poligoni regolari e π (con commento); regola di Ruffini; divisione
di due polinomi; sistema lineare di due equazioni; equazione di II grado con radici reali e
complesse; serie geometriche convergenti; radici reali approssimate di un polinomio di grado
qualunque; equazione differenziale di qualunque ordine.
Introduzione.
Il Basic è stato per lungo tempo il linguaggio più usato dagli aspiranti programmatori, che, in
virtù della sua notevole semplicità d’uso, se ne servivano facilmente per operare sui loro home
computer.
L’avvento del QBasic, grazie all’accresciuta espressività e all’aumentata ricchezza di costrutti
propri della nuova definizione del linguaggio Basic, ha permesso di ampliare notevolmente la rete
degli utenti che ne fanno uso, sia in ambiente professionale per applicazioni software, sia in
ambienti orientati alla formazione.
E’ possibile scaricare QBasic dalla rete1 ed iniziare subito a programmare, sia con l’ausilio della
Guida on line2, sia mediante l’apporto più completo di manuali cartacei come quello pubblicato nel
1991 da David I. SCHNEIDER e Peter NORTON ed ora anche in traduzione italiana3, o quello
pubblicato nel 1992 da R. ARNSON, Ch. GEMMELL, H. HENDERSON per la McGraw-Hill Libri
Italia srl nella traduzione in italiano di Laura Saggini con il titolo MS-DOS QBasic.Guida del
programmatore (pp.VIII-593, ISBN 88-386-0257-3).
Navigando on line è possibile incontrare siti in italiano che suggeriscono facili utilizzazioni di
QBasic4.
1
Per esempio da http://www.qbasic.com/
http://studio.lacab.roma.it/install/qbasic/
http://web.tiscali.it/paranco/page4.html
http://digilander.iol.it/ebram/download.htm etc.
2
Piccoli accorgimenti sono necessari nell’uso della tastiera per le combinazioni diverse delle funzioni dei tasti per
Windows ME.
3
Programmare in QBasic, JacksonLibri ed., pp.392, ISBN 8825604440. Molto utile è anche il più maneggevole (pp.
94) Programmare in QBasic. Teoria ed esercizi svolti, a cura di A. MACII-E. MACII-R. SCARSI, volume adottato
presso il Politecnico di Torino come guida per le prove d’esame di programmazione dei vari corsi di Fondamenti di
Informatica. Si veda anche STEPHEN TORY TOUPIN, E’ facile QBASIC, Jackson Libri ed., pp. 192, ISBN
8825608179.
4
Ved. ad esempio http://digilander.iol.it/ebram/download.htm
http.//digilander.iol.it/vpisani/forum-scuola/qbasic/intro3-dove.html
http://utenti.tripod.it/LDM/basic.htm . Ved. inoltre
http://calvino.polito.it/∼pier/qbasic/siti.html .
Già da tempo, infatti, si è diffusa anche in Italia la ‘Didamatica’5, didattica dell’Informatica e
Matematica, cioè quel complesso di procedure, di artifici e di programmi che consentono un
apprendimento nuovo della stesse discipline, attraverso la risoluzione di numerosi problemi.
Sul tema della Digidattica della Matematica fu già presentata dal sottoscritto una comunicazione nel
Convegno Nazionale (“Matematica o Matematica del Calcolatore”, 26-28 Aprile 1984, Cosenza –
Università della Calabria), organizzato dalla Sezione di Cosenza, presieduta dal compianto Prof.
Vito Costantini, che sollecitò la stesura di un articolo per la pubblicazione degli Atti. Il sottoscritto,
suo malgrado, non ne fece mai pervenire il testo scritto, per cui il contenuto è rimasto inedito.
La comunicazione originaria fu condotta sul TI 99/4A Home Computer della TEXAS
INSTRUMENTS, tuttora funzionante a conferma della bontà tecnologica degli stessi prodotti.
Ora di quei listati (allora presentati in TIBASIC) si ripropongono alcuni, adattabili alle
calcolatrici TI89, TI92Plus e ad ogni computer, perché, per questi ultimi, i listati sono redatti in
QBasic; se ne propongono anche altri, nuovi e non meno interessanti, fra i quali il n. 9, cioè il
secondo sulle serie armoniche convergenti, col quale listato è possibile trovare un numero illimitato
di serie, i cui valori di convergenza sono verificabili con l’ultimo listato, il n.13, sul valore
dell’integrale definito da zero ad uno della funzione: F(X)=X^(1/A1-1)/(1+X^(1/D)), nella quale
A1, D sono rispettivamente il primo termine e la ragione della relativa progressione armonica, da
cui scaturiscono i termini della omonima serie a segni alternati. Detta verifica è possibile anche per
i valori di ln2 e 1/4pigreca del n. 8, sostituendo nella F(X), al posto di A1 e D, rispettivamente 1, 1 e
1, 1/2.
Lo stesso discorso di adattabilità vale anche per i listati della seconda parte.
Tutti i programmi riportano nei listati il titolo dell’argomento ed alcuni anche un breve
commento che, con l’input ed output relativi ai vari esempi, ne agevolano la comprensione.
Prima parte
1. Programma Numeri perfetti
CLS: DEFDBL P
PRINT "NUMERI PERFETTI (somma di tutti i loro divisori, escluso il n.ro stesso)"
PRINT "CON LA FORMULA DI EUCLIDE :"
PRINT "2^(N-1)*(2^N-1),"
PRINT "con N e (2^N-1) che siano NUMERI PRIMI."
PRINT "Attualmente non si sa se il loro insieme sia finito o meno."
DIM N(7)
FOR I = 1 TO 7
READ N(I)
A = 2 ^ (N(I) - 1)
B = 2 * A - 1
P = A * B
PRINT A; "*"; B; "="; P
NEXT I
DATA 2,3,5,7,13,17,19
PRINT
PRINT "Ad esempio,i primi tre NUMERI PERFETTI sono riportati con le somme dei"
PRINT "loro divisori 6=1+2+3; 28=1+2+4+7+14; 496=1+2+4+8+16+31+62+124+248."
END
1.1. L’output risulta:
5
Consultare i siti www.adt.it (dell’Associazione per la Didattica con le Tecnologie), www.AICANET.it
(dell’Associazione Italiana per l’Informatica del Calcolo Automatico).
NUMERI PERFETTI (somma di tutti i loro divisori, escluso il n.ro stesso)
CON LA FORMULA DI EUCLIDE :
2^(N-1)*(2^N-1),
con N e (2^N-1) che siano NUMERI PRIMI.
Attualmente non si sa se il loro insieme sia finito o meno.
2*3=6
4 * 7 = 28
16 * 31 = 496
64 * 127 = 8128
4096 * 8191 = 33550336
65536 * 131071 = 8589869056
262144 * 524287 = 137438691328
Ad esempio,i primi tre NUMERI PERFETTI sono riportati con le somme dei
loro divisori 6=1+2+3; 28=1+2+4+7+14; 496=1+2+4+8+16+31+62+124+248.
2. Numeri binari
10 CLS: PRINT "TRASFORMA I NUMERI A BASE 10 IN BINARI (DIGITA 1) E VICEVERSA(2)”
INPUT W
IF W = 2 THEN 100
INPUT "DIGITA IL NUMERO DECIMALE
"; N
PRINT
PRINT ; N; "IN BINARIO E'=
"; ;
FOR I = 15 TO 0 STEP -1
B = INT(N / 2 ^ I)
N = N - B * 2 ^ I
A$ = STR$(B)
PRINT A$;
NEXT I
PRINT
GOTO 10
100 INPUT "DIGITA IL NUMERO BINARIO "; C$
IF C$ = "F" THEN 300
N = 1
D = 0
FOR J = 1 TO LEN(C$)
B$ = MID$(C$, LEN(C$) - J + 1, 1)
IF B$ = "0" THEN 200
D = D + N
200 N = N * 2
NEXT J
PRINT ; C$; " IN DECIMALE E'= "; D: :
300 END
2.1. Esempi
TRASFORMA I NUMERI A BASE 10 IN BINARI (DIGITA 1) E VICEVERSA (2)
?1
DIGITA IL NUMERO DECIMALE ? 153
153 IN BINARIO E'=
0000000010011001
TRASFORMA I NUMERI A BASE 10 IN BINARI (DIGITA 1) E VICEVERSA (2)
?2
DIGITA IL NUMERO BINARIO ? 101001
101001 IN DECIMALE E'= 41
3. Terne pitagoriche con metodi Pitagora e Platone
CLS : PRINT " LE TERNE PITAGORICHE DETERMINATE ALTERNATAMENTE"
PRINT "CON I METODI DI PITAGORA E DI PLATONE"
INPUT "DIGITA L'INTERV. DI VARIAZ.,DA DISPARI A PARI,DEL CATETO X
PRINT
FOR X = A TO B
Y = (X ^ 2 - 1) / 2
IF Y = INT(Y) THEN 10 ELSE 40
10 Z = (X ^ 2 + 1) / 2
PRINT "CON M.PITAGORA"; Z; ";"; X; ";"; Y
X = X + 1
Y = (X / 2) ^ 2 - 1
IF Y = INT(Y) THEN 30 ELSE 40
30 Z = (X / 2) ^ 2 + 1
PRINT "CON M.PLATONE"; Z; ";"; X; ";"; Y
X = X - 1
40 NEXT X
PRINT
END
"; A, B
3.1. Esempi
LE TERNE PITAGORICHE DETERMINATE ALTERNATAMENTE
CON I METODI DI PITAGORA E DI PLATONE
DIGITA L'INTERV. DI VARIAZ.,DA DISPARI A PARI,DEL CATETO X ? 3,12
CON M.PITAGORA 5 ; 3 ; 4
CON M.PLATONE 5 ; 4 ; 3
CON M.PITAGORA 13 ; 5 ; 12
CON M.PLATONE 10 ; 6 ; 8
CON M.PITAGORA 25 ; 7 ; 24
CON M.PLATONE 17 ; 8 ; 15
CON M.PITAGORA 41 ; 9 ; 40
CON M.PLATONE 26 ; 10 ; 24
CON M.PITAGORA 61 ; 11 ; 60
CON M.PLATONE 37 ; 12 ; 35
4. Terne pitagoriche con metodi Euclide e Diofanto
CLS : PRINT "LE TERNE PITAGORICHE CON I METODI DI EUCLIDE E DIOFANTO,”
PRINT ”PER I QUALI I VALORI RELATIVI AI CATETI E ALL'IPOTENUSA DIPENDONO DAL”
PRINT ”PARAMETRO POSITIVO B, COME SI NOTA NEL LISTATO."
INPUT "DIGITA L'INTERV. DI VARIAZ. DEL PARAMETRO B "; G, H
PRINT
FOR B = G TO H
FOR C = 1 TO B - 1
X = B * C
Y = (B ^ 2 - C ^ 2) / 2
IF Y = INT(Y) THEN 10 ELSE 20
10 Z = (B ^ 2 + C ^ 2) / 2
PRINT "CON M.EUCLIDE", Z; ";"; X; ";"; Y
20 U = 2 * B * C
V = B ^ 2 - C ^ 2
W = B ^ 2 + C ^ 2
PRINT "CON M.DIOFANTO"; W; ";"; U; ";"; V
NEXT C
NEXT B
END
4.1. Esempi
LE TERNE PITAGORICHE CON I METODI DI EUCLIDE E DIOFANTO,
PER I QUALI I VALORI RELATIVI AI CATETI E ALL'IPOTENUSA DIPENDONO DAL
PARAMETRO POSITIVO B, COME SI NOTA NEL LISTATO.
DIGITA L'INTERV. DI VARIAZ. DEL PARAMETRO B ? 3,5
CON M.EUCLIDE 5 ; 3 ; 4
CON M.DIOFANTO 10 ; 6 ; 8
CON M.DIOFANTO 13 ; 12 ; 5
CON M.DIOFANTO 17 ; 8 ; 15
CON M.EUCLIDE 10 ; 8 ; 6
CON M.DIOFANTO 20 ; 16 ; 12
CON M.DIOFANTO 25 ; 24 ; 7
CON M.EUCLIDE 13 ; 5 ; 12
CON M.DIOFANTO 26 ; 10 ; 24
CON M.DIOFANTO 29 ; 20 ; 21
CON M.EUCLIDE 17 ; 15 ; 8
CON M.DIOFANTO 34 ; 30 ; 16
CON M.DIOFANTO 41 ; 40 ; 9
5. Numeri primi
CLS : PRINT "Questo programma
PRINT
INPUT "DIGITA M,N "; M, N
IF M = 1 THEN 200
GOTO 230
200 PRINT
PRINT " I NUMERI PRIMI DA ";
PRINT 2
GOTO 250
230 PRINT " I NUMERI PRIMI DA
PRINT
250 FOR F = M TO N STEP 2
FOR J = 3 TO (F - 1) / 2 STEP
Q = F / J
Q1 = INT(Q)
IF Q = Q1 THEN 330
NEXT J: IF F = 1 THEN 330
PRINT "
"; F; ;
330 NEXT F
END
produce numeri primi da M(dispari) ad N."
M; "A"; N; "SONO:
"
"; M; "A"; N; "SONO:
2
5.1. Esempi
Questo programma produce numeri primi da M(dispari) ad N.
DIGITA M,N ? 5,24
I NUMERI PRIMI DA 5 A 24 SONO:
"
5
7
11
13
17
19
23
6) Massimo comune divisore e minimo comune multiplo
CLS : PRINT "Calcolo del MCD e del mcm di due numeri A, B"
10 INPUT "DIGITA A, B
"; A, B
20 PRINT "M.C.D.("; A; ";"; B; "),"
30 PRINT "m.c.m.("; A; ";"; B; ") rispettivamente ="
IF A > B THEN 180
C = A: A = B: B = C
180 P = A * B
190 Q = A / B
R = A - B * INT(Q)
IF R = 0 THEN 250
A = B: B = R: GOTO 190
250 PRINT B
260 PRINT P / B
END
6.1. Esempio
Calcolo del MCD e del mcm di due numeri A, B
DIGITA A, B ? 75,475
M.C.D.( 75 ; 475 ),
m.c.m.( 75 ; 475 ) rispettivamente =
25
1425
7. Serie armoniche divergenti
CLS : PRINT "SERIE ARMONICHE DIVERGENTI(QUELLE IL CUI TERMINE GENERALE"
PRINT "SIA UN INFINITESIMO), PRODOTTE DALLE RELATIVE PROGRESSIONI."
PRINT "DUE ESEMPI DI CONVERGENZA APPARENTE A1=4,D=3;A1=1,D=1 E PER ENTRAMBI"
PRINT "U=100 e POI U=10000 O PIU'."
INPUT "DIGITA A1(PRIMO TERMINE), D(RAGIONE),U(INDICE ULT. TERM.) "; A1, D, U
PRINT
PRINT "TERMINI DELLA SUCCESSIONE DA ", "SOMME PARZIALI DELLA SERIE DIVERGENTE"
PRINT "CUI PROVIENE LA SERIE", "
O RIDOTTE"
B = A1: PRINT B, , , A1
FOR I = 2 TO U
A = D * A1 / (D + (I - 1) * A1)
B = B + A
PRINT A, , , B
NEXT I
END
7.1. Esempio
SERIE ARMONICHE DIVERGENTI(QUELLE IL CUI TERMINE GENERALE
SIA UN INFINITESIMO), PRODOTTE DALLE RELATIVE PROGRESSIONI.
DUE ESEMPI DI CONVERGENZA APPARENTE A1=4,D=3;A1=1,D=1 E PER ENTRAMBI
U=100 e POI U=10000 O PIU'.
DIGITA A1(PRIMO TERMINE), D(RAGIONE),U(INDICE ULT. TERM.) ? 4,3,100
………………
3.858521E-02
16.33733
3.809524E-02
3.761755E-02
.0371517
3.669725E-02
3.625378E-02
3.582089E-02
3.539823E-02
3.498542E-02
3.458213E-02
3.418804E-02
3.380282E-02
3.342618E-02
3.305785E-02
3.269755E-02
3.234501E-02
.032
3.166227E-02
3.133159E-02
3.100775E-02
3.069054E-02
3.037975E-02
3.007519E-02
16.37543
16.41304
16.4502
16.48689
16.52315
16.55897
16.59436
16.62935
16.66393
16.69812
16.73192
16.76535
16.7984
16.8311
16.86345
16.89545
16.92711
16.95844
16.98945
17.02014
17.05052
17.0806
8. Serie armoniche convergenti: due casi notevoli
CLS
PRINT "SERIE ARMONICHE CONVERGENTI A: ln(2)=.6931471...;1/4PIGRECA=.7853981...
PRINT "PROVENIENTI DA SUCCESSIONI CON TERMINI A SEGNI ALTERNATI: PER OTTENERE"
PRINT "ANCHE LA SECONDA TOGLIERE L'ISTRUZIONE 100 END."
INPUT "DIGITA N(N.RO TERMINI) "; N
PRINT
PRINT "TERMINI DELLA SUCCESSIONE", "SOMMA TERMINI SERIE CHE PER N ALL'INFINITO
PRINT "DI PROVENIENZA DELLA SERIE", "E'IL LIMITE <SOMMA> DELLA SERIE"
N = N - 1
B = 1: PRINT B, , 1
FOR I = 1 TO N
A = (-1) ^ I / (I + 1)
B = B + A
PRINT A, , B
NEXT I: PRINT
100 END
PRINT "TERMINI SERIE CONVERGENTE", "SOMMA TERMINI SERIE CHE PER N ALL'INFINITO
PRINT "
", "E'IL LIMITE <SOMMA> DELLA SERIE"
D = 1: PRINT D, , 1
FOR L = 1 TO N
C = (-1) ^ L / (2 * L + 1)
D = D + C
PRINT C, , D
NEXT L
END
8.1. Esempi
SERIE ARMONICHE CONVERGENTI A: ln(2)=.6931471...;1/4PIGRECA=.7853981...
PROVENIENTI DA SUCCESSIONI CON TERMINI A SEGNI ALTERNATI: PER OTTENERE
ANCHE LA SECONDA TOGLIERE L'ISTRUZIONE 100 END.
DIGITA N(N.RO TERMINI) ? 6
TERMINI DELLA SUCCESSIONE
DI PROVENIENZA DELLA SERIE
1
-.5
.3333333
-.25
.2
-.1666667
SOMMA TERMINI SERIE CHE PER N ALL'INFINITO
E'IL LIMITE <SOMMA> DELLA SERIE
1
.5
.8333334
.5833334
.7833334
.6166667
TERMINI SERIE CONVERGENTE
SOMMA TERMINI SERIE CHE PER N ALL'INFINITO
E'IL LIMITE <SOMMA> DELLA SERIE
1
.6666666
.8666666
.7238095
.8349206
.7440115
1
-.3333333
.2
-.1428571
.1111111
-9.090909E-02
9. Serie armoniche convergenti: illimitati casi
CLS : PRINT "SERIE ARMONICHE CONVERGENTI(QUELLE IL CUI TERMINE GENERALE"
PRINT "SIA UN INFINITESIMO),PRODOTTE DALLE RELATIVE PROGRESSIONI,"
PRINT "I CUI TERMINI SI SUCCEDONO A SEGNI ALTERNATI. PER TALI CONVERGENZE "
PRINT "POSSONO OTTENERSI RISCONTRI CON IL LISTATO RELATIVO ALL'INTEGRALE "
PRINT "DEFINITO DA 0 AD 1 DELLA F(X)=X^(1/A1-1)/(1+X^(1/D)), CON A1,D DA"
PRINT "USARE NEL PRESENTE LISTATO."
INPUT "DIGITA A1(PRIMO TERMINE), D(RAGIONE),U(INDICE ULT. TERM.) "; A1, D, U
PRINT
PRINT "TERMINI DELLA SUCCESSIONE ", "SOMME PARZIALI DELLA SERIE CONVERGENTE"
PRINT "DA CUI PROVIENE LA SERIE", "CHE PER U ALL'INFINITO E'<SOMMA> DELLA SERI
B = A1: PRINT B, , , A1
FOR I=2 TO U
A = (-1) ^ (I - 1) * D * A1 / (D + (I - 1) * A1)
B = B + A
PRINT A, , , B
NEXT I
END
9.1. Esempio
SERIE ARMONICHE CONVERGENTI(QUELLE IL CUI TERMINE GENERALE
SIA UN INFINITESIMO),PRODOTTE DALLE RELATIVE PROGRESSIONI,
I CUI TERMINI SI SUCCEDONO A SEGNI ALTERNATI. PER TALI CONVERGENZE
POSSONO OTTENERSI RISCONTRI CON IL LISTATO RELATIVO ALL'INTEGRALE
DEFINITO DA 0 AD 1 DELLA F(X)=X^(1/A1-1)/(1+X^(1/D)), CON A1,D DA
USARE NEL PRESENTE LISTATO.
DIGITA A1(PRIMO TERMINE), D(RAGIONE),U(INDICE ULT. TERM.) ? .5,2,13
TERMINI DELLA SUCCESSIONE
DA CUI PROVIENE LA SERIE
.5
SOMME PARZIALI DELLA SERIE CONVERGENTE
CHE PER U ALL'INFINITO E'<SOMMA> DELLA SERIE
.5
-.4
9.999999E-02
.3333333
.4333333
-.2857143
.147619
.25
.397619
-.2222222
.1753968
.2
.3753968
-.1818182
.1935786
.1666667
.3602453
-.1538462
.2063991
.1428571
.3492563
-.1333333
.2159229
.125
.340923
Nella seconda colonna, dalle somme 12.esima e 13.esima è gia evidente la convergenza che si
avrà per infinite somme e che può riscontrarsi nell’esempio del programma 13).
10. Teorema di Fermat
CLS : PRINT "TEOREMA O CONGETTURA DI FERMAT,DIMOSTRATA DA ANDREW WILES,"
PRINT "NEL 1995, DOPO CIRCA 350 ANNI!"
PRINT "X^N+Y^N=Z^N IMPOSSIBILE,PER VALORI INTERI POSITIVI E PER N>2"
PRINT "L'ESECUZIONE HA UN SOLO STOP PER N=2, E RIPRENDE RENDENDO"
PRINT "ININFLUENTE L'ISTRUZIONE 250 CON UN REM"
INPUT "DIGITA IL MASSIMO VALORE DELLA X PER UN ULTERIORE STOP "; S: PRINT
H = 6
110 N = 2
130 X = 3
Y = 3
150 Z = H - (X + Y + N)
IF Z > Y THEN 220
IF Z > X THEN 310
N = N + 1
IF N <= H - 4 THEN 130
H = H + 1
GOTO 110
220 F = X ^ N + Y ^ N
G = Z ^ N
PRINT "N="; N; "X="; X; "Y="; Y; "Z="; Z,
IF F = G THEN 230
PRINT "NO"
IF X >= S THEN 340
GOTO 290
230 PRINT "SI"
250 REM GOTO 340
290 Y = Y + 1
GOTO 150
310 X = X + 1
Y = X
GOTO 150
340 END
10.1. Esempio
TEOREMA O CONGETTURA DI FERMAT,DIMOSTRATA DA ANDREW WILES,
NEL 1995, DOPO CIRCA 350 ANNI!
X^N+Y^N=Z^N IMPOSSIBILE,PER VALORI INTERI POSITIVI E PER N>2
L'ESECUZIONE HA UN SOLO STOP PER N=2, E RIPRENDE RENDENDO
ININFLUENTE L'ISTRUZIONE 250 CON UN REM
DIGITA IL MASSIMO VALORE DELLA X PER UN ULTERIORE STOP ? 4
N= 2 X= 3 Y= 3 Z= 4
N= 2 X= 3 Y= 3 Z= 5
N= 3 X= 3 Y= 3 Z= 4
N= 2 X= 3 Y= 3 Z= 6
N= 2 X= 3 Y= 4 Z= 5
N= 3 X= 3 Y= 3 Z= 5
N= 4 X= 3 Y= 3 Z= 4
N= 2 X= 3 Y= 3 Z= 7
N= 2 X= 3 Y= 4 Z= 6
N= 2 X= 4 Y= 4 Z= 5
NO
NO
NO
NO
SI
NO
NO
NO
NO
NO
11. Equazione indeterminata
CLS : PRINT "RISOLVE IN Z(RELATIVI) L'EQUAZIONE INDETERMINATA"
PRINT "A*X+B*Y+C*X*Y=D E CON C=0 QUELLA DI PRIMO GRADO"
20 INPUT "DIGITA A, B, C, D "; A, B, C, D
30 FOR Y = -20 TO 20
40 X = INT((D - B * Y) / (A + C * Y))
50 E = A * X + B * Y + C * X * Y
60 IF E <> D THEN 100
PRINT
80 PRINT "X="; X; ";Y="; Y
90 PRINT "VERIFICA: D= "; D; "="; A; "*"; X; "+"; B; "*"; Y; "+"; C; "*"; X;
PRINT "*"; Y; "="; E
FOR Z = 1 TO 100000
NEXT Z
100 NEXT Y
END
11.1. Esempio
RISOLVE IN Z(RELATIVI) L'EQUAZIONE INDETERMINATA
A*X+B*Y+C*X*Y=D E CON C=0 QUELLA DI PRIMO GRADO
DIGITA A, B, C, D ? 3,-2,2,4
X= 0 ;Y=-2
VERIFICA: D= 4 = 3 * 0 +-2 *-2 + 2 * 0 *-2 = 4
X= 2 ;Y=-1
VERIFICA: D= 4 = 3 * 2 +-2 *-1 + 2 * 2 *-1 = 4
12. Equazione indeterminata di II grado
CLS : PRINT "RISOLVE IN Z(RELATIVI) L'EQUAZIONE INDETERMINATA"
PRINT "COMPLETA A*X^2+B*X*Y+C*Y^2+D*X+E*Y+F=0"
INPUT "DIGITA A,B,C,D,E,F POI L'INTERV. DI VARIAZ. DELLA Y "; A, B, C, D, E,
F,G,H
PRINT
FOR Y = G TO H
J = B * Y + D
K = C * Y ^ 2 + E * Y + F
DI = J ^ 2 - 4 * A * K
IF DI < 0 THEN 100
X1 = INT((-J + SQR(DI)) / (2 * A))
R = A * X1 ^ 2 + B * X1 * Y + C * Y ^ 2 + D * X1 + E * Y
IF R <> -F THEN 100
PRINT "X1="; X1; "; Y="; Y
PRINT "VERIFICA: R= "; -F; "="; R
X2 = INT((-J - SQR(DI)) / (2 * A))
S = A * X2 ^ 2 + B * X2 * Y + C * Y ^ 2 + D * X2 + E * Y
IF S <> -F THEN 100
PRINT "X2="; X2; "; Y="; Y
PRINT "VERIFICA: S= "; -F; "="; S
100 NEXT Y
END
12.1. Esempio
RISOLVE IN Z(RELATIVI) L'EQUAZIONE INDETERMINATA
COMPLETA A*X^2+B*X*Y+C*Y^2+D*X+E*Y+F=0
DIGITA A,B,C,D,E,F POI L'INTERV. DI VARIAZ. DELLA Y ? -1,2,-3,4,-5,6,-5,5
X1=-2 ; Y=-2
VERIFICA: R=
X2= 2 ; Y=-2
VERIFICA: S=
X1=-2 ; Y=-1
VERIFICA: R=
X2= 4 ; Y=-1
VERIFICA: S=
X1= 4 ; Y= 2
VERIFICA: R=
X2= 4 ; Y= 2
VERIFICA: S=
-6 =-6
-6 =-6
-6 =-6
-6 =-6
-6 =-6
-6 =-6
13. Valore integrale definito
CLS : PRINT "Valore dell'integrale definito da A a B di F(X),DA DEFINIRE "
PRINT "NELL'ISTRUZIONE 100"
100 DEF FNF (X) = X ^ (1 / .5 - 1) / (1 + X ^ (1 / 2))
INPUT "DIGITA A,B,S (n.ro sottointervalli) "; A, B, S
VI = 0
L = (B - A) / (2 * S)
S1 = 2 * S - 1
S2 = S1 - 1
TU = 0
FOR J = 1 TO S1 STEP 2
X = A + (J * L)
TU = TU + FNF(X)
NEXT J
VI = TU * 4
TU = 0
FOR J = 2 TO S2 STEP 2
X = A + (J * L)
TU = TU + FNF(X)
NEXT J
VI = TU * 4
TU = 0
FOR J = 2 TO S2 STEP 2
X = A + (J * L)
TU = TU + FNF(X)
NEXT J
VI = VI + 2 * TU + FNF(A) + FNF(B)
VI = VI * L / 3
PRINT "VALORE INTEGRALE ="; VI
END
13.1. Esempio
Valore dell'integrale definito da A a B di F(X),DA DEFINIRE
NELL'ISTRUZIONE 100
DIGITA A,B,S (n.ro sottointervalli) ? 0,1,30
VALORE INTEGRALE = .2803718
Il valore ottenuto è il limite di convergenza della serie armonica a segni alternati (il cui primo
termine e la ragione sono rispettivamente 1/2 e 2) già esemplificata nel programma 9).
Il presente lavoro, relativo alla prima parte, è stato pubblicato nel 2002 sugli Atti e su CD a cura
dell’ADT (Associazione per la Didattica con le Tecnologie), essendo stato presentato nel 3°
Congresso Nazionale “Matematica e Scienze sperimentali nel terzo millennio” svoltosi a Cattolica
(RN) dal 5 al 7 ottobre 2001.
Seconda parte
1. Programma “Salute”
CLS :INPUT "VUOI CONOSCERE SETTE REGOLE D'ORO PER VIVERE SANO? SE SI DIGITA 1";S
IF S <> 1 THEN 30: PRINT
PRINT "1 - NON FUMARE;"
PRINT "2 - BEVI ALCOLICI CON MOLTA MODERAZIONE;"
PRINT "3 - SVOLGI UN'ATTIVITA' FISICA IN MANIERA REGOLARE;"
PRINT "4 - MANTIENI IL PESO CORPOREO COSTANTE;"
PRINT "5 - DORMI DA SETTE A OTTO ORE PER NOTTE;"
PRINT "6 - NON SALTARE MAI LA PRIMA COLAZIONE;"
PRINT "7 - NON MANGIUCCHIARE TRA UN PASTO E L'ALTRO!"
30 INPUT "VUOI MEGLIO APPROFONDIRE CON ALTRI CONSIGLI L'ARGOMENTO DI CUI SOPRA?
SE SI DIGITA 2"; T
IF T = 2 THEN 40 ELSE INPUT T: PRINT
40 PRINT "SVOLGI ALL'ARIA APERTA IL MASSIMO DELL'ATTIVITA';"
PRINT "SGOMBERA LA MENTE DAI PENSIERI DURANTE L'ATTIVITA'FISICA;"
PRINT "NON TUTTE LE SITUAZIONI CHE STRESSANO SONO INEVITABILI;"
PRINT "MANTIENI IL PESO FORMA;"
PRINT "COLTIVA L'OTTIMISMO E NON LASCIARTI ABBATTERE DALLE DIFFICOLTA';"
PRINT "RISPETTA IL TUO FISICO ED ADOPERATI PER MANTENERLO SEMPRE IN EFFICIENZA;"
PRINT "NON FUMARE E NON ECCEDERE IN CONSUMO DI ALCOLICI;"
PRINT " DISTRAITI CON I TUOI HOBBY;"
PRINT "DORMI DALLE SETTE ALLE NOVE ORE OGNI GIORNO;"
PRINT "DOPO I QUARANTA ANNI SOTTOPONITI A PERIODICI CHECK-UP;"
PRINT "LA TUA DIETA SIA LA MEDITERRANEA CON OLIO D'OLIVA, POMODORI, TE' VERDE E
DOSI MODERATE DI VINO ROSSO;"
PRINT "NON FARE A MENO DI PREPARATI FARMACEUTICI A BASE DI ESTRATTI DI FEGATO"
PRINT "DI FETI DI AGNELLINI DI 14 GG. PRIMA DELLA NASCITA."
50 INPUT "VUOI INFORMARTI SU COSA FARE SUBITO SE HAI TROPPO COLESTEROLO NEL
SANGUE? SE SI DIGITA 3"; U
IF U <> 3 THEN 50: PRINT
PRINT "INTERESSANTI RISULTATI DI UNA INDAGINE CONDOTTA NEGLI STATI UNITI"
PRINT "SULLA PREVENZIONE DELLE MALATTIE CARDIACHE DICONO CHE IL CONSUMO DI"
PRINT "FAGIOLI COTTI (COMPRESI QUELLI IN SCATOLA) RIDUCE IL TASSO DI COLESTEROLO
NEL SANGUE."
PRINT "GLI ESPERIMENTI EFFETTUATI SU MIGLIAIA DI VOLONTARI, CHE PER VENTI GIORNI
HANNO MANGIATO"
PRINT " 100 GRAMMI DI FAGIOLI AL GIORNO CONFERMANO QUESTA TESI."
51 INPUT "VUOI CONOSCERE QUAL E' L'ELISIR DI LUNGA VITA? SE SI DIGITA 4"; V
IF V <> 4 THEN 100: PRINT
PRINT "L'ELISIR DI LUNGA VITA E' ADATTARSI ALLO STRESS"
PRINT "I MEDICI DICONO CHE CHI NON LO FA SI AMMALA."
PRINT "PER LA SALUTE REAGIRE TROPPO ALLE SOLLECITAZIONI E' DANNOSO."
PRINT "VA TENUTO BASSO IL LIVELLO DI INTERLEUCHINA, UNA SOSTANZA PRODOTTA PURE
DALL'ACCUMULO DI GRASSO."
PRINT "L'INTERLEUCHINA 10 (IL10), IL MANTENIMENTO DELLA VIA DI SEGNALAZIONE"
PRINT "DELL'INSULINA E IL DNA MITOCONDRIALE SONO NOSTRI ALLEATI IN QUESTA"
PRINT "BATTAGLIA TANT'E' CHE RECENTI STUDI CONDOTTI DALL'INRCA, SOTTOLINEA LO
SCIENZIATO FRANCESCHI,"
PRINT "HANNO DIMOSTRATO CHE I SOGGETTI CHE PRODUCONO ELEVATE QUANTITA' DI "
PRINT "INTERLEUCHINA6(IL6), SOSTANZA GENERATA DALLO STRESS, VIVONO DI MENO,"
PRINT "TANTO CHE NEI CENTENARI I VALORI SONO BASSISSIMI. PERCIO'IL CONTROLLO DEL
PESO"
PRINT "E L'ESERCIZIO FISICO SONO FONDAMENTALI PER VIVERE A LUNGO. ALTRO FATTORE"
PRINT "CHE REGOLA LA LONGEVITA' E' IL DNA MITOCONDRIALE CHE SI EREDITA DALLA
MADRE."
100 END
Input output “Salute”
Non si riporta, considerata l’estrema semplicità e leggibilità del listato.
2. Programma “Quanto vivrai?”
CLS : PRINT "Quanto vivrai?"
PRINT "Arriveremo o no ai 100 anni?"
PRINT "La componente fondamentale della durata media della nostra vita sta
nell'età raggiunta dai nostri parenti prossimi."
PRINT "Ma il modo di vivere può rovesciare completamente il risultato in senso +
oppure -."
PRINT : PRINT "Prova anche tu a rispondere alle 25 domande seguenti!"
PRINT : PRINT "***GUIDO CAROLLA***Prima stesura:gennaio 1985.La presente:luglio
2002."
PRINT : INPUT "DIGITA LA TUA ETA' ATTUALE. "; EA: PRINT EA
DIM E(85), S(85)
FOR J = 15 TO 85
READ E(J), S(J)
IF EA = J THEN 190
NEXT J
PRINT : PRINT : PRINT
190 PRINT "Sulla scorta delle medie concesse dalle più grandi Compagnie di
Assicurazioni del mondo ti dico che in base a"; E(J); "anni";
PRINT " la tua speranza di vita è"; S(J); "anni, se sei uomo e 3 anni di più se
sei donna."
INPUT "Perciò, digita 0 (zero) se sei uomo, 3 se sei donna. "; SP
DATA 15, 70.7
DATA 16, 70.8
DATA 17, 70.8
DATA 18, 70.9
DATA 19, 71
DATA 20, 71.1
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
DATA
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31,
32,
33,
34,
35,
36,
37,
38,
39,
40,
41,
42,
43,
44,
45,
46,
47,
48,
49,
50,
51,
52,
53,
54,
55,
56,
57,
58,
59,
60,
61,
62,
63,
64,
65,
66,
67,
68,
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
71.1
71.2
71.3
71.3
71.4
71.5
71.6
71.6
71.7
71.8
71.8
71.9
72
72
72.1
72.2
72.2
72.3
72.4
72.5
72.6
72.7
72.8
72.9
73
73.2
73.3
73.5
73.6
73.8
74
74.2
74.4
74.7
74.9
75.1
75.4
75.7
76
76.3
76.6
77
77.3
77.7
78
78.4
78.9
79.3
79.7
80.2
80.7
81.2
81.7
82.2
82.8
83.3
83.9
84.5
85.1
85.7
86.3
86.9
87.7
DATA 84, 88.5
DATA 85, 89.3
CLS : PRINT : PRINT : PRINT : PRINT
INPUT "1, per ogni nonno che sia vissuto più di 80 anni e .5 per ognuno che
abbia superato 70 e non 80 "; A
PRINT : INPUT "4, se tua madre ha vissuto più di 80 anni e 2 se tuo padre abbia
vissuto altrettanto "; B
PRINT : PRINT "-4, se tuo fratello, sorella, padre, madre, nonno, nonna è morto
di un attacco cardiaco, di apoplessia o"
INPUT "arteriosclerosi a meno di 50 anni. Sottrai comunque 2 se uno di essi è
morto a 50-60 anni. "; C
PRINT : PRINT "-3, per ciascun fratello, genitore, nonno che sia morto di
diabete prima dei 60 anni. -2, se ciascuno di"
INPUT "quelli è morto di cancro dello stomaco prima dei 60. -1, per altra
infermità causa di morte prima dei 60. "; D
PRINT : INPUT "-.5, per le donne senza figli. -1, per quelle che ne abbiano
avuto più di 7. "; X
PRINT : INPUT "1, se sei primogenito. "; F
INPUT "2, se il tuo coefficiente intellettuale è superiore alla media. "; G
INPUT "-12, se fumi 2 pacchetti al dì di sigarette; -7, se ne fumi più di 20; 2, se ne fumi sensibilmente meno di 20. "; H
PRINT : INPUT "2,se fai l'amore con regolarità 1-2 volte per settimana (le
avventure, no!). "; I
PRINT : INPUT "2, se ricevi un assegno soddisfacente almeno una volta l'anno. ";
L
PRINT : INPUT "-2, se è più di quanto dovrebbe. "; M
INPUT "-2, se dormi (o rimani a letto) 10 o più ore al giorno o meno di 5. "; N
PRINT "3, se bevi moderatamente (1 bicchierino o 1/4 litro di vino). 1 oppure
1.5 per"
INPUT "coloro che bevono saltuariamente. -8, per coloro che, invece, bevono ogni
giorno sensibilmente più di quanto sopra. "; O
PRINT : PRINT "3, per coloro che remano, vanno in bicicletta, fanno footing,
passeggiano, ballano (all'aria aperta) 3"
INPUT "volte alla settimana. "; P
PRINT : PRINT "1, per chi mangia frugalmente e smette prima di sentirsi sazio,
preferendo frutta, verdure e legumi a"
INPUT "carne e grassi. "; Q
PRINT : INPUT "-5, se ti ammali frequentemente (includendo catarro, influenza,
diarrea, emicrania, ecc.). "; R
PRINT : PRINT "3, se svolgi attività accademica di tipo superiore, come per
esempio professore universitario, ricercatore, ecc.."
INPUT "2, se il tuo lavoro esige solo titolo superiore (diploma); aggiungi solo
1 se invece esige meno. "; Y
PRINT : PRINT "1.5, se eserciti una professione libera; 1, se sei tecnico,
amministrativo, agricolo."
INPUT "-.5, per coloro che sono capataz; -4, se sei un operaio. "; T
PRINT : PRINT "-2, se sei un operaio e la tua attività richiede grande sforzo
fisico;"
INPUT "-2, se inoltre, il tuo lavoro ti costringe dietro un tavolo come
dimostratore. "; U
PRINT : CLS : PRINT "1, per gli sposati che attualmente vivono con il coniuge. 9, se invece vivono separati o divorziati"
PRINT "e da soli. -7, per chi è vedovo e vive da solo. Se il separato o il
vedovo vive con una compagna"
PRINT "deve sottrarre la metà rispettivamente di 9 e di 7. -4, per la donna che
è separata o divorziata e"
INPUT "vive sola; -3.5, per la vedova; -2, se convive con un compagno. "; V
PRINT : PRINT "-1.5, per le donne sole per ogni 10 anni di permanenza in tale
stato civile a partire dai 25 anni."
INPUT "La sottrazione deve essere fatta anche se la donna conviva con un
compagno. "; Z
PRINT : INPUT "-2, per ogni cambio di carriera o di casa o di coniuge. "; AA
PRINT : INPUT "1, se hai uno o due amici cui confidare tutto. "; AB
1460 NS = S(J) + SP + A + B + C + D + X + F + G + H + I + L + M +
+ R + Y + T + U + V + Z + AA + AB
CLS : PRINT : PRINT : PRINT : PRINT
PRINT "TU CAMPERAI FINO A"; NS; "ANNI...EPPURE LA NOSTRA MACCHINA
GARANTITA, DICONO GLI STUDIOSI"
PRINT ",PER 130 ANNI!!!"
PRINT "Comunque, auguri di buona salute!"
PRINT "Quanto sopra detto deve essere preso con la giusta ironia,
Si deve essere coscienti che non si può ipotecare il futuro senza
dell'Onnipotente."
N + O + P + Q
BIOLOGICA E'
ma non troppo.
l'aiuto
Input output “Quanto vivrai?”
Si soprassiede nel riportarne un esempio considerata la semplicità dell’algoritmo additivo delle risposte alle 25
domande riportato nell’istruzione 1460 il cui valore è NS.
3. Programma “Velocità tangenziale di rotazione sul globo terrestre”
CLS : PRINT "A QUALE VELOCITA' SI STA RUOTANDO?"
PRINT "CONSIDERATO CHE ALL'EQUATORE LA VELOCITA' E' Km/h 40.076,59491864414/24"
10 DEFDBL E: DEFDBL L: DEFDBL P: DEFDBL V: DEFDBL H
E = 40076.59491864414# / 24
INPUT "DIGITA LA LATITUDINE IN GRADI SESSAGESIMALI DELLA LOCALITA'"; G
IF G = 0 THEN PRINT "ALL'EQUATORE"
IF G = 42 THEN PRINT "A ROMA"
IF G = 90 THEN PRINT "AL POLO NORD"
IF G = 270 THEN PRINT " AL POLO SUD"
PRINT : P = ATN(1): L = G * P / 45: H = COS(L): V = H * E
IF V < 1.022912048803657D-13 THEN 20 ELSE 30
20 V = 0
30 PRINT "V=COS(LATITUDINE RADIANTI)*1669,858...=COS("; L; "...)*1669,858...=";
V; "Km/h";
PRINT "(VELOCITA' DI ROTAZIONE DELLA TERRA ALLA LATITUDINE "; G; ")"
PRINT : INPUT "VUOI CONTINUARE? S/N "; A$
IF A$ = "S" THEN 10
END
Input output “Velocità tangenziale di rotazione…”
A QUALE VELOCITA' SI STA RUOTANDO?
CONSIDERATO CHE ALL'EQUATORE LA VELOCITA' E' Km/h 40.076,59491864414/24
DIGITA LA LATITUDINE IN GRADI SESSAGESIMALI DELLA LOCALITA'? 90
AL POLO NORD
V=COS(LATITUDINE RADIANTI)*1669,858...=COS( 1.570796326794897 ...)*1669,858...=
0 Km/h(VELOCITA' DI ROTAZIONE DELLA TERRA ALLA LATITUDINE 90 )
VUOI CONTINUARE? S/N ? S
DIGITA LA LATITUDINE IN GRADI SESSAGESIMALI DELLA LOCALITA'? 42
A ROMA
V=COS(LATITUDINE RADIANTI)*1669,858...=COS( .7330382858376184 ...)*1669,858...=
1240.946422356001 Km/h(VELOCITA' DI ROTAZIONE DELLA TERRA ALLA LATITUDINE 42 )
VUOI CONTINUARE? S/N ? S
DIGITA LA LATITUDINE IN GRADI SESSAGESIMALI DELLA LOCALITA'? 0
ALL'EQUATORE
V=COS(LATITUDINE RADIANTI)*1669,858...=COS( 0 ...)*1669,858...=
1669.858121610173 Km/h(VELOCITA' DI ROTAZIONE DELLA TERRA ALLA LATITUDINE 0 )
VUOI CONTINUARE? S/N ? N
4. Programma “Grandi numeri a partire da googol”
CLS : INPUT "DOPO UN MILIONE,MILIARDO ECC.,VUOI SAPERE QUAL E'IL NUMERO
PIU'GRANDE A CUI E' STATO DATO UN NOME? S/N "; G$
IF G$ = "S" THEN 10 ELSE 100
10 PRINT "Il Googol è pari a 10^100=(1 seguito da 100 zeri).Esso fu coniato dal
nipotino di nove anni del matematico Ewdard Kasner."
INPUT "VUOI SAPERNE UNO PIU' GRANDE? S/N "; H$
IF H$ = "S" THEN 20 ELSE 100
20 PRINT "Il Googolplex o googolplesso(anch'esso suggerito dal nipotino di
Kasner,che lo descrisse come 1 seguito da tanti zeri"
PRINT "quanti se ne possono scrivere prima che la mano si stanchi...)la cui
definizionematematica di un googolplesso è"
PRINT "pari a 10^(1 Googol)=(1 seguito da un Googol di zeri,ovvero 1 seguito da
tanti zeri pari al n.ro 1 seguito da 100 zeri)."
INPUT "VUOI AVERE ALTRE NOTIZIE SUI GRANDI NUMERI? S/N "; L$
IF L$ = "S" THEN 25 ELSE 100
25 PRINT "1. Se l'intero universo fosse pieno di protoni ed elettroni in modo
che non
rimanesse nessuno spazio vuoto,il numero totale di particelle
sarebbe 10^110.
Questo n.ro è maggiore di un googol"
PRINT "ma molto minore di un googolplesso."
PRINT "2. Il n.ro di granelli di sabbia sulla spiaggia di Coney Island è
all'incirca
10^20."
PRINT "3. Il n.ro di parole stampate a partire dalla Bibbia di Gutenberg(1456)
fino al 1940 è all'incirca 10^16."
INPUT "VUOI SAPERNE ANCORA UNO PIU' GRANDE? S/N "; I$
IF I$ = "S" THEN 30 ELSE 100
30 PRINT "IL NUMERO DI GRAHAMAN.Per darne un'idea,partendo da 3^3=27,"
PRINT "3^^3=3^27=7.625.597.484.987,"
PRINT "3^^^3=3^(7.625...),così procedendo si costruisce detto numero di
Grahaman,"
PRINT "cioè da 3^^^^3=(impossibile sciverlo qui per esteso),si va avanti con il"
PRINT "sistema adottato prima,ripetendolo 63 volte. "
PRINT "E' stato calcolato che per scrivere il n.ro di Grahaman per esteso non"
PRINT "basterebbe tutta la materia dell'universo trasformata in inchiostro!!!"
100 END
Input output “Grandi numeri a partire da googol”
DOPO UN MILIONE,MILIARDO ECC.,VUOI SAPERE QUAL E'IL NUMERO PIU'GRANDE A CUI E'
STATO DATO UN NOME? S/N ? S
Il Googol è pari a 10^100=(1 seguito da 100 zeri).Esso fu coniato dal nipotino
di nove anni del matematico Ewdard Kasner.
VUOI SAPERNE UNO PIU' GRANDE? S/N ? S
Il Googolplex o googolplesso(anch'esso suggerito dal nipotino di Kasner,che lo
descrisse come 1 seguito da tanti zeri
quanti se ne possono scrivere prima che la mano si stanchi...)la cui definizione
matematica di un googolplesso è
pari a 10^(1 Googol)=(1 seguito da un Googol di zeri,ovvero 1 seguito da tanti
zeri pari al n.ro 1 seguito da 100 zeri).
VUOI AVERE ALTRE NOTIZIE SUI GRANDI NUMERI? S/N ? S
1. Se l'intero universo fosse pieno di protoni ed elettroni in modo che non
rimanesse nessuno spazio vuoto,il numero totale di particelle sarebbe 10^110.
Questo n.ro è maggiore di un googol
ma molto minore di un googolplesso.
2. Il n.ro di granelli di sabbia sulla spiaggia di Coney Island è all'incirca
10^20.
3. Il n.ro di parole stampate a partire dalla Bibbia di Gutenberg(1456) fino al
1940 è all'incirca 10^16.
VUOI SAPERNE ANCORA UNO PIU' GRANDE? S/N ? S
IL NUMERO DI GRAHAMAN.Per darne un'idea,partendo da 3^3=27,
3^^3=3^27=7.625.597.484.987,
3^^^3=3^(7.625...),così procedendo si costruisce detto numero di Grahaman,
cioè da 3^^^^3=(impossibile sciverlo qui per esteso),si va avanti con il
sistema adottato prima,ripetendolo 63 volte.
E' stato calcolato che per scrivere il n.ro di Grahaman per esteso non
basterebbe tutta la materia dell'universo trasformata in inchiostro!!!
5. Equivalenze aritmetiche
CLS : PRINT "SISTEMA METRICO DECIMALE:EQUIVALENZE SULLE MISURE DI LUNGHEZZA"
PRINT "Al primo (?) digita di seguito il numero d'ordine dell'unità di misura di
lunghezza a partire da (Mm) e la misura."
PRINT "Al secondo (?) digita la nuova unità di misura e il numero d'ordine della
stessa."
INPUT D, A
DIM A$(8)
FOR I = 1 TO 8
READ A$(I)
IF D = I THEN 50
NEXT I
50 DATA "Mm","Km","hm","dam","m","dm","cm","mm"
N$ = A$(I)
INPUT E$, E
DIM B$(8)
FOR I = 1 TO 8
READ B$(I)
IF E = I THEN 140
NEXT I
DATA "Mm","Km","hm","dam","m","dm","cm","mm"
140 C = E - D
IF C < 0 THEN 380
IF C = 1 THEN 230
IF C = 2 THEN 250
IF C = 3 THEN 270
IF C = 4 THEN 290
IF C = 5 THEN 310
IF C = 6 THEN 330
IF C = 7 THEN 350
230 S = 10
GOTO 360
250 S = 100
GOTO 360
270 S = 1000
280 GOTO 360
290 S = 10000!
300 GOTO 360
310 S = 100000
320 GOTO 360
330 S = 1000000
340 GOTO 360
350 S = 10000000
360 PRINT N$; A; "="; E$; A * S
370 END
380 IF C = -1 THEN 460
390 IF C = -2 THEN 480
400 IF C = -3 THEN 500
410
420
430
440
450
460
470
480
490
500
510
520
530
540
550
560
570
580
590
600
IF C = -4 THEN
IF C = -5 THEN
IF C = -6 THEN
IF C = -7 THEN
REM
S = .1
GOTO 360
S = .01
GOTO 360
S = .001
GOTO 360
S = .0001
GOTO 360
S = .00001
GOTO 360
S = .000001
GOTO 360
S = .0000001
GOTO 360
END
520
540
560
580
CLS : PRINT "SISTEMA METRICO DECIMALE:EQUIVALENZE SULLE MISURE DI SUPERFICIE."
PRINT "Al primo (?) digita di seguito il numero d'ordine a due a due dell'unità
di misura di superficie a partire da (Mm^2) e la misura."
PRINT "Al secondo (?) digita la nuova unità di misura e il numero d'ordine a due
a due della stessa."
INPUT D, A
DIM A$(16)
FOR I = 2 TO 14 STEP 2
READ A$(I)
IF D = I THEN 50
NEXT I
50 DATA "Mm^2","Km^2","hm^2","dam^2","m^2","dm^2","cm^2","mm^2"
N$ = A$(I)
INPUT E$, E
DIM B$(14)
FOR I = 2 TO 14 STEP 2
READ B$(I)
IF E = I THEN 140
NEXT I
DATA "Mm^2","Km^2","hm^2","dam^2","m^2","dm^2","cm^2","mm^2"
140 C = E - D
IF C < 0 THEN 380
IF C = 2 THEN 230
IF C = 4 THEN 250
IF C = 6 THEN 270
IF C = 8 THEN 290
IF C = 10 THEN 310
IF C = 12 THEN 330
IF C = 14 THEN 350
230 S = 100
GOTO 360
250 S = 10000
GOTO 360
270 S = 1000000
280 GOTO 360
290 S = 100000000
300 GOTO 360
310 S = 10000000000#
320 GOTO 360
330 S = 1000000000000#
340 GOTO 360
350
360
370
380
390
400
410
420
430
440
450
460
470
480
490
500
510
520
530
540
550
560
570
580
590
600
S = 100000000000000#
PRINT N$; A; "="; E$; A * S
END
IF C = -2 THEN 460
IF C = -4 THEN 480
IF C = -6 THEN 500
IF C = -8 THEN 520
IF C = -10 THEN 540
IF C = -12 THEN 560
IF C = -14 THEN 580
REM
S = .01
GOTO 360
S = .0001
GOTO 360
S = .000001
GOTO 360
S = .00000001#
GOTO 360
S = .0000000001#
GOTO 360
S = .000000000001#
GOTO 360
S = .00000000000001#
GOTO 360
END
CLS : PRINT "SISTEMA METRICO DECIMALE:EQUIVALENZE SULLE MISURE DI VOLUME"
PRINT "Al primo (?) digita di seguito il numero d'ordine a tre a tre dell'unità
di misura di volume a partire da (Mm^3) e la misura."
PRINT "Al secondo (?) digita la nuova unità di misura e il numero d'ordine a tre
a tre della stessa."
INPUT D, A
DIM A$(24)
FOR I = 3 TO 24 STEP 3
READ A$(I)
IF D = I THEN 50
NEXT I
50 DATA "Mm^3","Km^3","hm^3","dam^3","m^3","dm^3","cm^3","mm^3"
N$ = A$(I)
INPUT E$, E
DIM B$(24)
FOR I = 3 TO 24 STEP 3
READ B$(I)
IF E = I THEN 140
NEXT I
DATA "Mm^3","Km^3","hm^3","dam^3","m^3","dm^3","cm^3","mm^3"
140 C = E - D
IF C < 0 THEN 380
IF C = 3 THEN 230
IF C = 6 THEN 250
IF C = 9 THEN 270
IF C = 12 THEN 290
IF C = 15 THEN 310
IF C = 18 THEN 330
IF C = 21 THEN 350
230 S = 1000
GOTO 360
250 S = 1000000
GOTO 360
270 S = 1000000000
280 GOTO 360
290
300
310
320
330
340
350
360
370
380
390
400
410
420
430
440
450
460
470
480
490
500
510
520
530
540
550
560
570
580
590
600
S = 100000000000#
GOTO 360
S = 1000000000000000#
GOTO 360
S = 1D+18
GOTO 360
S = 1D+21
PRINT N$; A; "="; E$; A * S
END
IF C = -3 THEN 460
IF C = -6 THEN 480
IF C = -9 THEN 500
IF C = -12 THEN 520
IF C = -15 THEN 540
IF C = -18 THEN 560
IF C = -21 THEN 580
REM
S = .001
GOTO 360
S = .000001
GOTO 360
S = .000000001#
GOTO 360
S = .000000000001#
GOTO 360
S = .000000000000001#
GOTO 360
S = 1D-18
GOTO 360
S = 9.999999999999999D-22
GOTO 360
END
CLS : PRINT "SISTEMA METRICO DECIMALE:EQUIVALENZE SULLE MISURE DI CAPACITA'"
PRINT "Al primo (?) digita di seguito il numero d'ordine dell'unità di misura di
capacità a partire da (hl) e la misura."
PRINT "Al secondo (?) digita la nuova unità di misura e il numero d'ordine della
stessa."
INPUT D, A
DIM A$(6)
FOR I = 1 TO 6
READ A$(I)
IF D = I THEN 50
NEXT I
50 DATA "hl","dal","l","dl","cl","ml"
N$ = A$(I)
INPUT E$, E
DIM B$(6)
FOR I = 1 TO 6
READ B$(I)
IF E = I THEN 140
NEXT I
DATA "hl","dal","l","dl","cl","ml"
140 C = E - D
IF C < 0 THEN 380
IF C = 1 THEN 230
IF C = 2 THEN 250
IF C = 3 THEN 270
IF C = 4 THEN 290
IF C = 5 THEN 310
230 S = 10
GOTO 360
250 S = 100
GOTO 360
270 S = 1000
280 GOTO 360
290 S = 10000!
300 GOTO 360
310 S = 100000
360 PRINT N$; A; "="; E$; A * S
370 END
380 IF C = -1 THEN 460
390 IF C = -2 THEN 480
400 IF C = -3 THEN 500
410 IF C = -4 THEN 520
420 IF C = -5 THEN 540
450 REM
460 S = .1
470 GOTO 360
480 S = .01
490 GOTO 360
500 S = .001
510 GOTO 360
520 S = .0001
530 GOTO 360
540 S = .00001
550 GOTO 360
600 END
CLS : PRINT "SITEMA METRICO DEIMALE:EQUIVALENZE SULLE MISURE DI PESO"
PRINT "Al primo (?) digita di seguito il numero d'ordine dell'unità di misura di
peso a partire da (t) e la misura."
PRINT "Al secondo (?) digita la nuova unità di misura e il numero d'ordine della
stessa."
INPUT D, A
DIM A$(10)
FOR I = 1 TO 10
READ A$(I)
IF D = I THEN 50
NEXT I
50 DATA "t","q","Mg","Kg","hg","dag","g","dg","cg","mg"
N$ = A$(I)
INPUT E$, E
DIM B$(10)
FOR I = 1 TO 10
READ B$(I)
IF E = I THEN 140
NEXT I
DATA "t","q","Mg","Kg","hg","dag","g","dg","cg","mg"
140 C = E - D
IF C < 0 THEN 380
IF C = 1 THEN 230
IF C = 2 THEN 250
IF C = 3 THEN 270
IF C = 4 THEN 290
IF C = 5 THEN 310
IF C = 6 THEN 330
IF C = 7 THEN 350
IF C = 8 THEN 352
IF C = 9 THEN 354
230 S = 10
GOTO 360
250 S = 100
GOTO 360
270 S = 1000
280 GOTO 360
290 S = 10000
300 GOTO 360
310 S = 100000
320 GOTO 360
330 S = 1000000
340 GOTO 360
350 S = 10000000
GOTO 360
352 S = 100000000
GOTO 360
354 S = 1000000000
360 PRINT N$; A; "="; E$; A * S
370 END
380 IF C = -1 THEN 460
390 IF C = -2 THEN 480
400 IF C = -3 THEN 500
410 IF C = -4 THEN 520
420 IF C = -5 THEN 540
430 IF C = -6 THEN 560
440 IF C = -7 THEN 580
442 IF C = -8 THEN 582
444 IF C = -9 THEN 584
450 REM
460 S = .1
470 GOTO 360
480 S = .01
490 GOTO 360
500 S = .001
510 GOTO 360
520 S = .0001
530 GOTO 360
540 S = .00001
550 GOTO 360
560 S = .000001
570 GOTO 360
580 S = .0000001
GOTO 360
582 S = .00000001#
GOTO 360
584 S = .000000001#
590 GOTO 360
600 END
Esempio con input e output sulle equivalenze delle misure di peso.
SITEMA METRICO DEIMALE:EQUIVALENZE SULLE MISURE DI PESO
Al primo (?) digita di seguito il numero d'ordine dell'unità di misura di peso a
partire da (t) e la misura.
Al secondo (?) digita la nuova unità di misura e il numero d'ordine della stessa
.
? 2,25
? dg,8
q 25 =dg 2.5E+07
6. Presentazione del programma “Poligoni regolari e
π : numeri per il calcolo area, apotema”
O
1 Â
H
L
N
fig. 1
Allo scopo di rendere più immediata l’interpretazione del programma sotto riportato nel linguaggio QBasic si
chiariranno di seguito le singole istruzioni, dopo aver introdotto il cerchio di raggio unitario (fig. 1), nel quale è
disegnato il triangolo isoscele di base LN, che è genericamente il lato, L, di un poligono regolare inscritto. Infatti, se
opportunamente presi, tre di questi triangoli isosceli formeranno il triangolo equilatero, quattro il quadrato, cinque il
pentagono, ecc..L’istruzione INPUT chiede di dare il numero N di lati del poligono regolare; l’istruzione P=4*ATN(1)
calcola e introduce nella memoria del computer il numero π ; l’istruzione L=2*SIN(A) permette di calcolare, con
l’angolo LHO=A e con il cateto LH=SIN(A) , la lunghezza L della base del triangolo isoscele LNO che è, come già
detto, il lato del poligono regolare; l’istruzione S=N*SIN(2*A)/2, da N*L*OH/2=N*2*SIN(A)*COS(A)/2 calcola N
volte l’area del triangolo isoscele della fig. 1, il cui valore S è esattamente l’area del poligono regolare di N lati;
l’istruzione F=S/L^2 dà il valore del numero per il calcolo dell’area del poligono regolare, essendo S=L^2*F;
l’istruzione U=COS(A) calcola l’apotema del poligono regolare, che coincide con il cateto OH del triangolo rettangolo
LHO; l’istruzione V=U/L dà il valore del numero per il calcolo dell’apotema, essendo U= L*V; l’istruzione PRINT
“N=”;N,”F=”;F,”V=”;V è relativa all’output dei valori N (numero lati poligono), F (numero calcolo area poligono) e V
(numero calcolo apotema poligono) di cui sopra; l’istruzione PRINT “PG=CIRCA F/V^2 ecc. dà un valore
approssimato di π . Infatti, sapendo che l’area e l’apotema di un poligono regolare inscritto nel cerchio di raggio
unitario sono S=L^2*F e U=L*V, dalla prima e dal quadrato della seconda si hanno rispettivamente F=S/L^2,
V^2=U^2/L^2 i cui rapporti dei due membri dà proprio l’istruzione PRINT “PG=CIRCA F/V^2=S/U^2, che, per il
cerchio di raggio unitario, dovrà essere S= π e U^2=1.
Si riportano a seguire il listato in QBasic del programma sopra esposto, un esempio con i relativi input ed output,
nonché una tabella nella quale sono stampati i numeri approssimati F e V, per i quali devono moltiplicarsi
rispettivamente il quadrato del lato e il lato per poter avere l’area e l’apotema del poligono; nella medesima tabella,
ultima colonna, è riportato il valore approssimato di π , che per il poligono di circa un miliardo di lati dà un valore
dello stesso preciso fino alla quindicesima cifra decimale.
CLS : DEFDBL P: DEFDBL A: DEFDBL L: DEFDBL S: DEFDBL F
DEFDBL U: DEFDBL V
PRINT "POLIGONO REGOLARE DI N LATI: CALCOLA I NUMERI F,V PER LA DETERMINAZIONE"
PRINT "RISPETTIVAMENTE DELL'AREA(S) E DELL'APOTEMA(U);"
PRINT "AL DIVERGERE DI N CALCOLA PG(PI GRECO)."
10 INPUT "DIGITA N, NUMERO DEI LATI DEL POLIGONO "; N
P = 4 * ATN(1): A = P / N: L = 2 * SIN(A): S = N * SIN(2 * A) / 2
F = S / L ^ 2: U = COS(A): V = U / L: PRINT "N="; N, "F="; F, "V="; V
PRINT "PG=CIRCA F/U^2="; F / V ^ 2; ","; "che al divergere di N è proprio PI
GRECO=(area cerchio)/(raggio^2)"
INPUT "VUOI CONTINUARE? DIGITA S/N"; Z$
IF Z$ = "S" THEN 10 ELSE 20
20 END
Input output “Poligoni regolari: numeri per il calcolo di area e apotema; al divergere dei lati calcola pi greco”.
POLIGONO REGOLARE DI N LATI: CALCOLA I NUMERI F,V PER LA DETERMINAZIONE
RISPETTIVAMENTE DELL'AREA(S) E DELL'APOTEMA(U);
AL DIVERGERE DI N CALCOLA PG(PI GRECO).
DIGITA N, NUMERO DEI LATI DEL POLIGONO ? 6
N= 6
F= 2.598076211353316
V= .8660254037844388
PG=CIRCA F/U^2= 3.464101615137753 ,
che al divergere di N è proprio PI GRECO=(area cerchio)/(raggio^2)
VUOI CONTINUARE? DIGITA S/N? S
DIGITA N, NUMERO DEI LATI DEL POLIGONO ? 1000000000
N= 1E+09 F= 7.957747154594766D+16 V= 159154943.0918953
PG=CIRCA F/U^2= 3.141592653589793 ,
che al divergere di N è proprio PI GRECO=(area cerchio)/(raggio^2)
VUOI CONTINUARE? DIGITA S/N? N
7. Regola di Ruffini
10 CLS : PRINT "REGOLA DI RUFFINI (A*X^N+B*X^(N-1)+...L*X+M):(X+Z)"
INPUT "DIGITA DI SEGUITO I COEFF.E IL TERMINE NOTO DEL POLINOMIO DIVIDENDO,DOPO
EVENTUALMENTE 0(ZERO) FINO AD M"; A, B, C, D, E, F, G, H, I, L, M
INPUT "DIGITA IL TERMINE NOTO DEL BINOMIO DIVISORE,CAMBIATO DI SEGNO"; Z: PRINT
A0 = A * Z + B: A1 = Z * A0 + C: A2 = Z * A1 + D: A3 = Z * A2 + E
A4 = Z * A3 + F: A5 = Z * A4 + G: A6 = Z * A5 + H: A7 = Z * A6 + I
A8 = Z * A7 + L: R = Z * A8 + M
PRINT " COEFF.DEL POLINOMIO QUOZIENTE (UNO IN MENO DEL DIVIDENDO),SEGUE IL"
PRINT " RESTO ED ALTRI NUMERI DEI QUALI NON SI TERRA' CONTO SE
POL.DIVIDENDO<10øGR."
PRINT A, A0, A1, A2, A3, A4, A5, A6, A7, A8, R
INPUT "VUOI CONTINUARE? S/N "; G$
IF G$ = "S" THEN 10
END
Input output “Regola di Ruffini”
REGOLA DI RUFFINI (A*X^N+B*X^(N-1)+...L*X+M):(X+Z)
DIGITA DI SEGUITO I COEFF.E IL TERMINE NOTO DEL POLINOMIO DIVIDENDO,DOPO DIGITA
EVENTUALMENTE TANTI 0(ZERO) FINO AD M? 6,5,3,7,-2,-9,0,0,0,0,0
DIGITA IL TERMINE NOTO DEL BINOMIO DIVISORE,CAMBIATO DI SEGNO? –5
COEFF.DEL POLINOMIO QUOZIENTE (UNO IN MENO DEL DIVIDENDO),SEGUE IL
RESTO ED ALTRI NUMERI DEI QUALI NON SI TERRA' CONTO SE POL.DIVIDENDO<10°GR.
6
-25
128
-633
3163
-15824
79120
-395600
1978000 -9890000
4.945E+07
VUOI CONTINUARE? S/N ? N
8. Divisione di due polinomi
CLS : PRINT "DIVIDE DUE POLINOMI DI GRADI M,N."
PRINT "INTRODURRE AL PRIMO (?) N,M; DAL SECONDO (?) IN POI INTRODURRE I COEFF. A
PARTIRE DAL GRADO ZERO."
10 INPUT N, M
FOR I = 0 TO N
INPUT A(I): R(I) = A(I): NEXT I
FOR I = 0 TO M
INPUT B(I)
NEXT I
I = N
190 IF I < M THEN 300
K = I - M
Q(K) = R(I) / B(M)
J = I - 1
230 H = J - K
IF H < 0 THEN 280
R(J) = R(J) - Q(K) * B(H): J = J - 1:
GOTO 230
280 I = I - 1
GOTO 190
300 FOR I = 0 TO N - M
PRINT Q(I);
NEXT I: PRINT : FOR J = 0 TO M - 1
PRINT R(J);
PRINT
NEXT J
PRINT "QUESTI SONO I COEFF.DEL POLINOMIO QUOZIENTE DAL GRADO PIU'BASSO ED IL
RESTO."
INPUT "VUOI CONTINUARE? S/N "; G$: IF G$ = "S" THEN 10: END
Input output “Divisione di due polinomi”
DIVIDE DUE POLINOMI DI GRADI N, M.
INTRODURRE AL PRIMO(?) N,M; DAL SECONDO(?) IN POI INTRODURRE I COEFF. A PARTIRE
DAL GRADO ZERO.
? 4,2
? -4
?0
? -3
?0
?2
?2
? -1
?2
-2.25 .5 1
.5
-3.25
QUESTI SONO I COEFF.DEL POLINOMIO QUOZIENTE DAL GRADO PIU'BASSO ED IL RESTO.
VUOI CONTINUARE? S/N ? N
9. Sistema di due equazioni primo grado
10 CLS : PRINT "SISTEMA LINEARE DI DUE EQUAZIONI:"
PRINT "AX+BY+C=0, DX+EY+F=0"
DIM X(6)
DIM A(2): PRINT
PRINT "DIGITA DI SEGUITO I SEI DATI"
FOR I = 1 TO 6
INPUT X(I)
NEXT I
D = X(1) * X(5) - X(2) * X(4)
A(1) = X(3) * X(5) - X(2) * X(6)
A(2) = -X(3) * X(4) + X(1) * X(6)
IF D = 0 THEN 270
GOTO 310
270 IF A(1) = 0 THEN 290
GOTO 300
290 IF A(2) = 0 THEN 740
300 IF D = 0 THEN 690
310 PRINT
PRINT "("; X(1); "X+"; "("; X(2); ")"; "Y+"; "("; X(3); ")"; "=0"
PRINT "("
PRINT "("; X(4); "X+"; "("; X(5); ")"; "Y+"; "("; X(6); ")"; "=0"
PRINT
D = -D
S = D / ABS(D)
FOR I = 1 TO 2
B = ABS(D)
IF A(I) < 0 THEN 430
GOTO 440
430 T = (-1) * A(I)
440 T = A(I)
450 Q = T / B
460 R = T - Q * B
T = B: B = R
IF R > 0 THEN 450
GCD = T
IF I = 1 THEN 550
530 IF I = 2 THEN 570
GOTO 580
550 PRINT "X=";
GOTO 530
570 PRINT "Y=";
580 PRINT S * A(I) / GCD
IF GCD <> 1 THEN 610
GOTO 660
610 IF ABS(D / GCD) <> 1 THEN 650
GOTO 660
PRINT
GOTO 670
650 PRINT "/"; ABS(D / GCD)
660 PRINT
670 NEXT I
680 END
690 PRINT
PRINT "NESSUNA SOLUZIONE"
END
PRINT
PRINT "SISTEMA INDETERMINATO"
740 END
Input output “Sistema di due equazioni primo grado”
SISTEMA LINEARE DI DUE EQUAZIONI:
AX+BY+C=0, DX+EY+F=0
DIGITA DI SEGUITO I SEI DATI
?1
? -8
? -2
?1
? -7
? -7
( 1 X+(-8 )Y+(-2 )=0
(
( 1 X+(-7 )Y+(-7 )=0
X= 42
Y= 5
10. Equazioni di secondo grado con radici reali e complesse
CLS : PRINT "EQUAZIONE DI 2øGRADO A RADICI REALI E COMPLESSE,CON RELAZIONI"
10 INPUT "A*X^2+B*X+C=0: DIGITA A,B,C "; A, B, C
D = B ^ 2 - 4 * A * C: PRINT : PRINT "DISCRIMINANTE D=B^2-4*A*C="; D
IF D < 0 THEN 70 ELSE 40
40 X1 = (-B + SQR(D)) / (2 * A): X2 = (-B - SQR(D)) / (2 * A): PRINT
PRINT "X1="; X1, "X2="; X2: PRINT : GOTO 90: END
70 XR1 = -B / (2 * A): XJ1 = SQR(-D) / (2 * A): XJ2 = -XJ1: PRINT
PRINT "X1="; XR1; "+("; XJ1; ")"; "*I": PRINT "X2="; XR1; "+("; XJ2; ")"; "*I":
PRINT
GOTO 100
90 PRINT "RELAZIONI:-B/A="; -B / A; "="; "X1+X2="; X1 + X2; ";"; " C/A="; C / A;
"="; "X1 * X2="; X1 * X2
PRINT : INPUT "VUOI CONTINUARE? S/N "; G$
IF G$ = "S" THEN 10
END
100 PRINT "RELAZIONI: B/A="; -B / A; "="; "2*(-B/(2*A)="; 2 * XR1; ";"
PRINT "C/A="; C / A; "="; "(-B/(2*A))^2+(-D)/((2*A)^2)="; XR1 ^ 2 + XJ1 ^ 2
PRINT : INPUT "VUOI CONTINUARE? S/N "; G$
IF G$ = "S" THEN 10
END
Esempio con input e output di equazioni di secondo grado
EQUAZIONE DI 2°GRADO A RADICI REALI E COMPLESSE,CON RELAZIONI
A*X^2+B*X+C=0: DIGITA A,B,C ? 1,11,-60
DISCRIMINANTE D=B^2-4*A*C= 361
X1= 4
X2=-15
RELAZIONI:-B/A=-11 =X1+X2=-11 ; C/A=-60 =X1 * X2=-60
VUOI CONTINUARE? S/N ? S
A*X^2+B*X+C=0: DIGITA A,B,C ? 5,8,7
DISCRIMINANTE D=B^2-4*A*C= -76
X1=-.8 +( .8717798 )*I
X2=-.8 +(-.8717798 )*I
RELAZIONI: B/A=-1.6 =2*(-B/(2*A)=-1.6 ;
C/A= 1.4 =(-B/(2*A))^2+(-D)/((2*A)^2)= 1.4
VUOI CONTINUARE? S/N ? N
11. Serie geometriche convergenti
CLS : PRINT "CONVERGENZA SERIE GEOMETRICHE CON 0<Q<1"
10 DEFDBL A: DEFDBL B: DEFDBL C: DEFDBL Q: DEFDBL S
INPUT "DIGITA PRIMO TERMINE,RAGIONE,N.RO TERMINI "; A, Q, N
PRINT "TERMINI DELLA SUCCESSIONE", "SOMMA TERMINI DELLA SERIE CONVERGENTE"
PRINT "DA CUI PROVIENE LA SERIE", "CHE PER N ALL'INFINITO E'<SOMMA> DELLA SERIE"
B = A: PRINT B, , , A
FOR I = 2 TO N
C = A * Q ^ (I - 1)
B = B + C
PRINT C, , , B
NEXT I
S = A / (1 - Q)
PRINT "LA SERIE RELATIVA CONVERGE PER 0<Q<1,"; 0; "<"; Q; "<"; 1;
PRINT "A S=A1/(1-Q)="; A; "/(1-"; Q; ")="; S
INPUT "VUOI CONTINUARE? S/N"; Z$
IF Z$ = "S" THEN 10
END
Esempio con input e output sulle serie geometriche convergenti
CONVERGENZA SERIE GEOMETRICHE CON 0<Q<1
DIGITA PRIMO TERMINE,RAGIONE,N.RO TERMINI ? 4,.5,10
TERMINI DELLA SUCCESSIONE SOMMA TERMINI DELLA SERIE CONVERGENTE
DA CUI PROVIENE LA SERIE CHE PER N ALL'INFINITO E'<SOMMA> DELLA SERIE
4
4
2
6
1
7
.5
7.5
.25
7.75
.125
7.875
.0625
7.9375
.03125
7.96875
.015625
7.984375
.0078125
7.9921875
LA SERIE RELATIVA CONVERGE PER 0<Q<1, 0 < .5 < 1 A S=A1/(1-Q)= 4 /(1- .5 )= 8
VUOI CONTINUARE? S/N? N
12. Radici approssimate polinomio di grado qualunque: “Calcola con il metodo di Bairstow, in parte iterativo gli
zeri di un polinomio di grado N”.
Prima di riportare il programma diamo le indicazioni teoriche del metodo di Bairstow, il quale consiste nel decomporre
il polinomio P(x) nel prodotto di polinomi più semplici di gradi 2 ed eventualmente 1. Il primo passo consiste nel
determinare p , q in P(x)=(x2+px+q) Q(x); le radici di P(x) sono quindi sia quelle dell’equazione in x sia quelle di Q(x)
di grado n-2. Applicando nuovamente il processo a Q(x) e così via fino a determinare tutte le radici. Per la
determinazione dei coefficienti p , q si ricorre ad uno dei metodi iterativi che si conoscono.
Avviato il programma, digitati il grado del polinomio e tutti i coefficienti, eventualmente anche i nulli, occorre anche
dare la precisione da 1 (mediocre) a 8 (ottima) e i valori iniziali p , q: quanto sopra in generale conduce al risultato,
tuttavia a volte, soprattutto se vi sono molti coefficienti nulli, bisogna variare la precisione e/o p, q e rilanciare il
programma.
CLS : PRINT "CALCOLA CON METODO DI BAIRSTOW, ANCHE ITERATIVO, GLI ZERI DI UN POLINOMIO
DI GRADO N"
PRINT "A(0)X^N+A(1)X^(N-1)+A(2)X^(N-2)+...A(N-1)X+A(N)=0"
PRINT "SI RICHIEDE LA PRECISIONE p DA 1(minima) A 8 E CON ESSA VIENE CALCOLATO"
PRINT "E(errore massimo)=10^(-p) TOLLERABILE PER I VALORI ASSOLUTI DI p(n+1)p(n)"
PRINT "E q(n+1)-q(n),ESSENDO p,q IN P(X)=(X^2+pX+q)*Q(X), CIOE' NELLA DECOM-"
PRINT "POSIZIONE DEL POLINOMIO DI PARTENZA SECONDO IL METODO DI BAIRSTOW."
20 INPUT "N="; n: IF n < 3 THEN 20 ELSE 40
40 FOR I = 0 TO n
PRINT "A("; I; : INPUT ")="; A(I)
NEXT I: FOR I = 1 TO n: A(I) = A(I) / A(0): NEXT I
A(0) = 1: INPUT "PRECISIONE DA 1 A 8:"; E
E = 10 ^ (-E)
INPUT "P,Q:"; p, q: S = 0
90 J = 0
100 B(0) = A(0): B(1) = A(1) - p * B(0): FOR K = 2 TO n
B(K) = A(K) - p * B(K - 1) - q * B(K - 2)
NEXT K: C(0) = B(0): C(1) = B(1) - p * C(0): IF n = 3 THEN 190
FOR K = 2 TO n - 2
C(K) = B(K) - p * C(K - 1) - q * C(K - 2): NEXT K
190 C(n - 1) = -p * C(n - 2) - q * C(n - 3)
D = C(n - 2) * C(n - 2) - C(n - 1) * C(n - 3)
U = B(n - 1) * C(n - 2) - B(n) * C(n - 3)
V = B(n) * C(n - 2) - B(n - 1) * C(n - 1)
IF D = 0 THEN PRINT "IL METODO E' INADATTO": GOTO 420
Y = U / D: Z = V / D
p = p + Y: q = q + Z
IF (ABS(Y) + ABS(Z)) < E THEN 300
IF J < 100 THEN J = J + 1: GOTO 100
PRINT "AL CALCOLO OCCORRONO MOLTE ITERAZIONI"
GOTO 420
300 T = p * p - 4 * q
IF T < 0 THEN 350
PRINT (-p + SQR(T)) / 2
S = 1
PRINT (-p - SQR(T)) / 2
350 n = n - 2
FOR I = 1 TO n
A(I) = B(I)
NEXT I
IF n > 2 THEN 90
IF n = 2 THEN p = B(1): q = B(2): GOTO 300
IF n = 1 THEN PRINT -B(1) / B(0): S = 1
420 IF S = 0 THEN PRINT "NESSUNA SOLUZIONE"
PRINT “EVENTUALI ALTRE RADICI NON SONO RIPORTATE PERCHE’ COMPLESSE.”
INPUT " VUOI RIUTILIZZARE IL PROGRAMMA S/N"; Z$
IF Z$ = "S" THEN 20
END
Esempi con input output del programma 12:
CALCOLA CON METODO DI BAIRSTOW, ANCHE ITERATIVO, LE RADICI DI UN POLINOMIO DI
GRADO N
A(0)X^N+A(1)X^(N-1)+A(2)X^(N-2)+...A(N-1)X+A(N)=0
SI RICHIEDE LA PRECISIONE p DA 1(minima) A 8 E CON ESSA VIENE CALCOLATO
E(errore massimo)=10^(-p) TOLLERABILE PER I VALORI ASSOLUTI DI p(n+1)-p(n)
E q(n+1)-q(n),ESSENDO p,q IN P(X)=(X^2+pX+q)*Q(X), CIOE' NELLA DECOMPOSIZIONE DEL POLINOMIO DI PARTENZA SECONDO IL METODO DI BAIRSTOW.
N=? 6
A( 0 )=? 2
A( 1 )=? -4
A( 2 )=? 3
A( 3 )=? -6
A( 4 )=? 5
A( 5 )=? 10
A( 6 )=? -40
PRECISIONE DA 1 A 8:? 5
P,Q:? 0,0
2
-1.289272
EVENTUALI ALTRE RADICI NON SONO RIPORTATE PERCHE' COMPLESSE.
VUOI RIUTILIZZARE IL PROGRAMMA S/N? S
N=? 4
A( 0 )=? 1
A( 1 )=? -2
A( 2 )=? -45
A( 3 )=? -34
A( 4 )=? 80
PRECISIONE DA 1 A 8:? 8
P,Q:? 0,0
1
-2
8
-5
EVENTUALI ALTRE RADICI NON SONO RIPORTATE PERCHE' COMPLESSE.
VUOI RIUTILIZZARE IL PROGRAMMA S/N? S
N=? 7
A( 0 )=?
A( 1 )=?
A( 2 )=?
A( 3 )=?
A( 4 )=?
2
-13
-49
385
-77
A( 5 )=? -1652
A( 6 )=? 684
A( 7 )=? 720
PRECISIONE DA 1 A 8:? 5
P,Q:? 2,2
1
-2
2.999999
-.5
4.000002
-5
5.999999
EVENTUALI ALTRE RADICI NON SONO RIPORTATE PERCHE' COMPLESSE.
VUOI RIUTILIZZARE IL PROGRAMMA S/N? N
13. Equazione differenziale di qualunque ordine: “Risoluzione di un’equazione differenziale di ordine N”
Come è noto la risoluzione di un’equazione differenziale è data sotto la forma analitica. Invece, la soluzione data dal
programma è sotto la forma discreta, ossia sotto forma della successione di valori presi dalla funzione per dei valori
equidistanti della variabile x. La finezza è un metodo per aumentare la precisione del calcolo, che è legata al numero dei
termini calcolati. Tuttavia, senza saturare lo schermo viene stampata solo una parte di punti calcolati, essendo la finezza
il numero dei punti calcolati tra due punti stampati. Es. con finezza10, il programma calcolerà 10 volte i punti che
stamperà; se si vuole che tutti i punti calcolati vengano stampati, si dovrà richiedere la finezza 1.
Digitare l’ordine dell’equazione al numero d’istruzione 40 e l’equazione differenziale al numero 50: Y(0) è la funzione
incognita y, Y(1) è la derivata y’,…, Y(n) è la derivata y(n).
10 CLS : PRINT "Data l'equazione differenziale G(X,Y,Y(1),Y(2),...,Y(n))=0,
risolverla significa trovare le Y che la soddisfano. Esistono solo casi
particolari risolvibili, ma vari metodi numerici permettono di ottenere le
soluzioni."
PRINT "La presente estensione del metodo di Runge-Kutta permette di risolvere le
equazioni di ordine qualunque N, che ha la"
PRINT "FORMA DELLE EQUAZIONI Y(n)=F(Y(n-1),Y(n-2),...,Y(1),Y,X)."
PRINT "SI EFFETTUERANNO I CAMBIAMENTI DI VARIABILE Y1=Y
Y2=Y(1)
Y3=Y(2)......"
PRINT "Yn=Y(n-1).L'EQUAZIONE DI PARTENZA EQUIVALE AL SISTEMA CHE HA"
PRINT "LE EQUAZIONI Y1(1)=Y2,Y2(1)=Y3,...,Yn-1(1)=Yn,Yn(1)=F(Yn,Yn1,...Y2,Y1,X)"
PRINT "CON Y1(0)=Y(0),Y2(0)=Y(1)(0),...,Yn-1(0)=Y(n-2)(0),Yn(0)=Y(n-1)(0),CHE"
PRINT "E' UN SISTEMA DI n EQUAZIONI ACCOPPIATE DI ORDINE 1 RISOLVIBILE."
20 PRINT TAB(5); "RISOLUZIONE EQUAZIONE DIFFERENZIALE DI ORDINE N": PRINT :
PRINT
PRINT "1- L'EQUAZIONE VA PROGRAMMATA NELL'ISTRUZIONE 50 E IL SUO ORDINE"
PRINT "VA DIGITATO NELL'ISTRUZIONE 40": PRINT : PRINT "2- RISOLUZIONE"
PRINT : PRINT : INPUT "SE HAI SVOLTO LA FUNZIONE 1, DIGITA 2:"; E
PRINT : IF E = 2 THEN 30 ELSE 100
REM F = (2 * Y(1) * Y(1) + Y(0) * Y(0)) / Y(0)
30 GOSUB 50
40 N = 4
N1 = N - 1
INPUT "X0="; X: X1 = X: PRINT
FOR L = 0 TO N1
PRINT "Y"; : IF L > 0 THEN FOR L1 = 1 TO L: PRINT "'"; : NEXT L1
PRINT "("; X; : INPUT ")="; Z(L)
NEXT L: PRINT
INPUT "SECONDO ESTREMO XF:"; XF
INPUT "N.RO PUNTI: "; M
INPUT "FINEZZA: "; FI: PRINT
H = (XF - X) / FI / M
FOR I = 1 TO M
FOR J = 1 TO FI
FOR L = 0 TO N1: Y(L) = Z(L): NEXT L
GOSUB 50
FOR L = 0 TO N - 2: A(L) = H * Y(L + 1): Y(L) = Z(L) + A(L) / 2: NEXT L
A = H * F: Y(N1) = Z(N1) + A / 2: X = X + H / 2
GOSUB 50
FOR L = 0 TO N - 2: B(L) = H * Y(L + 1): Y(L) = Z(L) + B(L) / 2: NEXT L
B = H * F: Y(N1) = Z(N1) + B / 2
GOSUB 50
FOR L = 0 TO N - 2: C(L) = H * Y(L + 1): Y(L) = Z(L) + C(L): NEXT L
C = H * F: Y(N1) = Z(N1) + C: X = X1 + ((I - 1) * FI + J) * H
GOSUB 50
FOR L = 0 TO N - 2
Z(L) = Z(L) + (A(L) + 2 * B(L) + 2 * C(L) + H * Y(L + 1)) / 6: NEXT L
Z(N1) = Z(N1) + (A + 2 * B + 2 * C + H * F) / 6
NEXT J
PRINT "X="; X; TAB(20); "Y="; Z(0)
NEXT I
PRINT : INPUT "VUOI RIUTILIZZARE IL PROGRAMMA S/N"; Z$
IF Z$ = "S" THEN 20
GOTO 100
50 F = 3 * Y(3) + Y(1) + 3 * Y(0) - X
RETURN
100 END
Esempio con input output del programma 13 e breve commento.
Data l’equazione del quarto ordine yIV = 3y’’’+y’+3y-x,all’istruzione 40 si
digiterà N=4, alla 50 si riporterà F=3*Y(3)+Y(1)+3*Y(0)-X, quindi si avvierà il
programma.
Data l'equazione differenziale G(X,Y,Y(1),Y(2),...,Y(n))=0, risolverla significa
trovare le Y che la soddisfano. Esistono solo casi particolari risolvibili, ma
vari metodi numerici permettono di ottenere le soluzioni.
La presente estensione del metodo di Runge-Kutta permette di risolvere le equazi
oni di ordine qualunque N, che ha la
FORMA DELLE EQUAZIONI Y(n)=F(Y(n-1),Y(n-2),...,Y(1),Y,X).
SI EFFETTUERA' IL CAMBIAMENTO DI VARIABILE Y1=Y
Y2=Y(1)
Y3=Y(2)......
Yn=Y(n-1).L'EQUAZIONE DI PARTENZA EQUIVALE AL SISTEMA CHE HA
LE EQUAZIONI Y1(1)=Y2,Y2(1)=Y3,...,Yn-1(1)=Yn,Yn(1)=F(Yn,Yn-1,...Y2,Y1,X)
CON Y1(0)=Y(0),Y2(0)=Y(1)(0),...,Yn-1(0)=Y(n-2)(0),Yn(0)=Y(n-1)(0),CHE
E' UN SISTEMA DI n EQUAZIONI ACCOPPIATE DI ORDINE 1 RISOLVIBILE.
RISOLUZIONE EQUAZIONE DIFFERENZIALE DI ORDINE N
1- L'EQUAZIONE VA PROGRAMMATA NELL'ISTRUZIONE 50 E IL SUO ORDINE
VA DIGITATO NELL'ISTRUZIONE 40
2- RISOLUZIONE
SE HAI SVOLTO LA FUNZIONE 1, DIGITA 2:? 2
X0=? 3
Y( 3 )=? 5
Y'( 3 )=? -8
Y''( 3 )=? 6
Y'''( 3 )=? -7
SECONDO ESTREMO XF:? 6
N.RO PUNTI: ? 5
FINEZZA: ? 60
X=
X=
X=
X=
X=
3.6
4.2
4.8
5.4
6
Y= .8733523
Y=-6.854454
Y=-55.11814
Y=-393.0173
Y=-2705.438
VUOI RIUTILIZZARE IL PROGRAMMA S/N? N
Nota bibliografica: per i programmi 12,13 cfr. A.Reverchon, M.Ducamp “Matematica
su personal computer” 1.Analisi, Tecniche Nuove Milano.
Il presente lavoro, relativo alla seconda parte, è stato pubblicato nel 2005 sul CD della quinta
edizione dell’ADT (Associazione per la Didattica con le Tecnologie), essendo stato presentato nel
4° Convegno Nazionale “Il ruolo delle tecnologie nella didattica” tenutosi a Castel San Pietro (BO)
dall’8 al 9 novembre 2003.
BIBLIOGRAFIA
1) G. Carolla, “Geometria e Didattica” in Cento anni di Matematica Atti del Convegno
Internazionale “Mathesis Centenario 1895-1995”, Fratelli Palombi Editori srl, Roma 1996,
pp. 281-285.
2) G. Carolla, “Teoria delle progressioni armoniche, logaritmiche, potenziate, antiarmoniche e
loro connessioni anche con le progressioni aritmetiche e geometriche” in Periodico di
matematiche, Organo della Mathesis, Serie VII- Volume 6- Numero 3- Luglio-settembre
1999, pp. 34-50.
3) G. Carolla, “Su alcune serie delle progressioni” in Atti del Congresso Nazionale della
Mathesis 1999, Vol. II, Teramo 2001, pp. 35-44.