Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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
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
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
2.1. Esempi
3.1. Esempi
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.1. Esempi
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 produce numeri primi da M(dispari) ad N."
PRINT
INPUT "DIGITA M,N "; M, N
IF M = 1 THEN 200
GOTO 230
200 PRINT
PRINT " I NUMERI PRIMI DA "; M; "A"; N; "SONO: "
PRINT 2
GOTO 250
230 PRINT " I NUMERI PRIMI DA "; M; "A"; N; "SONO: "
PRINT
250 FOR F = M TO N STEP 2
FOR J = 3 TO (F - 1) / 2 STEP 2
Q = F / J
Q1 = INT(Q)
IF Q = Q1 THEN 330
NEXT J: IF F = 1 THEN 330
PRINT " "; F; ;
330 NEXT F
END
5.1. Esempi
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
7.1. Esempio
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
9.1. Esempio
10.1. Esempio
N= 2 X= 3 Y= 3 Z= 4 NO
N= 2 X= 3 Y= 3 Z= 5 NO
N= 3 X= 3 Y= 3 Z= 4 NO
N= 2 X= 3 Y= 3 Z= 6 NO
N= 2 X= 3 Y= 4 Z= 5 SI
N= 3 X= 3 Y= 3 Z= 5 NO
N= 4 X= 3 Y= 3 Z= 4 NO
N= 2 X= 3 Y= 3 Z= 7 NO
N= 2 X= 3 Y= 4 Z= 6 NO
N= 2 X= 4 Y= 4 Z= 5 NO
11.1. Esempio
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.1. Esempio
X1=-2 ; Y=-2
VERIFICA: R= -6 =-6
X2= 2 ; Y=-2
VERIFICA: S= -6 =-6
X1=-2 ; Y=-1
VERIFICA: R= -6 =-6
X2= 4 ; Y=-1
VERIFICA: S= -6 =-6
X1= 4 ; Y= 2
VERIFICA: R= -6 =-6
X2= 4 ; Y= 2
VERIFICA: S= -6 =-6
13.1. Esempio
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
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
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.
Input output “Poligoni regolari: numeri per il calcolo di area e apotema; al divergere dei lati calcola pi greco”.
7. Regola di Ruffini
X= 42
Y= 5
X1= 4 X2=-15
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
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 )=? 2
A( 1 )=? -13
A( 2 )=? -49
A( 3 )=? 385
A( 4 )=? -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
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).
2- RISOLUZIONE
X0=? 3
Y( 3 )=? 5
Y'( 3 )=? -8
Y''( 3 )=? 6
Y'''( 3 )=? -7
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