Analisi matematica e calcolatori [1st ed.]
 8833954617

Table of contents :
Analisi matematica e calcolatore......Page 1
Colophon......Page 6
Indice......Page 7
Prefazione......Page 9
1.1 Considerazioni introduttive......Page 13
1.2 Funzioni definite a tratti......Page 15
1.3 Polinomi......Page 17
1.4 Funzione di Gauss......Page 21
1.5 Successioni in forma chiusa......Page 27
1.6 Successioni per ricorrenza......Page 29
1.7 La successione di Fibonacci......Page 32
1.8 Pi greco, al modo di Archimede......Page 33
Esercizi......Page 35
2.1 Prime formule di quadratura......Page 38
2.2 La formula di Simpson......Page 44
2.3 Logaritmi......Page 50
2.4 Arcotangente......Page 53
2.5 Un esempio un po’ difficile......Page 55
2.6 Lunghezza di una curva......Page 58
Dimostrazione del teorema 2.1......Page 59
Dimostrazione del teorema 2.2......Page 60
Dimostrazione del teorema 2.4......Page 62
Dimostrazione del teorema 2.5......Page 63
Esercizi......Page 65
3.1 Sul metodo di bisezione......Page 68
3.2 Il numero e......Page 71
3.3 Pi greco......Page 73
3.4 Funzioni inverse......Page 75
3.5 Ricerca di tutte le radici......Page 77
3.6 Radici quadrate......Page 79
3.7 Il metodo di Newton......Page 85
3.8 Il metodo delle secanti......Page 93
Esercizi......Page 96
4.1 Introduzione ed esempi semplici......Page 98
4.2 Istogrammi......Page 105
4.3 Interpolante lineare a tratti......Page 112
4.4 Zoom......Page 115
4.5 Funzione e funzione primitiva......Page 132
4.6 Campionamento e grafico con passo adattabile......Page 135
4.7 Progettazione di curve......Page 141
Esercizi......Page 145
5.1 Asteroidi e scarabei......Page 153
5.2 Strofoide e concoide......Page 155
5.3 Curve parametriche......Page 158
5.4 Clotoide......Page 160
5.5 Rullette delle coniche......Page 161
5.6 Curve dedotte da altre curve......Page 168
5.7 Campionamento adattabile......Page 170
5.8 Linee di livello......Page 172
Esercizi......Page 176
6.1 Somme parziali di una serie numerica......Page 183
6.2 Dalla sperimentazione numerica alla dimostrazione matematica: un esempio......Page 189
6.3 Algoritmi per calcolare la funzione esponenziale......Page 191
6.4 Algoritmi per calcolare le funzioni seno e coseno......Page 194
6.5 Polinomi di Taylor e funzioni analitiche......Page 197
6.6 Serie di potenze e funzioni di Besse!......Page 204
Esercizi......Page 208
A.2 Le proprietà commutativa e associativa della somma......Page 213
A.3 Propagazione degli errori di arrotondamento: il calcolo di lim (1+1/n)n......Page 217
A.4 Errori di arrotondamento e dilatazioni di scala: ancora lo zoom......Page 223
Presentazione del dischetto......Page 227

Citation preview

Stefano Campi è professore associato di Istituzioni di

Matematica all'Università di Firenze; si occupa di

equazioni alle derivate parziali e di problemi inversi. Massimo Picardello è professore di Analisi matematica

all'Università di Roma di Tor Vergata; il suo campo di ricerca è l'analisi armonica.

Giorgio Talenti è professore di Analisi matematica

all'Università di Firenze; la sua attività scientifica è

dedicata alle equazioni alle derivate parziali.

PROGRAMMA DI MATEMATICA, FISICA, ELETTRONICA

Collezione diretta da Sergio Carrà, Emilio Gatti, Francesco Gherardelli, Luigi Radicali, Giorgio Talenti

Mario Ageno, Elementi di fisica T. M. Apostol, Calcolo Vol. l Analisi l

Vol. 2 Geometria

Vol. 3 Analisi 2

Scipione Bobbio e Emilio Gatti, Elementi di elettromagnetismo Max Born, Fisica atomica Stefano Campi, Massimo Picardello e Giorgio Talenti, Analisi matematica e calcolatori Vito Cappellini, Elaborazione numerica delle immagini Francesco Carassa, Comunicazioni elettriche Sergio Carrà, Termodinamica: aspetti recenti e applicazioni alla chimica e all'ingegneria P. A. M. Dirac, I princìpi della meccanica quantistica

Albert Einstein, Il significato della relatività Enrico Fermi, Termodinamica

Bruno Ferretti, Le radici classiche della meccanica quantica Giorgio Franceschetti, Campi elettromagnetici Giovanni Gallavotti, Meccanica elementare

Enrico Giusti, Analisi matematica l

Enrico Giusti, Analisi matematica 2

Hermann Haken e Hans C. Wolf, Fisica atomica e quantistica

Werner Heisenberg, I princìpi fisici della teoria dei quanti Gerhard Herzberg, Spettri atomici e struttura atomica David A. Hodges e Horace G. Jackson, Analisi e progetto di circuiti integrati digitali Charles Kittel, Introduzione alla fisica dello stato solido Charles Kittel e Herbert Kroemer, Termodinamica statistica Serge Lang, Algebra lineare Giorgio Letta, Teoria elementare dell'integrazione P.F. Manfredi, Piero Maranesi e Tiziana Tacchi, L'amplificatore operazionale Jacob Millman, Circuiti e sistemi microelettronici Jacob Millman e C. C. Halkias, Microelettronica R. S. Muller e T. I. Kamins, Dispositivi elettronici nei circuiti integrati Athanasios Papoulis, Probabilità, variabili aleatorie e processi stocastici Wolfgang Pauli, Teoria della relatività Giovanni Prodi, Analisi matematica Antonio Ruberti e Alberto Isidori, Teoria dei sistemi Walter Rudin, Analisi reale e complessa H. H. Schaefer, Introduzione alla teoria spettrale

Edoardo Sernesi, Geometria l

I. M. Singer e J. A. Thorpe, Lezioni di topologia elementare e di geometria

W. V. Smith e P. P. Sorokin, Il laser

Giovanni Soncini, Tecnologie microelettroniche

Guido Tartara, Teoria dei sistemi di comunicazione Bruno Touschek e Giancarlo Rossi, Meccanica statistica

STEFANO CAMPI MASSIMO PICARDELLO GIORGIO TALENTI

ANALISI MATEMATICA

E CALCOLATORI

q�

-

BOLLATI BORINGHIERI

Prima edizione ottobre 1990 © 1990 Bollati Boringhieri editore s.p.a., Torino, corso Vittorio Emanuele 8 6 I diritti d i memorizzazione elettronica, d i riproduzione e d i adattamento totale o parziale con qualsiasi mezzo (compresi i microfilm e le copie fotostatiche) sono riservati Stampato in Italia dalla NUOVA OFLITO di Mappano (To)

CL

74-9298-7

ISBN

8 8-339-5461-7

Analisi matematica e calcolatori / Stefano Campi, Massimo Picardello, Giorgio Talenti. -Torino

Bollati Boringhieri, 1990 227 p. ; 24 cm. + l floppy disk. - (Programma di matematica, fisica, elettronica) l. CAMPI, Stefano Il. PICARDELLO, Massimo III. TALENTI, Giorgio

L ANALISI MATEMATICA. Esercizi. Automazione

CDD 515.0285

(a cura di 5. & T.

.

Torino)

Indice

Prefazione, 7

4 Grafici di funzioni, 96

4.1 Introduzione ed esempi semplici,

l Campionamenti, Il l. l

4.2 Istogrammi,

Considerazioni introduttive,

1.2 Funzioni definite a tratti,

15

1.3 Polinomi,

1.4 Funzione di Gauss,

13

4.3 Interpolante lineare a tratti,

11

4.4 Zoom,

19

4.7 Progettazione di curve,

25 27 Fibonacci, 30

Esercizi,

1.5 Successioni in forma chiusa, La successione di

1.8 Pi greco, al modo di Archimede, Esercizi,

113

33

31

143

2.2 La formula di Simpson, 2.3 Logaritmi,

48

2.4 Arcotangente,

42

51

2.5 Un esempio un po' difficile, 2.6 Lunghezza di una curva, Appendice, Esercizi,

63

57

156

3.1 Sul metodo di bisezione,

69 71

3.2 Il numero,

3.4 Funzioni inverse,

73

3.5 Ricerca di tutte le radici, 3.6 Radici quadrate,

77

Esercizi, 94

66

75

83 secanti, 91

3.7 Il metodo di Newton, 3.8 Il metodo delle

56

53

159

166 168

5.6 Curve dedotte da altre curve, 5.7 Campionamento adattabile, 5.8 Linee di livello, Esercizi, 174

170

6 Serie, 181

6.1 Somme parziali di una serie numerica,

181

6.2 Dalla sperimentazione numerica alla dimostrazione matematica:

un esempio, 187 6.3 Algoritmi per calcolare la funzione esponenziale,

6.4 Algoritmi per calcolare le funzioni seno e coseno,

3 Radici, 66

3.3 Pi greco,

158

5.5 Rullette delle coniche,

36

133

5.1 Asteroidi e scarabei, 151 5.2 Strofoide e concoide, 153 5.4 Clotoide,

2.1 Prime formule di quadratura,

139

5 Curve, 151

5.3 Curve parametriche,

2 Integrali, 36

110

96

4.5 Funzione e funzione primitiva, 130 4.6 Campionamento e grafico con passo adattabile,

1.6 Successioni per ricorrenza,

l. 7

103

6.5 Polinomi di Taylor e funzioni analitiche, 6.6 Serie di potenze e funzioni di Besse!, 202 Esercizi,

206

A Errori di arrotondamento, 211 A. l L'aritmetica del calcolatore, 211

195

189 192

A.2 Le proprietà commutativa e associativa della somma,

211

A.3 Propagazione degli errori di arrotondamento: il calcolo di

lim (l+ !In)", 215 A.4 Errori di arrotondamento e dilatazioni di scala: ancora lo zoom,

Presentazione del dischetto, 225

221

Prefazione

Questo libro è stato scritto per studenti e studiosi che, stati o essendo alle prese con l'analisi matematica di corsi universitari tradizionali, desiderano acquistare maggiore familiarità con questa materia. Il libro è una rassegna di alcune nozioni dell'analisi matematica,fra le più semplici e importanti: integrali, serie, equazioni algebriche o trascendenti, grafici di funzioni, curve. Il punto di vista è del tutto elementare, sebbene non sempre la trattazione parta da zero. Due sono i motivi conduttori. Uno è mettere bene in chiaro che svariati procedimenti dell'analisi matematica-definizioni, dimostrazioni di enunciati- sono non solo necessità o abbellimenti della teoria-garanzie di coerenza, completezza o chiarezza ma anche dei veri e propri metodi di calcolo. Un esem­ pio tipico è la definizione di integrale- quella più sem­ plice, alla Riemann- la quale può diventare, dopo pochi ritocchi, una vera e propria formula di quadratura, cioè un modo per calcolare effettivamente degli integrali. Così pure il metodo delle bisezioni, spesso usato per dimostrare teoricamente l'esistenza di radici di equazioni, è al tempo stesso un'eccellente strategia per calcolare realmente, con l'accuratezza che si desidera, radici diffic ili. E così via -gli esempi in proposito sono l'ossatura di questo volume. L'altro leitmotiv è l'invito alla sperimentazione numeri­ ca. La sperimentazione numerica può aiutare considerevol­ mente l'analisi matematica. Essa consente di toccare con mano degli oggetti, che la teoria adombra soltanto -la real­ tà si rivela talvolta diversa dall'aspettativa, com'è noto! Aiuta a distinguere formule veramente buone da altre, im­ peccabili ma meno utili. Può addirittura suggerire una strada giusta, oppure un teorema imprevisto- molti punti nel seguito spiegheranno a tutto tondo quanto vogliamo qui dire.

Pochi i teoremi convenzionali. Grosso modo, il libro è una collezione di esempi (facili o difficili), osservazioni (sostanziali o marginali), esercizi (semplici o complicati), problemi (risolti o da risolvere): insomma esperimenti di analisi matematica. Difficilmente questi esperimenti potreb­ bero essere fatti con carta e matita soltanto, senza uno spro­ porzionato dispendio di tempo ed energie. Strumento adatto è un calcolatore, anche piccolo, programmabile con un lin­ guaggio ad alto livello (per esempio, un calcolatore perso­ nale)- il/ettore dovrebbe averne uno a disposizione. Calcolatore e occorrente per comunicare con esso un linguaggio di programmazione - sono nominati quasi dap­ pertutto nel seguito. Forse questo libro potrebbe insegna­ re al principiante qualcosa anche in proposito; attenzione però: calcolatori e linguaggi di programmazione sono qui considerati un mezzo per fare dell'analisi matematica, non un oggetto di studio. Identica avvertenza vale circa l'analisi numerica, nella quale il libro sconfina senza addentrarsi ve­ ramente. L'analisi numerica è anche un'arte. Entrare nel vivo di essa è fra gli scopi non di questo libro, ma di al­ tri più specializzati- per esempio, F. Acton, Numerica! Me­ thods that Work (Harper & Row Publishers, 1970), un testo eccellente. L'esposizione si attiene, ogniqualvolta sia possibile, allo schema seguente. a) Formulazione del problema: elenco di dati, precisazione di un obiettivo, motivazioni e applicazioni. b) Indagini preliminari: dove la soluzione deve essere cer­ cata, quali proprietà possiamo attenderci da essa? c) Messa a punto di un algoritmo: presentazione, discussione di un criterio di arresto, stima dell'errore. d) Programmazione dell'algoritmo. l programmi sono scritti in BASIC. Nonostante i suoi li­ miti e grazie in parte agli ammodernamenti, questo linguag­ gio sembra sufficiente per esperimenti di analisi materna-

8

Prefazione

tica elementare; è facile da imparare e comodo, soprattutto quando lo scopo è provare e riprovare. Di massima i programmi sono tagliati strettamente su misura; ampiamente commentati, ma ridotti all'essenziale. Lo stile è volutamente disadorno: ornamenti non indispen­ sabili e finezze di programmazione sono di proposito trascu­ rati quasi sempre, affinché il nocciolo del programma -l'algoritmo, la matematica che sta dietro-risalti sugli accessori. Fanno eccezione i programmi del capitolo 6, che imitano meglio un software à la page. Il lettore, che desidera documentarsi sulle questioni di analisi matematica discusse in questo volume, può con­ sultare utilmente T. Apostol, Calcolo , voli. l e 3 (Borin­ ghieri, 1977)- uno dei migliori libri sull'argomento oggi in commercio, al quale il presente si uniforma in più punti.

Il libro è soltanto un assaggio e non ha alcuna pretesa di completezza: gli argomenti trattati potrebbero essere ul­ teriormente approfonditi e altri importanti argomenti dell'a­ nalisi elementare (ad esempio, equazioni differenziali, pro­ cessi iterativi, massimi e minimi, serie di Fourier, funzioni di più variabili) sono stati esclusi. Qualche lacuna potrebbe essere colmata dai lettori interessati e divenuti esperti, altre forse da un futuro libro. Gli autori ringraziano la casa editrice Bollati Boringhieri per aver voluto pubblicare il presente volume. STEFANO CAMPI

MASSIMO PICARDELLO

GIORGIO TALENTI

Analisi matematica e calcolatori

Capitolo l Campionamenti

1.1 Considerazioni introduttive

I modi con cui ci si può rendere conto dell' andamento e di propriet à di una funzione sono usualmente due: attraverso una tabella di valori (campionamento) oppure per mezzo di un grafico. In questo capitolo ci occuperemo del campionamento di una funzione. I grafici saranno oggetto del capitolo 4. Supponiamo di avere una funzione f (x) di una varia­ bile x definita in un intervallo [a, b]. Campionare f signi ­ fica: a ) scegliere nell 'intervallo di definizion e n + l punti xo , x,, . . . , Xn, che chiameremo nodi; b ) calcolare i valori Y o , y,, . . , Yn che f assume nei punti prescelti; questi valori sono i cosiddetti campioni della funzione; c ) costruire una tabella dove si riconosca la corrispondenza tra nodi e cam­ pioni . Illustriamo con vari esempi come si può procedere . Il primo esempio che consideriamo riguarda una funzione data in forma chiusa . Ciò significa (grosso modo ) che la funzione è assegnata mediante una formula, ossia che i suoi valori possono essere calcolati attraverso un numero finito di operazioni aritmetiche e /o un certo numero di funzioni cosiddette elementari . Supponiamo, tanto per d irne una, che la funzione sia: .

[ 1 . 1] f (x) = 8x( l - x) nell 'intervallo O :::; x :::; l . Si tratta appunto di una funzione in forma chiusa, perché per passare da x a /(x) occorre eseguire le operazioni indicate a destra nella [ 1 . 1 ] .

L a scelta che s i fa usualmente consiste nel prendere i nodi x o , x,, . . . , Xn equispaziati . Questo per semplicit à algoritmica, quando non vi siano particolari ragioni per procedere diversamente . In altri termini, in generale si considera una progressione aritmetica da a fino a b con

ragione

(b - a)j n , cioè si pone: k Xk = a + (b - a ) - , k = 0, 1, 2, . . . , n . n

Quanto a n, il numero dei nodi può essere scelto sulla base di elementi quali le capacit à di calcolo o l 'esigenza di precisione . Nel caso in esame scegliamo, per esempio, n = 10; avremo dunque:

xo = O, x, = O. l , x z = 0.2, . . . , x9 = 0.9, xw = l . [ 1 .2] Usando la formula [ l . l] calcoliamo: Y o = f (xo ), Yl = f (x ! ), Yz = f (x z ), . . . , Yw = f (xw ) e scriviamo i risultati nel modo seguente : x

y

o 0. 1 0.2 0.3 0.4 0.5 0. 6 0. 7 0.8 0.9 l o 0. 72 1.28 1 . 68 1 .92 2 1 .92 1 . 68 1 .28 0. 72 o

Nella prima riga sono riportati i nodi [ 1 .2]; nella seconda i corrispondenti campioni . Si è così costruita una tabella della funzione [ 1 . 1 ] . Un semplice programma che fornisce l a tabella in que­ stione potrebbe essere il seguente: IO FOR K = O TO IO 20 X = K/10 : Y = 8*X*( l -X) 30 PRINT "X =" X , "Y=" Y 40 NEXT K 50 END

Un programma meno rigido del precedente, che si presta a tabulare una generica funzione - data in forma chiusa su un generico intervallo - e che permetta volta per volta la scelta del numero dei punti del campionamento, potrebbe essere il codice FUN Z l .

12

Capitolo prim o

Nome Scopo Dati Risultato Algoritmo

10

FUNZl Campionare una funzione data in forma chiusa. Due numeri a e b; una funzione 1. definita nell'intervallo [a, b]; un intero n. La successione dei valori di l negli ( n + l ) punti equidistanti che cominciano in a e finiscono in b. Definire h = (b- a)/n; per k = O, l , 2, , n definire Xk = a + hk, quindi calcolare il valore della funzione 1 nel punto xk. . . .

Introdurre la funzione . Scrivere a destra de ll ' = un ' espressione

DEF FNF ( X ) =

:

chiusa , non troppo lunga .

20

A =

30

PRINT 11numero dei campion i " i

Introdurre gli estremi del l ' interval lo .

B =

Sceg l i ere il numero de i punt i , in cui la funzione deve essere calcolata

INPUT N

40

H = ( B-A ) /N

50

FOR K=O TO N

60

X = A + H*K

Ascissa di un o dei punti , i n c u i la funzione deve essere calcolata .

70

Y = FNF ( X )

Calcolare la funzione nel punto , precedentemente sce l to .

BO

PRINT K ; TAB ( 10 ) X ; TAB ( 2S ) Y

Mostrare i risultati .

90

NEXT K

100

END

Definire il pass o , con cui l ' interval l o deve essere scand i t o .

Fine del programma .

In alcune situazioni la funzione è data sì in forma chiusa ma, a differenza dell 'esempio precedente, questa forma è un po ' complicata; può essere necessario allora spezzare il calcolo della funzione in varie tappe. Consideriamo ad esempio il seguente problema pratico. Supponiamo che il serbatoio di gasolio di un 'abitazione sia un cilindro circolare retto, di lunghezza l e di diametro d (en­ trambi noti ), interrato orizzontalmente. Si ha la possibilit à di misurare il livello del gasolio - chiamiamolo h ad esem­ pio introducendo una stecca (fig. 1 . 1 ). Si vuole sapere quanti litri di gasolio sono contenuti nel serbatoio. Si può dimostrare, usando il calcolo integrale, che il volume del gasolio presente nella cisterna è dato dalla formula: -

d2l v=2 [arctg yfhid 1="hfd - Jo- hj d)hjd ( l - 2hjd)] .

[ 1 .3 ]

Nella pratica occorre una tabella che a una scala d i valori di h associa la corrispondente scala di valori di V. Si trat­ ta cioè di tabulare V in funzione di h, nell' intervallo O :::; h :::; d. Per fare questo si usa la [ 1 . 3 ] , ma si considera il secondo membro come funzione composta. Le funzioni composte sono ricette che permettono di fabbricare funzioni relativamente complicate combinando fra loro funzioni più

semplici. Nel caso nostro il legame tra decomposto così:

V

e

h

può essere

t= l - 2hjd ; v,= arctg v2=v,-

d2l



;

�v'l=t2;

V=2V2.

Un programma ad hoc potrebbe essere il seguente:

l O INPUT "LUNGHEZZA"; L 1 2 INPUT "DIAMETRO" ; D 20 INPUT "PA SSO" ; DH 30 FOR H = O TO L STEP DH 40 T=I -2*H ID 42 V=ATN(SQR(( l -T)/( l +T))) 44 V=V- .5*T*SQR( l -T* T) 46 V=V*D*D*L/2 50 PRINT "H=" H, "V=" V 60 NEXT H 70 END

Introdurre la lunghezza della "cisterna e il suo diametro Scegliere il passo del campionamento Le istruzioni 4 0-46 servono per spezzare il calcolo di V in quattro fasi più semplici

Mostrare i risultati

Campionamenti

Il codice FUNZ2 generalizza lo schema precedente e si applica quando il calcolo di una funzione richiede operazioni articolate.

d

si trova la variabile indipendente. Si tratta cioè di funzioni definite a tratti. Come esempio di funzione definita a tratti consideri­ amo l'IRPEF, Imposta sul Reddito delle Persone Fisiche. Dalle istruzioni relative al Mod. 740 si desume la seguente definizione della funzione f(x), dove x è il reddito e f(x) l ' imposta da pagare (entrambi espressi in lire pesanti): Reddito x fino a 6 000 da 6 000 a 1 1 000 Il 000 a 28 000 da da 28 000 a 50 000 da 50 000 a l 00 000 da l 00 000 a ! 50 000 da ! 50 000 a 300 000 da 300 000 a 600 000 oltre 600 000

Figura l.l

1.2 Funzioni definite a tratti

Capita spesso di incontrare funzioni che sono definite non da un'unica formula ma da più formule. Per calcolarne i valori si passa da una formula all 'altra a seconda di dove

Imposta dovuta l(x)

1 2 % di x 720 + 22 % di (x- 6 000) l 820 + 27 % di (x- Il 000) 6 4 1 0 + 34 % di (x - 28 000) 1 3 890 + 4 1 % di (x- 50 000) 34 390 + 48 % di (x- 100 000) 58 390 + 53 % di (x- ! 50 000) 1 37 890 + 58 % di (x- 300 000) 3 1 1 000 + 62 % di (x- 600 000)

La definizione della funzione f(x) può essere analizzata in dettaglio nel modo seguente.

FUNZ2

Nome Scopo Campionare una funzione. Dati Due numeri a e b; un intero un procedimento per calcolare il valore di una funzione l in ogni punto x dell'intervallo [a, b]. Risultato I valori di 1 negli (n + l ) punti equidistanti, che cominciano in a e finiscono in b, sono calcolati, memorizzati e mostrati. definire x k = a + hk, calcolare il valore della funzione l nel punto x k e per k = O , l, 2, Algoritmo Definire h = (bregistrare tale valore nel posto numero k di una lista.

n;

a)/n ;

10

...,n

Estremi de ll ' i nterva l l o .

: B=

A =

11

Numero d e i punti , i n c u i la :funzi one deve essere calcolata .

20

PRINT "numero dei campioni

30

DIM Y ( N )

Lista, destinata ad ospitare i campioni della fwtzion e .

40

H = ( B-A ) /N

Passo , con c u i l ' interval lo deve essere scand i t o .

50

FOR K=O TO N

60

X = A + H*K

100

y =

;

INPUT N

Asci ssa de l punto , in c u i la funzione deve essere calcolata .

Valore della funzione ne l punto

x



Inserire fra la riga 60

e la riga 100 i s truzioni adatte a calcolare tale valore . =

110

Y(K)

120

PRINT K ; TAB ( 10 ) X ; TAB ( 25 ) Y

130

NEXT K

150

END

Y

13

Memorizzare il campi one trovato. Mostrare i risultati .

Fine del programma .

14

Capitolo primo

Quindi il calcolo di f(x) nel punto x consiste:

Si assegnano due insiemi di dati: a) x( l ), x(2), . . . , x(n), le soglie che delimitano gli scaglioni di reddito; b) m(O), m( l ), . . . , m( n), le aliquote che indicano il modo con cui la f(x) cresce in ciascuno scaglione di reddito. Più precisamente f(x) può essere espressa con la formula: /(x) = f(x(k))+(x - x(k))m(k) [ 1 .4] se x(k) � x� x(k + l ) per qualche k fra O e n - l, oppure se x > x(n) dove si pone x(O) = O.

a) nell'individuare lo scaglione [x(k), x(k +l)] cui x appar­ tiene; b) nell 'usare la formula [ 1 .4] . Preliminare a tutto è evidentemente la determinazione di /(x( l )), f(x(2)), . . . , f(x(n)), che può essere realizzata mediante un procedimento di quelli detti di tipo ricorsivo (o induttivo ). Tali procedimenti si incontrano spesso in Matematica e saranno usati anche qui in vari contesti. Nel caso in esame il procedimento può essere descritto così:

Nome IRPEFI Dati Un intero n (il numero delle soglie di reddito); n numeri n) (le soglie che determinano gli scaglioni di reddito); l numeri n) (le aliquote che stabiliscono come cresce l' imposta entro ogni scaglione di reddito); un numero (il reddito sul quale si vuole calcolare l'imposta). Risultato L'imposta y sul reddito Algoritmo Definire = Definire = max < Definire f nel modo seguente: f se l, . ,n :

n+

m(O), m( l), . . . , m( x x. x(O) O. k {i = O, . . k

k = O, f = 2)x(i) - x( i - l ))m(i - l ) i= l

lO

READ

20

OHI

30 32 34 36 40 42 44

N

FOR K=O TO N. READ I·I(K) NEXT K

}

Leggere ne ll ' i struzione 300 i valori delle sog l i e di reddi to n . 1,2 ,

}

INPUT " reddito " ; x

64 70

F= O

76

,n

Chiedere il redd i t o , su cui calcolare l ' i mposta .

}

BO TO K F=F+(X(I )-X(I-l) )•M(I-1)

IF K=O THEN FOR I = l

. • •

Leggere nel l ' i struzione 400 i valori delle a l i quote .

FOR K=N TO O STEP -l IF X(K) P

THEN 60

di d è s p , i l quadrato di d è > p . Nel primo c aso , tornare al l ' ietru= zione 32 e continuare . Nel secondo caso , il lavoro fatto garantisce

che nessun intero dispari , fra que l l i che sono � 3 e i l cui quadrato

è < p , divide p ; omettere ulteriori mosse ed enunciare la conc lusione 60.

40

GOTO 32

50

PRINT

52

END

u

di visibile per "

60

PRINT " primo"

62

END

D

Campionam enti



Pè divisibile per D

(se tali interi primi esistono; altrimenti il valore di 1rin y è lo stesso che in x ). In formula: 1r(y )

21

=

1r(x ) + card

{p: p è

primo, x

< p ::::; y } .

Insomma, l ' algoritmo precedentemente presentato e la proprietà ora detta conducono al codice CAMGAUSS, per il campionamento della funzione di Gauss. Come la definizione [ 1. 12] dice e un buon campiona­ mento suggerisce con convincente evidenza, la funzione di Gauss è una funzione monotona crescente, costante a tratti, continua a destra; i punti di discontinuità della funzione di Gauss sono tutti e soli quelli la cui ascissa è un intero primo, i valori della funzione di Gauss sono tutti i numeri interi. Sia k un intero 2: l . Conseguentemente alle suddette pro­ prietà, { x : 7r(x ) = k } , insieme dei punti x su cui la funzione

di Gauss prende il valore k, è un vero e proprio intervallo, non vuoto e chiuso a sinistra. Inoltre l 'estremo sinistro di questo intervallo è un numero primo. Se poniamo:

p(k)

=

min { x : 1r(x ) = k }

per

k=

1, 2, 3, 4 . . .

;

la successione p( l ), p(2), p(3), p(4 ), . . . (che potrebbe essere chiamata una selezione della funzione inversa di 1r) è esatta­ mente la successione di tutti i numeri primi. Questo discorso è, nonostante le apparenze, una ricetta concreta per la numerazione, cioè presentazione in elenco, dei numeri primi. In altri termini la ricetta suona così. Scandisci la successione dei numeri interi; ogni volta che incontri un primo p, calcola 1r(p) e assegna all 'intero primo p il numero d' ordine k = 1r(p) . Il lettore può facilmente con­ vincersi che la ricetta è tradotta dal codice PRIMI.

22

Capitolo primo

Nome Dati Risultato

FGAUSS Il numero x. Il valore che la funzione di Gauss ha nel punto x; cioè il numero degli interi primi, che sono minori o uguali a x.

10

INPUT " X = "

20

FG=O

Chi edere il numero x

x

Introdurre una variab i l e FG e inizializzarla come indicato . Questa variabi le è addetta a contare i numeri primi , che sono minori o ugua= li a x

30

Il p i ù p i ccolo numero primo è 2 . Dunque , se x < 2 , nessun numero primo

IF X < 2 THEN 100

è minore o uguale a x; andare all ' i struzione 100 32

FG=1

34

IF X - l ; n = l , 2, 3, . . . ) ,

dove il segno = vale se e solo se x = O. Dalla disuguaglianza precedente segue:

n n � = ( l - l jn 2 ) n _ _ > ( l + n ( - 1/nz)) -an - l n-l n- l In modo analogo può essere provata la decrescenza di osservi che

(dove il segno indica l 'elevamento a potenza. Altri sim­ boli vengono usati per lo stesso scopo ). Il programma che così si ottiene funziona egregiamente per valori non troppo grandi di N. Quando N è abbastanza grande, viceversa, i numeri prodotti sono poco attendibili. Si constata, ad esem­ pio, che i valori che si ottengono non costituiscono, da un certo momento in poi, una successione crescente, in con­ traddizione con quanto si è provato. La ragione di questo fenomeno risiede nella propagazione degli errori di arroton­ damento che la macchina compie nel calcolare le potenze. Il calcolo delle potenze non viene eseguito, di solito, in maniera puramente aritmetica; per la macchina l ' istruzione 40 equivale (grosso modo ) alla seguente : A

= l.

bn .

Si

Dunque, scelti m , n arbitrari, con m < n , si ha:

an < bn < bm , am < an < bn . Ciò significa che ogni termine della successione an è sempre minore di un qualunque termine della successione bn , il che implica la b ). Infatti:

a 1 = 2,

l + x/2 + ( l + xj2)xj2 = ( l + x/2) 2 •

Analogamente, se dividiamo l ' anno in n periodi di tempo uguali e supponiamo che la capitalizzazione degli interessi avvenga al termine di ciascun periodo, si otterrà che il montante alla fine dell' anno è:

hanno le seguenti proprietà: a) b) c)

dopo un anno, venga capitalizzato dopo i primi sei mesi. Dopo il primo semestre il montante sarà l + x/2 e alla fine dell ' anno:

b s < 2.986.

Infine:

da cui segue la c ). Una situazione concreta che fa intervenire la successione in esame è la seguente. Supponiamo di disporre di un milione e di depositarlo in banca a un interesse percentuale annuo x. Dopo un anno il montante (capitale più interesse ) sarà evidentemente l + x milioni. Supponiamo ora che l 'interesse maturato, anziché

40 A = EXP(K*LOG( l + 1/K)). Le operazioni indicate (EXP, LOG ) vengono eseguite con un grado di precisione che dipende dalla macchina; se K è molto grande, il fattore K amplifica l ' arrotondamento con cui è calcolato LOG( l + 1/K) in modo tale che questo er­ rore ha sul risultato un effetto non trascurabile. Questo in­ conveniente potrebbe essere eliminato soltanto introducendo prima della 40 uno speciale sottoprogramma per calcolare con dovuta accuratezza, superiore a quella fornita d 'ufficio, LOG( l + 1/K). Questi inconvenienti fanno sì che il campionamento della successione [ 1. 14], non accompagnato da opportuni accor­ gimenti, non è un buon modo per approssimare il limite

1 L'interesse de! I OO% è piuttosto irrealistico! Si osservi che questo modo di introdurre la successione [ 1 . 1 5 ] permette di intuire che essa è crescente.

Campionamenti

della successione, cioè il numero e. Risulta infatti da c) del teorema 1 . 1 che la differenza tra an e il suo limite decresce lentamente, cioè è dell 'ordine di l / n. Vale a dire che se si vuole approssimare e con un errore dell' ordine di w-6 si dovrebbe calcolare an per n = 3 000 000, numero per cui il calcolo di an è controproducente. È possibile calcolare a n in maniera puramente aritmetica e relativamente rapida: calcoliamo a n per quei valori di n che sono potenze di 2. Sia dunque n = 2m (dove m è un intero) e cominciamo a calcolare: l l+­ n (con un' addizione e una divisione); poi facciamo il quadrato di questo primo risultato; quindi facciamo il quadrato di questo secondo risultato e così via m volte. Alla fine abbia­ mo proprio a n . Con questo procedimento si possono calco­ lare rapidamente valori di an con n relativamente grande e ottenere così approssimazioni del numero e, le quali risentono soltanto degli arrotondamenti che la macchina effettua nel calcolo di prodotti, quozienti e somme. Purtrop­ po, però, questo procedimento amplifica gli errori di arroton­ damento e fornisce risultati non migliori dei precedenti. Per una dettagliata discussione comparativa, si veda il para­ grafo 3 «Errori di arrotondamento» dell 'Appendice. 1.6 Successioni per ricorrenza

Un modo usato frequentemente per definire certe succes­ sioni è quello ricorsivo. Una successione è definita per ricor­ renza quando è assegnato il primo termine (o i primi k ter­ mini) della successione stessa e una ricetta per calcolare ogni altro termine per mezzo del precedente (o dei precedenti k). Le successioni per ricorrenza sono esempi di processi itera­ tivi, che descrivono sistemi i cui stati dipendono soltanto da un certo numero di stati precedenti. Fra i processi iterativi si Codice per calcolare in modo nai'f la successione dei fattoriali: l O PRINT "FIN DOVE VUOI ARRIVARE"; 20 INPUT N 30 F = l 40 FOR K = l TO N 50 F = K*F 60 PRINT K , F 70 NEXT K 80 END

27

possono includere tante situazioni disparate, dalle equazioni differenziali all ' algoritmo euclideo del Massimo Comun Di­ visore. Esempi semplici sono già stati presentati nei para­ grafi 2 e 3. Anche la successione [ 1 . 1 3] può essere definita per ricorrenza. Infatti la [ 1 . 1 3 ] è tale che a o = O, a n = an- l + n per n 2:: l . Queste due condizioni, secondo quanto si è detto prima, definiscono per ricorrenza la successione in questione. Pro­ prio queste condizioni permettono di usare un metodo alter­ nativo per il campionamento della successione, che può es­ sere messo in codice nel modo seguente. 1 0 PRINT '"FIN DOVE VUOI ARRIVARE"; 20 INPUT N 30 A = O 40 FOR K = l TO N 50 A = A + K 60 PRINT K , A 70 NEXT K 80 END

Come secondo esempio di successione definita per ricor­ renza consideriamo la sequenza dei fattoriali. Il fattoriale di un numero naturale n che si indica con n ! , è definito come: ,

n ! = l · 2 · 3 . . . (n - 2) · (n - l ) · n,

se

n 2:: l e da 0! = 1 .

È chiaro che

n! = [(n - l ) ! ]n. Dunque la successione dei fattoriali è la successione definita per ricorrenza dalle seguenti relazioni:

{

Fo = l Fn = n Fn- 1

se

n 2:: l .

[ 1 . 1 6]

Un programma (un po ' ingenuo, per un motivo che vedremo fra poco) per calcolare il fattoriale dei primi N numeri interi è il seguente.

{

Questo programma calcola i fattoriali da l a N. Chiedi quanto vale N. Introduci il valore iniziale di F. F è una variabile destinata a produrre successivamente il fattoriale di K, con K da l a N. Fai ciò che segue ponendo successivamente K= l , 2, . . . , N. Aggiorna F: moltiplica per K il valore corrente di F e conserva in F il risultato della moltiplicazione. Scrivi i risultati.

28

Capitolo primo

L' ingenuità di questo programma emerge quando si as­ segna a N un valore appena un po' grande: il programma infatti non è capace di fornire il fattoriale di numeri che oltrepassino una certa soglia. Per esempio, si può provare che

70! = 1 . 1 9785707 10 100 che è un numero che eccede le capacità di calcolo di qualunque macchina di medie prestazioni (in precisione singola). Si può ovviare a questo inconveniente con un programma che calcola il fattoriale già nella notazione esponenziale. Osserviamo a questo scopo che

cioè la successione dei logaritmi in base l O dei fattoriali, cresce abbastanza lentamente e può essere calcolata senza sforzo anche per grandi valori di n.

{

Ora, se poniamo:

si ha:

Ìn = parte intera di a n = mantissa di a n , cioè an

mn

-

Ìn ,

n! = 10m· l Qin '

dove il primo fattore è un numero tra l e 1 0 e il secondo dà l 'ordine di grandezza di n ! . D 'altra parte an può essere calcolato per ricorrenza in questo modo:

[ 1 . 17] I l programma che segue permette d i calcolare il fattoriale di n da l fino a valori relativamente grandi (diciamo 1 500). Si osservi che il programma è destinato a una macchina che conosce i logaritmi in una sola base diversa da l O (per esempio, i logaritmi naturali). Se si usa una macchina che conosce i logaritmi decimali il programma risulterà semplificato.

Codice per campionare la successione dei fattoriali da l a

1 500:

C è il fattore di conversione per passare dalla base di LOG, usata dalla macchina, alla base 1 0. Introduci il valore iniziale di L. L è una variabile destinata a produrre successivamente il logaritmo decimale dei fattoriali. Fai ciò che segue ponendo successivamente N = l, 2, . . . , 1 500. Aggiorna L secondo la [ 1 . 17]: aggiungi il logaritmo decimale di N al valore corrente di L e conserva in L il risultato dell'addizione. Calcola la parte intera e la mantissa del logaritmo. Stampa N e N! in notazione esponenziale.

10 C = LOG( 1 0) 20 L = O 30 FOR N = l TO 1 500 40 L = L+LOG(N)/C 50 I = INT(L) : M = L- 1 60 PRINT N, I O' M; " 1 0' " ;I 70 NEXT N 80 END

Se si volessero scrivere per esteso tutte le cifre che compongono n! (con n grande) si dovrebbero utilizzare altri accorgimenti per superare alcune difficoltà facilmente intuibili dal seguente esempio:

50! = 30 414 093 201 7 1 3 378 043 6 1 2 608 166 064 768 844 377 64 1 568 960 5 12 000 000 000 000

.

Riprendiamo le considerazioni sul numero e, e cerchiamo un metodo più efficiente per calcolarlo.

Un procedimento per il calcolo di una certa quantità dovrebbe articolarsi in due fasi distinte. La prima consiste nella messa a fuoco dei fatti matematici su cui basare un algoritmo appropriato. La seconda fase, in generale più facile, consiste nel descrivere minuziosamente l 'algoritmo in un codice opportuno. Nel caso in esame i fatti matematici che servono sono con­ tenuti nel seguente teorema: Teorema 1 .2

La successione Sn definita da: n

l

Sn = 2>kf o

o

Campionamenti

l 2 ) (l (n + l ) .' + n + 2 < é .

converge a e. Inoltre si ha:

2 l l+ O < e - Sn < ( n + 2) (n + l ) !

.

La dimostrazione del teorema può essere basata sulla formula di Taylor per la funzione esponenziale. Tale di­ mostrazione (e una di un teorema un po ' più generale) verrà data nel capitolo 6 riguardante le serie. Osserviamo che la successione Sn verifica:

l

Bn = Bn- 1 + 1 , per n 2: l n. e che inoltre l a successione l / n ! verifica a sua volta:

l l l = ;;: n! (n - l ) ! '

per n 2: l .

Riassumendo: a) la successione Sn può essere calcolata con il processo ricorsivo:

[ 1 . 1 8] b) un algoritmo per calcolare e con una data precisione é consiste nel calcolare Sn , dove n è il più piccolo intero tale che

--

Un codice ad hoc è il seguente:

I O INPUT "PRECISIONE"; EPS 20 N = O 30 A = l :S = A 40 N = N+ l 50 A = A/N 60 IF A* ( 1 +2/(N+2)) l 03 //3, per esempio n = 578 . Usando i l codice MS l (quello che fornisce ms(n) per un prefissato valore di n) si trova che:

ms(578) = 3 . 1 4 1 592 903 , che differisce da 7r = 3 . 1 4 1 592 654 per meno di un milionesi­ mo, in accordo con la previsione. Se invece si utilizzano le somme ls o rs il calcolo sarebbe meno spedito. Il teorema 2. 1 dice che rs(n) < e che

1r -

1r

1r


=EPS THEN 70

Incrementare il contatore , ogn i val t a che il valore attuale di

C=C'+1

T di ffere isce meno di eps dal valore preceden te . 140

Proseguire con le i teraz i on i , se il contatore segna meno di 2 .

IF C < 2 THEN BO

200

PRINT " numero dei nod i " N ; TAB ( 25 ) " passo " H

210

PRINT " integrale ( valore attend i b i l e ) = " T

250

END

}

Il calcolo è immediato (perché basta usare l'espressione esplicita di f(x) e di una sua primitiva) e il risultato può essere scritto nella forma: a+b b-a [2. 1 0] 6 - f(a) + 4/ C -2- ) + f ( b) . Supponiamo ora che f sia una funzione sufficientemente regolare, ma non necessariamente un polinomio di secondo grado. Si può considerare il polinomio di secondo grado che interpola f nei punti a, (a + b)/2, b, cioè il polinomio di se­ condo grado che assume nei punti indicati gli stessi valo­ ri di f. Questo polinomio è univocamente determinato (si tratta di ricavare tre coefficienti disponendo di tre condizioni -

[

]

Hostrare i r i sultat i .

linearmente indipendenti) e la sua espressione è data da: 1 f(a)(x - b)(2x - a - b)+ f(b)(x - a) Pz (x) = ( b - a) 2 a+b (2x - a - b) - 4 /( -- )(x - a)(x - b) . 2 L' integrale di P2 (x) tra a e b è proprio [2. 1 0] . L a formula d i Simpson è del tipo:

[

b-a lar bf(x)dx = 6-

]

[f(a) + 4f( -a +-b ) + f(b)] + resto, 2

[2. 1 1 ]

cioè consiste nel rimpiazzare la funzione f con un polinomio

44

Capitolo secondo

di secondo grado che interpola f nel modo descritto e nell'approssimare l' integrale di f con l'integrale esatto del polinomio. In realtà la formula di Simpson si usa in un modo più flessibile; si fa una partizione di [ a, b] con i nodi:

Xk = a + hk, h = (b - a)/n, dove n è un numero intero fissato e si applica la formula [2. 1 1 ] a ogni intervallo [x k , Xk- d (fig. 2.3). Si conclude con la formula di Simpson:

( b f(x)dx = 6l ,(;n [f(xk - t ) + 4f ( Xk- 1 + Xk ) + f(xk )]

la

2

·

(x k - Xk- t ) + resto.

·

[2. 1 2]

In questa formula il resto è l 'errore che si commette quando si approssima l'integrale a primo membro con la somma a secondo membro. Dalle considerazioni precedenti si ha che il resto è uguale a zero se f è proprio un polinomio di secondo grado. Altrimenti il resto non è necessariamente zero e dipende dal numero dei nodi scelti e dalla regolarità di f. Una maggiorazione del resto - usabile quando si ha a disposizione una stima della derivata quarta di f - è data dal teorema 2.4 che segue. Incidentalmente si può osservare che le considerazioni precedenti sono analoghe a quelle che si potrebbero fare nel caso della formula dei trapezi. In quel caso, infatti, anziché polinomi di secondo grado che interpolano f in tre punti, si considerano funzioni lineari che interpolano f in due punti. Osserviamo che la somma a destra nella formula [2. 1 2] fa intervenire i valori di f in 2n + l punti: i nodi x0 , x 1 , , Xn e i punti di mezzo fra 4_uesti. Chiamiamo s(2n) la somma in questione, cioè:

(x. _ , + x. l /2

Figura 2.3

Formula di Simpson.

di m. Dalla formula [2. 13] risulta che

l

s(2n) = 3 (t(n) + 2ms(n)).

a+b ] [ a Xt s(4) = � [ ( f(a) + 4f ( � )) (x t - a)+ +b + (4 / C 1 ) + /(b)) (b - X t ) + /(X t ) (b - a)] , 2

l

[2. 14]

Nel caso particolare che qui consideriamo, in cui i nodi sono equispaziati, la [2. 1 3] si scrive più semplicemente:

[

h f(a) + f(b) n- 1

s(2n) = 3 +2

• • •

Dunque:

x

X;

+

2

L f(a + kh ) +

k=l

f f(a + (k - 1 /2)h)]

k=l

[2. 1 5]

in accordo con la [2. 14]. Il codice SIMPSON serve per il calcolo dell 'integrale con la formula di Simpson ed è basato sulla [2. 14] e sui codici visti nel paragrafo precedente. Il seguente teorema precisa l'annunciata stima dell'errore. Teorema 2.4 Supponiamo che la derivata quarta di f sia limitata da una costante M nell' intervallo [a, b] :

s(2) = 6 f(a) + 4/( -- ) + f(b) (b - a), 2

e così via. In generale s(m ) è definita solo per valori pari

Allora:

1 1 b f(x) dx - s(2n) a

l

:S

(b - a)s M 2880 4 n •

[2. 1 6]

cioè il resto della formù{a di Simpson [2. 1 2] è maggio-

Integrali

Nome Dati Risultato Algoritmo

SIMPSON Una funzione f; due numeri a e b, il primo minore del secondo; un intero n. La somma s(2n), che approssima l'integrale di f fra a e b (formula di Simpson). Calcolare la somma t( n) con l'algoritmo del programma TRA P l . Calcolare la somma ms(n) come nel programma MS l . Calcolare s(2n) con la formula: s(2n) = (t(n) + 2ms(n))/3.

10

D E F FNF ( X ) =

20

A=

40

H= ( B-A ) /N

52

50

X=B : F=FNF ( X ) oppure OOSUB 500

56

FOR I = l TO N-1

30

58

Definire la funz ione f . Rimpiazzare l ' istruzione 10 con una subrouti ne . s e una formula semp l i ce non è disponi b i l e . Definire gli estremi del l ' interval lo d ' integrazione .

: B=

Chiedere l ' intero n ( = metà de l numero dei nodi ) .

INPUT " n = " ; N

X=A :

F=FNF ( X ) oppure GOSUB 500

T=F T= ( T +F ) /2

IF N < =l THEN 66

60

X=A+ I * H : F=FNF ( X ) oppure GOSUB 500

62

T=T+F

54

NEXT I

66

T=H*T

70

MS=O

72

Calcolare la somma t { n ) con l ' algoritmo del programma TRAPL

FOR I=l TO N X=A+ { I - . 5 ) *H

74

I!S=l1S+F

76

Calcolare la somma ms ( n ) con l ' algeri tmo del programma MSl .

78

NEXT I

80

MS=H*MS

90

S= ( T +2*�1S ) /3

Calcolare s ( 2n ) .

95

PRINT " trapezi = " ; T , " ma = " ; MS

�lostrare t ( n ) e ms ( n ) .

PRINT " simpson = " ; S

Mostrare s ( 2 n ) .

1 50

END

1 00

45

Subroutine : i s truzioni per cal colare il valore della funzi one f in un punto . Rimpiazzare questa subroutine con 1 • i struzione lO

se una formula semp l i c e è dispon i b i l e . 590

500

F=

Valore d e l l a fun z i one f n e l punto

x.

RETURN

rata da:

(b - a) 5 M ' 1 80 (2n)4 dove 2n è il numero dei nodi coinvolti. Per la dimostrazione del teorema 2.4 si veda l 'Appendice ( p. 2 1 1 ). Applicazioni di questo teorema saranno considerate nei prossimi paragrafi, relativamente alla funzione logaritmo e alla funzione arcotangente. Facciamo ora un confronto, attraverso un paio di esempi, tra il comportamento della formula di Simpson e quella dei trapezi al variare del numero dei nodi (numero che viene raddoppiato successivamente). Un codice ad hoc è il codice TRASIM. Gli esempi faranno toccare con mano che la

formula di Simpson è effettivamente migliore della formula dei trapezi (in accordo con la teoria) quando si ha a che fare con funzioni molto regolari; invece la formula di Simpson non funziona granché meglio di quella dei trapezi se applicata a funzioni con qualche guaio. Esempio l Consideriamo la funzione: 2

f(x) = e - x , nell 'intervallo a = O, b = l. Si deve dunque calcolare:

fo' e_xz dx.

[2. 1 7 ]

46

Capitolo secondo

Nome Scopo Dati Risultato Algoritmo

TRASIM Rilevare il comportamento della formula dei trapezi e della formula di Simpson al crescere del numero dei nodi. Una funzione f; due numeri a e b, il primo minore del secondo; un intero p. Le somme t(n) (formula dei trapezi con n + l nodi equidistanti) e le somme s(n) (formula di Simpson con n + l nodi equidistanti) per n = 2, 4, 8, 1 6, . . . , 2P . a) Calcolare t( ! ) (la più semplice formula dei trapezi) con la formula: t( ! ) = (/(a) + f(b))(b - a)/2. b) Calcolare le somme ms(n) (formula del punto di mezzo) per n = l, 2, 4, 8, . . . , 22P - 1 . Usare allo scopo l'algoritmo del programma MS l . c) Calcolare t(2), s(2), t(4), s(4), t(8), s(8), . . . , t(2P), s(2P) ricorsivamente con le seguenti formule: t(2n) = (t(n)+ + ms(n))/2, s(2n) = (t( n) + 2ms(n))/3 (n =

l , 2, 4, 8, . . . , 2p- I ).

lO

DEF FNF ( X ) =

Definire la fwlZione integranda f .

20

A=

Definire gl i estremi de ll ' i ntervallo d ' integrazione .

25

Cancel lare lo schermo

30

INPUT " quante i te razion i " i P

50

N=l

: B=

Chiedere l ' intero p . Introdurre due variab i l i N &: H e inizial i zzarle come indi cato .

: H=B-A

N conta il numero dei nodi , H è il passo della partizione . 60

Inizial i z zare T come indicato . T è la variab i le addetta a produrre

T= ( FNF ( A ) +FNF ( B ) ) •H/2

la formula dei trapezi con N nodi equidistanti . 90

FOR I=l TO P

100

MS=O

102

FOR K=l TO N

104

Predisporre un ' iterazione in p tappe .

X=A+ ( K- . 5 ) •H : MS=MS+FNF ( X )

1 06

NEXT K

108

IIS=MS•H

120

N=2°N : H= ( B-A ) /N

130

T= ( T+MS ) /2

}

Calcolare la somma ms ( N ) con N nodi equidis tanti e conservare il risul tato ne lla variab i l e

MS .

Aggiornare N & H: ogni volta raddoppiare il valore di N e dimezzare il valore di H .

S = ( T+2"MS ) / 3

Aggiornare T &: S : i valori correnti d i queste variab i l i sono

rispettivamente la fonnula dei trapezi e la formula di Simpson con N nodi equi distanti .

140

PRINT

142 144

PRINT " numero dei nodi " N i TAB ( 25 ) " passo " H

180

Attendere che l ' operatore batta un tasto

190

NEXT I

PRINT " trapezi = " T :

PRINT "S impson = '' S

}

Mostrare i risultati .

200 END

Il codice TRASIM fornisce per l'integrale [2. 1 7 ] la tabella 2.2. Qual è l'affidabilità dei numeri della tabella 2.2? I teoremi 2.2 e 2.4 forniscono una risposta a questa domanda. Infatti si può dimostrare che, nell ' intervallo [0, l ] ,

l J"(x) l :S 2, l /(4 ) (x) l :=:; 1 2.

Dunque:

e

Integrali Tabella 2.2

n 2 4 8 16 32 64 1 28 256 512 1 024 2048 4096 8 1 92 1 6384 32768

s(n)

t( n)

.747 1 80429 .74685538 .746826 1 2 1 .746824258 .746824 1 4 1 .746824 1 33 .746824 1 33 .746824 1 33 .746824 1 33 .746824 1 33 . 746824 1 32 .746824 1 32 .746824 1 36 .746824 1 39 .746824 1 39

.73 1 370252 .742984098 .7458656 1 5 .746584597 .746764255 .746809 1 64 .74682039 1 .746823 1 97 .746823899 .746824075 .746824 1 1 8 .746824 1 28 .746824 1 34 .746824 1 37 .746824 1 39

Ad esempio, s(64) = 0.746824 1 3 3 dà un 'approssimazione dell 'integrale [2. 1 7] con un errore non superiore a 4 · w- 9 , cioè almeno sette cifre decimali elencate sono esatte, mentre t(64) = 0.746809 1 64 dà un 'approssimazione più modesta, con un errore non superiore a 4.07 w- S , che garantisce soltanto le prime tre cifre decimali. Questo sulla base dei teoremi. La realtà non si discosta troppo dalle previsioni. Si può dimostrare (come vedremo tra breve) che il valore esatto dell'integrale è proprio 0.746824 1 3 3 . La conoscenza di questo valore consente di fare osser­ vazioni analoghe su altre righe della tabella 2.2. Abbiamo qui l 'occasione per fare un 'importante con­ siderazione sulle divergenze tra teoria e pratica. I teoremi 2.2 e 2.4, se presi alla lettera, garantirebbero che s(n) e t(n), al crescere di n, diano approssimazioni sempre migliori dell'integrale. Le cose non vanno così. I numeri della prima colonna, a partire dal primo, tendono a miglio­ rare, poi si stabilizzano attorno al valore esatto, quindi si deteriorano. Ad esempio, l' ultimo valore s(32768) è peg­ giore di s(64). Analogamente il teorema 2.2 direbbe che t(32768) apwossima il. risulta�o � ?n un error� non sup erior� a 1 .55 w- 0 , mentre m realta gia la nona cifra decimale e sbagliata di sei unità. Questi fenomeni si spiegano così. I teoremi tengono conto soltanto degli errori del metodo e non degli errori che provengono dali' aritmetica del calcolatore. Questi ultimi errori di arrotondamento hanno un effetto trascurabile per piccoli valori di n ; sono invece preponderanti per grandi valori di n, quando il numero di operazioni aritmetiche necessarie per calcolare s(n) e t( n) diventa massiccio. -

-

47

Leggiamo comunque con evidenza su questo esempio che, in accordo con la teoria, la formula di Simpson è più rapida di quella dei trapezi, almeno nel caso di funzioni regolari. Il calcolo esatto dell 'integrale [2. 1 7] può essere fatto integrando per serie. La serie esponenziale permette di scrivere: + oo x 2n e - x2 = I: C - l t -1 ; n. n=O

li e- x2 dx = +f

quindi:

o

(- l )n n = O n ! (2n + l )

'

cioè

dove In è l a somma parziale n-ma della serie precedente, che conviene scrivere:

essendo a k = (- l ) k / k ! . Le somme parziali In soddisfano la relazione di ricorrenza:

e i termini a k la relazione:

Pertanto le somme parziali in questione possono essere calcolate con il seguente sistema di relazioni di ricorrenza:

{

ao = l , Io = ao ; an = - an- 1 ; In = In- l +

k

a : 2n l

(n = 1 , 2, 3 , . . . ) .

Questo schema si presta bene a essere codificato. Il codice che segue fornisce un valore di In che differisce dal valore esatto della serie certamente per meno di l o- 8 . Il criterio con cui l ' algoritmo codificato si arresta è basato sul teorema di Leibniz relativo alle serie a segno alterno. Grazie a questo teorema In differisce dalla somma della serie meno del termine an + J /(2n + l ) .

48

Capitolo secondo

Leggiamo su questo esempio che, nel caso di funzioni · non eccessivamente regolari, la formula di s impson può dare risultati non tanto migliori di quelli della formula dei trapezi.

IO N = O : A = l : I = A 20 N = N + l : A = -A/N : I = I + N(2*N + l ) 30 IF ABS(A) > l E - 08 THEN 20 40 PRINT I

Per comodità aggiungiamo il codice INTEGRAL più det­ tagliato, dove sono riassunte tutte le formule di quadratura viste finora e, in più, quella di Poncelet; queste formule sono confrontate tra loro. Il lettore interessato potrebbe ricostruire la teoria del metodo di Poncelet decodificando INTEGRAL. È opportuno sottolineare una peculiarità di questo pro­ gramma, che lo rende particolarmente maneggevole. La definizione della funzione integranda è richiesta dal pro­ gramma durante l ' esecuzione e non fa parte del programma stesso. Questo è reso possibile da accorgimenti di program­ mazione un po' delicati, su cui non insistiamo e che il lettore può approfondire studiando il testo del programma.

Esempio 2 Consideriamo la funzione:

f ( x) = �, -l, b = l.

nell' intervallo a = Il codice TRASIM per il calcolo di:

fornisce i risultati riportati nella tabella 2.3. Si osservi che in questo caso il teorema 2.2 e a maggior ragione il teorema 2.4 non sono applicabili perché /(x) ha una derivata seconda che non è limitata nell' intervallo in questione. Il valore esatto dell' integrale è noto ed è:



=

2.3 Logaritmi

La funzione logaritmo naturale può essere definita, sui numeri reali positivi, come quella funzione che vale zero per l e la cui derivata è l / Dunque il logaritmo naturale di x (che si indica comune­ mente con log è dato dalla formula

x=

x.

x)

1 .57079633.

La conoscenza di questo valore ci permette di osservare che i numeri della prima colonna non sono granché migliori di quelli della seconda.

log x

2 4 8 16 32 64 1 28 256 512 1 024 2048 4096 8 1 92 1 6384 32768

[2. 1 8]

Questa formula si presta egregiamente per calcolare logaritmi. Osserviamo infatti che la funzione integranda è l

f ( x ) = -x ;

Tabella 2.3

n

= !xl -u1 du.

s(n) 1 .33333333 1 .48803387 1 .54 1 79758 1 .56059459 1 .567 1 9884 1 .569526 1 1 1 .57034754 1 .5706377 1 1 .57074026 1 .5707765 1 1 .57078932 1 .57079385 1 .57079545 1 .5707960 1 1 .57079623

t( n) l 1 .3660254 1 .49785453 1 .54490957 1 .561 62652 1 .56755 1 2 1 1 .56964846 1 .5703904 1 .57065279 1 .57074558 1 .57077839 1 .57078998 1 .57079409 1 .57079553 1 .57079605

la derivata quarta di questa funzione

t(x ) = 24x-5 è minore di 24 sulla semiretta [ l , + oo . Quindi si può usare la formula di Simpson e il teorema 2.4 dice che l 'errore è

)

se

l log

x> le h

[l

l

x - s(2n) l ::; (x1 20- n1 4)5 , n- l

l

n

[2. 1 9]

l

s ( 2n ) = - - ( l + - ) + 3 2 x {; l + h k + 2 {; l + h(k - l /2) ] ---

'

[2.20]

dove h

= ( x - l )jn.

Integrali

Calcoliamo ad esempio log 2. Le formule precedenti di­ cono che log 2 = s(2n) + resto, dove

e

[

.!!_ � 't1 1 1 s (2n) = + 2 Ì: + ( 1 /2)/n l + 3n 4 k= l l + kj n k l k=

]

l l resto I :S 120 n4 " La tabella 2.4 mostra la stima del resto in funzione di n e consente di scegliere n stesso in modo che la formula di Simpson fornisca log 2 con la precisione desiderata. Ad esempio, n = 55 assicura che l 'errore è al di sotto di w-9 . L e considerazioni precedenti possono essere tradotte nel codice seguente: O REM Questo _ Stmpson.

programma calcola

J12 dxjx

con una formula di

1 0 N = 55 1 2 REM Il numero dei nodi coinvolti è 2N + l , l 'errore non può supe­ rare 0.0084 x N -4 . La scelta N = 55 assicura che l 'errore non supe­ ra l o-9 effettivamente. 30 S = 3/4 32 FOR K = l TO N- l 34 S = S + l /( 1 + K/N) 36 NEXT K 40 MS = O 42 FOR K = TO N 44 MS = MS + l /( 1 + (K- 1 /2 )/N) 46 NEXT K 48 S = (S + 2*MS)/(3*N) 50 REM Il valore di S , prodotto dal segmento 30-48, è il risultato di

l

una formula di Simpson 60 PRINT "Il logaritmo naturale di 2 è " 62 PRINT S 70 END

Il risultato è log 2 = 0. 693 14 7 1 8 1 , dove tutte le cifre deci­ mali scritte sono esatte. Descriviamo adesso un procedimento per calcolare il logaritmo di un qualunque numero x maggiore di uno. Si potrebbe usare la formula di Simpson [2.20] e così effettivamente conviene fare se x non è troppo distante da uno; ma non conviene seguire questa strada se x è molto grande, per non andare incontro a palesi inconvenienti. Il procedimento è basato sulla seguente proprietà dei logaritmi: log(xy) = log x + log y

49

Tabella 2.4

n

Stima del resto l / ( 1 20 n 4 )

5 IO 15 20 25 30 35 40 45 50

1 . 333E - 05 8.333E - 07 1 .646E - 07 5.208E - 08 2. 1 3 3E - 08 1 .028E - 08 5.553E - 09 3.255E - 09 2.032E - 09 1 .333E - 09

Stima del resto 1 / ( 1 20 n 4 )

n

9. ! 06E 6.430E 4.668E 3.470E 2.633E 2.034E 1 .596E 1 .270E 1 .023E 8.333E -

55 60 65 70 75 80 85 90 95 1 00

10 IO IO 10 IO IO 10 IO 10 Il

e sulla conseguenza di questa: log(a n ) = n log a, dove n è un intero. Procediamo così: a) introduciamo il numero x di cui vogliamo il logaritmo; b) se O < x < l usiamo la formula: l

log x = - Iog x e calcoliamo log l / x col procedimento che segue e che riguarda i logaritmi dei numeri maggiori di uno; c) se l :S x < 2 usiamo la formula [2. 1 8] e calcoliamo l ' in­ tegrale con la formula di Simpson [2.20] (come abbiamo fatto per calcolare log 2); d) se x 2' 2 scriviamo x nella forma esponenziale seguente:

[2.2 1 ]

dove n è un intero maggiore o uguale di zero e l :::; Xn < 2. Avvertiamo a questo proposito (e a proposito di quanto precede) che la scelta del numero 2 non è affatto obbligato­ ria, ma è suggerita da motivi di comodità: 2 è il più piccolo intero (dopo l ! ) per cui è facile dividere e il cui logaritmo è facile da calcolare. I numeri n, Xn della [2.2 1 ] sono univocamente determinati da x e possono essere calcolati in questo modo. Dividiamo x per l , 2, 4, 8, . . . , 2n , . . . e arrestiamoci non appena troviamo un numero n tale che la divisione fornisce un quoziente minore di due. Questo quoziente è il nostro Xn. Scritto x nella forma esponenziale [2.2 1 ] , il logaritmo di x si scrive : log x

=

log Xn + n Iog 2.

50

Capitolo secondo

Nome Scopo Dati

INTEGRAL Approssimare un integrale definito mediante varie formule di quadratura. Una funzione f (la funzione integranda); due numeri a e b, il primo minore del secondo (gli estremi dell'intervallo d'integrazione); un numero intero n (il numero dei nodi). Le somme ls(n) e rs(n), t(n) (formula dei trapezi), ms(n) (formula del punto medio), una formula alla Poncelet, s(2n) (formula di Simpson).

Risultato

-

6

REM • • • Ingresso di dati • • •

lO

PRINT " Introdurre l a funzione i ntegranda "

12

INPUT " f ( x ) = " ; Y$

14

DR IVE$ = " a : " : REM Spe c i ficare il drive dove memori zzare un programma aus i l iario

16

DRIVE$ = DR IVE$ +11 FUNZ IONE . BAS

16

OPEN DRIVE$ F O R OUTPUT AS

20

PRINT

22

CLOSE

24

CHAIN MERGE DRIVE$ , 30 , ALL

11

: REU Specificaz ione

( = indirizzo & nome ) de l programma aus i l i ari o

-

-

f fl

1/ l

l , " 30 DEF FNF ( X ) = " + Y$ l

30

REM La fwu i one entra in gioco qui

50

PRINT " Introdurre g l i estremi d ' integrazione "

52

INPUT " s i n i stro " ; A :

54

IF A < =B THEN 70 : REM L ' estremo sinistro � estremo destro

SWAP A , B : REM Scambiare A con B

70

PRINT " Numero dei nodi

72

N=INT ( N )

56

74

Questo segmento ab il ita i l calcolatore a ricev!_ re la de fi n i z i one della funzione nella forma di una stringa e a tradurre tale s tringa nel l ' is tr� zione

INPUT " destro " i B

11

:

;

INPUT N

I F N c l THEN N = l : REM I l numero dei nodi deve essere un i ntero � l

90 96

REM • + • Prime approssimazioni de ll ' integrale • • •

1 00

FRST=FNF ( A )

1 10

LS=FRST : RS=LAST : REM Iniziali zzazioni

: LAST=FNF ( B )

: REM Valori del l ' integranda nei terminal i

1 20

IF N e 2 THEN 1 50

1 30

SOMf.tA=O : REM Iniziali zzaz ione

1 32

FOR I=l TO N-1

134

1 36

-

PASSO= ( B-A ) /N

X=A+ I *PASSO : REM Nodi SOMMA = SOMMA + FNF ( X )

: REM Aggiornamento

1 36

NEXT I

140

LS=LS+S0!1MA : RS=RS+SOMMA : REM Aggiornamento

150

LS=LS*PASSO : RS=RS•PASSO : REM Aggiornamento

1 60

PRINT 11 Approssimazioni dell ' i ntegrale " : PRINT LS , RS

198

REM • • • Formul a dei trapezi

200

TRAPEZI = ( FRST+LAS T ) /2

210

IF N< 2 THEN 230

220

TRAPEZI = TRAPEZI + SOMMA

230

TRAPEZ I = TRAPE Z I * PASSO

240

PRINT " Formula dei trapez i " , TRAPEZI

30 DEF FNF ( X ) = •

• •

Integrali 298

REM • • • Formula de l punto med i o • • •

300

IIS = FNF ( A+PASS0/2 )

310

I F N < 2 THEN 370

320

SCND=MS : PULT=FNF ( B-PASS0/2 )

51

: RE!1 Valori del ! ' integranda

nel secondo e nel penult imo nodo 330

IF N< 3 THEN 370

350

SOMMA = 0

352

FOR I=2 TO N-l

354 356 358

-

MS = MS + PULT

340

X=A+ ( I- . 5 ) *PASSO : REM Nodi SOMMA = SOMMA + FNF ( X ) NEXT I

360

IIS = MS + SOMMA

370

MS = MS * PASSO

380

PRINT " Formul a del punto medi o " , MS

398

REM • • • Formula di Poncelet * * *

4 00

I F N c 2 THEN 500 : REM La formula di Ponce let ri chiede p i ù di due nodi

410





PCLT = ( FRST+3*SCND+3 *PULT+LAST ) /4

420

IF N < 3 THEN 440

430

PCLT = PCLT + SOMMA

440

PCLT = PCLT * PASSO

450

PRINT " Fonmla di Poncelet " , PCLT

498

REM *** Formula di S impson • • •

5 00

SIMPSN = ( TRAPE ZI + 2*MS ) / 3

540

PRINT " Formul a di S impson " , S IMPSN

598

REM * * * Op z i on i • • •

6 00

PRINT

602

PRINT " Premere i l tas to l per cambiare la funz i one "

604

PRINT " Premere il tasto 2 per cambiare gl i estremi "

606

PRINT " Premere il tas to 3 per cambiare il numero dei nodi "

608

PRINT " Premere il tasto 4 per fermare i l programma "

650

C$=1NKEY$

652

IF C$ = "" THEN 6 50

654

CLS : REM Cancel lare lo schermo

656

ON VAL ( C $ ) GOTO 10 , 50 , 70

690

KILL DRIVE$

700

END

: REM Cancellare il programma aus i l i ar i o

Ora calcoliamo log Xn come al passo c) e usiamo il valore log 2 precedentemente trovato. Il procedimento appena descritto può essere codificato come nel codice LOGARI. TMI. L'applicazione di questo codice fornisce, ad esempio, risultati riportati nella tabella 2.5.

2.4 Arcotangente

La funzione arcotangente vale zero per x vata è: l f(x) = l + x2 '

=

O e la sua deri­

una funzione razionale molto semplice, tra l ' altro già incon­ trata nel paragrafo 2. 1 . Dunque: 1 [2.22] arctg x = 2 dt. 1+t o La formula [2.22] può essere usata per il calcolo dell ' arco­ tangente; questo metodo non è il più efficiente, ma è abba­ stanza interessante perché valga la pena di considerarlo. Nel paragrafo 2. 1 abbiamo usato la somma ms (n ) per uno scopo analogo al presente. Qui usiamo la formula di Simpson. La formula di Simpson per l ' integrale a destra nella [2.22] è: 1 [2.23] -2 dt = s ( 2n ) + resto l + t o

1x

1x

52

Capitolo secondo

Nome Scopo Dati Risultato Algoritmo

LOGARI.TMI Calcolare logaritmi neperiani. Un numero x, maggiore di l; un numero eps , positivo ma relativamente piccolo. Un'approssimazione di log(x), che differisce meno di eps dal valore esatto. Se l ::; x ::; 2, procedere in questo modo: a) usare la formula log(x) = Ji" dtjt; b) determinare il più piccolo intero n tale che n- 4 (x - 1 )5 / 1 20 < eps ; c) approssimare l'integrale mediante una formula di Simpson con 2n + l nodi equispaziati. Se x > 2, procedere in questo modo: scrivere x nella forma esponenziale seguente: x = h· 2k , dove un intero non negativo e h tale che l ::; h < 2. A tale scopo calcolare xo, XJ , x 2 . . . ricorsivamente così: xo = x, x; = x;_ 1 /2 (i = I , 2, 3, . . .); quindi definire = il più piccolo intero i tale che x; < 2, definire h = xk . b) Usare la formula log x = log 2 + log h e calcolare log h come detto precedentemente. Usare anche la formula log 2 = 0.693 147 18 1 , che si ricava con la prima parte di questo algoritmo.

è

k



k

lO

PR INT " quale numero ( introdurre un numero > l) "

12

lNPUT X

20

EPS =

Preci s i one

30

LN = 0 . 6931471805599455

Logari trno di 2

40

E=O

42

lF X < 2 THEN 50

44

E= E+ l : X=X/2

46

GOTO 42

50

PRINT " numero= " X " • 2 .. " E

60

LN = E • LN

70

l F X=l T HE N 190

90

S=X-1

92

S=S•S•S•S•S/ 120/EPS

94

J=2

96

lF S < =16 THEN 1 10

}

98

l=J

100

lF J •J •J • J < S THEN 98

: J=2·J

102

N= lNT ( ( l +J+l ) /2 )

104 106

lF N •N •N•N > S THEN J =N

110

N=J

135

PRINT " numero dei nodi = " 2•N+l

Rappresentazione esponenziale del numero considerato

Calcolare i l più p i ccolo intero n tale ctle

n

4

( x-l )

5

l ( 120 eps )

E LSE l=N

lF J-1 > l THEN 102

140

H= ( X-1 ) /N

1 50

5= ( 1 + 1 /X ) /2

1 54

FOR l = l TO N-1

1 56

S=S+ l / ( l + H • l )

158

NEXT l

160

MS=O

162

FOR 1=1 TO N

164

MS=f.lS+ l/ ( l+H* ( l-1/2 ) )

166 170

NEXT l

180

LN =S+LN

190

PRINT " logaritmo= " �

200

END

S= ( S+2 •MS ) •H/3

Numero dei nodi necessari per la prec is ione richi esta

Formula d i Simpson per

J�

dt/t

con 2n+l nodi equidistanti

Integrali

Tabella 2.5

Logaritmi naturali di alcuni numeri. Precisione =

mato di 1r con un errore non superiore a 4.2 w- 8 . Tale valore

w- 14

è

o

l

.405465 1 08 1 08 1 684 .693 1 47 1 805599455 .9 1 629073 1 874 1 6 1 2 1 .0986 1 2288668 1 1 4 1 . 25276296849537 1 1 . 38629436 1 1 1 989 1 1 . 504077396 776282 1 .6094379 1 2434 1 07 1 . 70474809223843 79 1 7 59469228059 1 . 87 1 802 1 7690 1 595 1 .9459 1 0 1 490553 1 7 2.01 4903020542268 2.07944 1 54 1 679836 2. 1 40066 1 6349628 2. 1 97224577336227 2.25 1 29 1 798606502 2.302585092994052

1 .5 2 2.5 3 3.5 4 4.5 5 5.5 6 6.5 7 7.5 8 8.5 9 9.5

7r l arctg x = - - arctg - .

2

l

costante. Poiché:

G( l )

n l x ] x x [ f(O) + f(x) n - l + L f(k -n ) + 2 L j ((k - -2 ) -n ) 3n 2 k=l k=l

e il resto è maggiorato così:

=

�·

il valore di detta costante è appunto 1r /2. L' algoritmo di calcolo può essere codificato come nel codice ARCOTAN.NTE. 2.5 Un esempio un po' difficile

l resto I :S xs n - 4 .

1 20

[2.24]

Quest' ultima disuguaglianza segue dal teorema 2.4 e dalla formula:

la quale mostra che la derivata quarta di f è massima per

x = O e verifica:

Ricalcoliamo: 1r

[2.25]

G(x) = arctg x + arctg ­ x ha una derivata nulla. Dunque, per x positivo, è una funzione

dove

s ( 2n) =

x

Si adopera il valore di 1r precedentemente calcolato e si calcola arctg l / x come nel passo a). La formula [2.25] può essere dimostrata osservando che la funzione:

l.

IO

3 . 1 4 1 592655.

Un algoritmo, basato sulle formule precedenti, per il calcolo di arctg x può essere descritto nel modo seguente: a) se O < x ::; l si usa la formula iniziale e si calcola l ' integra­ le con la formula di Simpson [2.23]. Il numero n deve essere scelto, in dipendenza da x, in modo che il resto, stimato dalla [2.24] , sia entro la tolleranza prescritta; b) se x > l si usa la formula:

log(x)

x

53

Abbiamo già visto che ci sono funzioni per le quali la formula dei trapezi e quella di Simpson producono risul­ tati con efficienza comparabile. Come già osservato, un mo­ tivo perché questo accada è la scarsa regolarità della fun­ zione (singolarità in qualche derivata o fenomeni analoghi). Un ' altra ragione consiste nella possibilità che le derivate siano così grandi da neutralizzare i benefici di quella speciale formula di quadratura. In questo paragrafo mostriamo un esempio che presenta queste ultime caratteristiche. Si tratta della seguente funzione:

20

= 4 arctg l ,

usando i l metodo appena descritto. Poniamo x = l nella [2.23] e prendiamo n = 30. Questa scelta di n, in base alla [2.24], produce un valore approssi-

J S

THEN J=N

224

IF

J-I > l

230

N=J

235

PRINT " numero dei nod i = " 2•N+l

Questo segmento calcola i l p i ù p i ccolo intero n tale che

H=X/N

250

S= ( 1 + 1 / ( l+X•X) ) /2

260

FOR I=l TO N-l

270

X= I * H : S=S+ l / ( l+X*X )

280

NEXT I

290

MS=O

300

FOR I=l TO N

5 > x / ( 120 eps )

Fonnula di Simpson p er

310

X= ( I- . 5 ) *H : 1·15=115+1 / ( l+X*X)

320

NEXT I

330

S= ( S+2•t1S ) •H/3

350

RETURN

x = 1 /2, cioè: f (l - x) = - f(x ) .

Si potrebbe dimostrare inoltre, senza troppa difficoltà, che max

4

THEN 220

240

al punto

n

ELSE I =N

l

/"(x) l= - /11(0) = 2;2 [ ù THEN 1 60

Se F X non è zerc , esami nare i l segno d i Jo X e scegl iere consegue n=

140

A=X

Aggiornare A come qui speci ficato e lasc i are B i nvari ato , c i oè r i m=

temente le mosse successi ve .

p i azzare l ' i ntervallo ( A , B ) con ( X , B ) , se FX ha lo stesso segno di FA . 1 50

GOTO 1 1 0

Tornare a l l ' i s truzione 1 1 0 e r i c ominciare .

160

B=X

Lasc i are A i nvariato e aggiornare B come qui spe c i fi cato , c ioè rim= p i azzare l ' i ntervallo ( A , B ) con { A , X ) , se FX ha lo stesso segno di _ FB .

1 70

GOTO 110

Tornare al l ' i s truzione 1 10 e ri cominciare .

180

PRINT " radice = " X , " f = " FX

Mostrare i l punto medio fra le appross imaz i oni d e l l a radice per di fetto e per eccesso , ultime ottenute , e i l val ore della funzione in tale punt o .

200

END

F i ne d e l programma .

Radici

69

Definire

EPS ,

precisione

.---�

Considerare X = (A + B l /2 , FX = F N F (X) .

Pertanto il criterio per arrestare il procedimento può es­ sere il seguente: ci si ferma non appena le ultime approssi­ mazioni calcolate an e bn differiscono meno della quantità prescelta come precisione. Va sottolineato che questo metodo fornisce una fra le pos­ sibili radici dell'equazione [3 . 1 ] , nell'ipotesi / ( a) · f ( b) < O. Il metodo non funziona se viene a mancare questa ipotesi e non dà di per sé indicazioni su eventuali altre radici. Il metodo può essere codificato nel codice UNARAD. Tale codice è utile quando l 'intervallo [a, b] è stato stabilito in partenza, cioè quando si ha già un'idea della possibile localizzazione di una radice. Osserviamo che questo è il primo programma in cui l ' istruzione: IF

...

THEN . . .

è usata in modo essenziale. Questa istruzione richiede l' ese­ cuzione di un test - indicato subito dopo la parola IF - con due possibili esiti e guida il flusso delle operazioni su una strada oppure su un 'altra a seconda del risultato del test. Nel caso specifico, la logica del programma è illustrata dal diagramma di flusso relativo al codice UNARAD.

3.2 Il numero e

Il numero e - detto anche costante di Nepero o base dei logaritmi naturali - viene spesso definito come: e

=

_!_ t .

lim ( l + n --++oo n

[3.2]

70

Capitolo terzo

Osserviamo che, definito il logaritmo di un numero x attraverso la formula: 1 -du, log x = [3.3]

!x l

u

log 2 < l

il numero e precedentemente definito ha la proprietà: log e = l .

[3.4]

Infatti, la continuità del logaritmo (ovvia conseguenza della definizione [3.3]) ci dice che: log e = lim log n--++oo

[o .!..n t] . +

D' altra parte, la proprietà dei logaritmi log (xy) = log x+log y (anch 'essa facile conseguenza della definizione [3.3]) dice che log ( l +

l l ) = n log ( l + - ). n n

-

vallo [2, 3]. Per vederlo, basta usare il teorema ricordato nel paragrafo 3 . 1 e accertarsi che negli estremi di tale inter­ vallo la funzione log x - l assume valori di segno opposto. Dunque basta verificare che: e log 3 > l . Questo potrebbe essere fatto con un calcolo diretto, seguen­ do uno dei procedimenti del capitolo 2 (dove log 2 è già stato esplicitamente calcolato). Un modo qualitativo più rapido per raggiungere il medesimo scopo può basarsi sulla proprietà della funzione l l x di essere convessa, cioè di stare sotto y

n

Tenendo conto che log l = O, risulta:

log ( l + . log e = hm n - +oo

�) - log l 1 n



[3.5]

Si riconosce facilmente che a destra nella [3.5] compare il rapporto incrementale della funzione log x, centrato nel punto l , con incremento l ln. Questo implica che la parte destra della [3.5] è proprio la derivata di log x nel punto l . Siccome: d l - (log x) = - , dx x la relazione [3 .4] segue facilmente. L'equazione [3 .4] può essere usata alternativamente come definizione del numero e. In altri termini il numero e può essere definito come quel numero il cui logaritmo è l . Dimostriamo, basandoci esclusivamente sulla definizione [3.3], che tale numero esiste ed è unico. In altri termini dimostriamo che l'equazione: log x - l = O

', Corda y = (3 - xl/2

o L-------�--�-log 2 =

Figura 3.2

J

2

dx -< , x

J

2

1 3 - (3 - xl dx = 1 2 4

Dimostrazione che log 2

< l.

y

-Tangente y = 1 - x/4

, ;- -



[3.6]

ha esattamente una soluzione. Ciò può essere provato usan­ do i seguenti fatti:

x

2

o

2 dx jr3, x> jr3, ( 1 - x/4) dx = 1

a) l 'equazione [3.6] non può avere più di una radice; infatti log x è una funzione strettamente crescente (la sua derivata l l x è sempre positiva);

Figura 3.3

b) l 'equazione [3.6] ha effettivamente una radice nell ' inter-

Dimostrazione che log 3 > l .

log 3 =

3

x

Radici

le sue corde e sopra le sue tangenti. Proprietà queste che implicano: l l - < - (3 - x) 2 x

e

se l < x < 2

l x - > 1- 4 x

se x 7' 2

(figg. 3.2 e 3 .3). Dunque:

log 2 =

! 2 -dx l l !2 3 < (3 - x)dx = - < 1 l x

log 3 = }e 1

l dx > �

2 l

}r 3 1

4

x ( l - )dx = l . 4

Ciò premesso, il calcolo della radice dell 'equazione [3 .6] nell' intervallo [ 2 , 3] può essere fatto con l ' algoritmo de­ scritto nel paragrafo 3 . l . Il codice corrispondente va corre­ dato con una subroutine (analoga a quella del paragrafo 2.3) per il calcolo di log x. Il codice che ne risulta è il codice NEPERO. L' applicazione di questo codice fornisce:

e = 2.7 1 8 28 1 828 45 . 3.3 Pi greco

Abbiamo già parlato di 1r nel paragrafo 1 .8, dove si è definito 1r come limite comune di due successioni, quella dei semiperimetri dei poligoni regolari inscritti nella cir­ conferenza di raggio uno e quella dei semiperimetri dei poligoni regolari circoscritti; abbiamo poi calcolato 1r di conseguenza. Alternativamente, si può partire dalla formula: 1r

= 1 1 o

4 -- dx l + x2

e procedere con formule di quadratura come nel paragrafo

2.4.

1r

Un terzo modo può essere basato sulla seguente proprietà:

/2 è il primo zero positivo della funzione cos x.

Chi è cos x? La definizione elementare di cos x - come rapporto tra l' ipotenusa e un cateto di un triangolo rettangolo - non è

71

operativa e fa correre il rischio di cadere in un circolo vizioso (tale definizione, infatti, difficilmente può portare a numeri che servono a qualcosa e richiede la nozione di misura in radianti di un angolo. Quest'ultima è sullo stesso piano di quella che stiamo cercando di analizzare). Un modo di procedere, efficiente per i nostri scopi, è puramente analitico e parte così. Definiamo cos x come la somma della serie: +oo x 2n L (- l t -­ n=O ( 2n)! e, parallelamente, definiamo sin x come la somma della sene: +oo x 2n+ l L (- l ) n n=O ( 2n + l ) ! Le definizioni date hanno senso (e implicano che sin x e cos x sono funzioni indefinitamente derivabili) dal momento che le due serie convergono per ogni x, anzi sono serie di potenze con raggio di convergenza infinito (come segue, ad esempio, dal criterio del rapporto). La seconda mossa consiste nel manipolare le due serie fino a riconoscere che: sin 2 x + cos2 x = l . [3.7] •

Interessa qui osservare una immediata conseguenza della [3. 7], cioè: - l � cos x � l . [3.8]

La terza mossa consiste nel manipolare ancora la prima delle due serie fino a ottenere la seguente formula, la quale non è altro che la formula di Taylor per cos x:

dove:

x 2 x4 cos x = 1 - - + - + 2 4! R,. (x) =

·

·

·

x2n + (- l ) n -- + 0 (x)

( 2n)!

.. ...,

r x (x(2n- +t)2l ) ! l (- l t+1 cos t dt.

Jo

n+

Combinando la formula del resto con [3 . 8] si arriva a vedere che: x 2n+2 l R,. (x) � � 2n + 2) ! ( e inoltre che: x2 COS X > l-[3.9]

2'

x 2 x4 cos x < l - - + -. 2 4!

[3 . 1 0]

72

Capitolo terzo

Nome Scopo Algoritmo

10

NEPERO Calcolare la costante di Nepero e, base dei logaritmi naturali. Calcolare, con il metodo delle bisezioni successive, la radice x dell'equazione log x = l tale che 2 < x < 3. La funzione log è qui definita dalla formula log x = J1x dt jt e i suoi valori sono calcolati per mezzo di una formula di quadratura alla Simpson.

EPS =

: REl1 Pre c i s i one , con cui si desidera calcolare

20

REfi Il segmento 22-36 calcola il p i ù p i c colo i ntero n tale che

22

J=2

24

IF EPS > O. 016875 THEN 36

26

I=J

28

IF

30

N=INT ( ( I+J+l ) / 2 )

: J=2•J J * J * J • J * EPS < 0 . 27 THEN ..26

32

IF

34

IF J-I > l THEN 30

36

N=J

N * N * N * N * EPS > 0 . 27 THEN J =N

50

Xl=2

60

X= ( Xl+X2 ) / 2

: X2=3

ELS'E I=N

REt1 Es trer.li de ll ' i nterva l l o , in c u i s i cerca la radice REt,1 Punto medio

70

REtt I l segmento 72-86 usa una formula di Simpson con

72

DT= ( X- 1 ) /N

74

Lll= ( 1 + 1 / X ) /2

76

FOR I=l TO N-1

2*n+l nodi equ i d i s tanti

LN=LN + l / T

78

T=l+ I • DT

80

T=T-DT/2 : LN=LN+2/T

82

( n "" 4 ) * ep s > 0 . 27

NEXT I

84

T=X-DT /2 : LN=Lrl+2/T

86

LN=LN*DT /3

88

HEti Qualunque sia x fra 2 e 3 , i l prodotto valore di LN d i f'ferisce da l og ( x ) meno d i

1 00

PR HIT Xl : PRINT X2 : PRINT

1 10

IF LN=l OR X2-Xl < EPS THEN 150

1 30

120

I F LN < l THEN Xl=X

140

GOTO 60

1 50

PRINT " E = " X

200

END

0 . 27/n"4

REt1 Appros s i ma z i oni de l nunero di Nepero

IF LN > l TIIEN X2=X

La formula di Taylor e la maggiorazione ottenuta per il resto ci forniscono un algoritmo per il calcolo di cos x. Inoltre le [3.9] e [3. 10] ci permettono di avere informazioni sui segni di cos x. Precisiamo quanto abbiamo appena detto cominciando dall'ultima affermazione. La disuguaglianza [3.9] ci dice subito che COS X > 0 Se l X l < ,fi. La disuguaglianza [3 . l O ] ci dice che cos x è negativo se il polinomio biquadratico: x 2 x4

1--+2 4!

è negativo. Risolvendo l a disuguaglianza corrispondente, si trova facilmente che cos x < O

se

Dunque cos x cambia di segno negli estremi dell' intervallo:

1 .4 1 42 1 3 . . . ,fi < x < =

v6 - 2V3

=

1 . 592 450 . . . [3 . 1 1 ]

e, per il teorema chiamato in causa all 'inizio di questo capitolo, ha uno zero nell' intervallo [3. 1 1 ] . Questo zero è precisamente 1r /2. Veniamo adesso all 'algoritmo per il calcolo di cos x.

Radici

L' algoritmo consiste nel rimpiazzare cos x con: T.n (x) =

l

-

x2

x4

2

4!

-+-+...+

x 2n

( - l ) n __ (2n)!

e nel calcolare questo polinomio nel punto x prescelto. L' in­ tero n che entra in gioco deve essere scelto in modo tale che la differenza tra cos x (numero da calcolare) e Tn(x) (numero che possiamo calcolare) sia al di sotto dell'errore ammissi­ bile. Tale differenza, per la formula di Taylor precedente­ mente vista, non supera (in valore assoluto) x 2n + 2

(2n + 2) ! '

cioè il primo termine della serie di Taylor di cos x che non compare nel polinomio. In altri termini n è il più piccolo intero tale che x 2n+2 < e,

(2n + 2)!

dove e è l 'errore ammissibile. Un'osservazione. L' algoritmo descritto funziona solo se x è non tanto grande, altrimenti l'intero n dovrebbe essere scelto esageratamente grande e il calcolo del polinomio Tn (x) - che, per l'alternanza dei segni, pone delicati pro­ blemi di cancellazione - diventerebbe inaffidabile. Il lettore può verificare per curiosità, scegliendo n sufficientemente grande, che possono essere prodotti valori di Tn(x) molto maggiori di l , evidentemente fasulli. Per il nostro scopo tuttavia questi fenomeni non si presentano, perché conside­ reremo cos x con x nell'intervallo [3. 1 1 ] . Per quanto riguarda i l calcolo di Tn(x) s i potrebbe ri­ correre al codice POL I visto nel capitolo l . Tuttavia quel codice richiede la conoscenza a priori del grado del poli­ nomio, mentre nel nostro caso è meglio determinare a po­ steriori il valore di n. Questo è possibile grazie alla forma del resto e dei coefficienti del polinomio. Più precisamente si può calcolare Tn(x) con le seguenti formule di ricorrenza:

{

ao(x) = l ; To(x) = ao(x)

an(x) = -

x2

an (x), n = 1 , 2, . . . 2n(2n - l ) - I Tn( X ) = Tn - I ( X ) + an( X ), n = l , 2, . . . , fermandosi non appena si incontra un n tale che: l an+J ( X ) l < é .

Il codice che segue serve al calcolo di cos x ed è una traduzione letterale dell 'algoritmo descritto.

73

Programma per calcolare il coseno di un numero piccolo. IO EPS = : REM precisione 20 INPUT "x="; X : REM numero, il cui coseno deve essere calcolato 30 N =0 : REM N=grado del polinomio di Taylor in gioco 32 T= l : REM primo termine della formula di Taylor 34 C = T : REM approssimazione di cos x col polinomio di Taylor di grado zero 50 N = N+ l 60 T = - T*X*X/(2*N)/(2*N - l ) : REM relazione fra i l termine n-esimo della formula di Taylor e il predecessore 70 IF ABS(T) B THEN 300

Esaminare se x è o l tre il l im i te b , oppure no . Nel primo c as o , fermars i ; altriment i , prosegui re c o s ì .

160

Y=FNF ( X )

Calcolare il valore di f in x e memori zzare il r i sultato .

170

I F Y=O THEN 250

Se f vale zero in x , x è una rad i c e ;

andare al p un to 250 ed omettere i l

segmento 180-240 . Se f non vale zero i n x , p roseguire così . 180

I F Y l * Y > O THEN 1 30

Esami nare se f ha valori col medesimo segno o con segno opposto , ne i p un t i xl & x . I l primo c a s o n o n intere ss a ; sal tare al punto 130 . Nel secondo c aso , ! ' interval lo fra xl & x deve contenere uné. rad i c e ; prose= guire c os ì .

190

X2=X

200

X= ( Xl+X2 ) /2 : Y=FNF ( X )

Chiamare x2 l ' e stremo destro de l l ' i nterva l l o i n esame .

210

I F Y=O OR X2-X1 < 1E-06 THEN 2 50

220

I F Yl*Y> O THEN 240

230

X2=X

240

X1=X : GOTO 200

250

PRINT : PRINT

260

NEXT X

GOTO 200 11

rad i c e =

11

X

}

PRINT Y

Cercare una rad i c e nell ' i ntervallo fra xl & x 2 , col metodo delle bisezioni successive . Chiamare x la rad i c e trovata . Mostra la rad i c e trovata x e il valore di f nel punto x . Consi derare i l punto x+dx e chi amare tale punto col nome x . Esami nare se x è o l tre il l im i te b , oppure no . Nel primo caso , fermars i ; nel secon= do caso , andare al punto 1 10 e r ic ominc i are .

300

END

Fine de l programm a .

Radici Defi n i re la fu nzione e g l i estremi d e l l ' i nterva l l o

Trovare u na radice X fra Xl e X2

79

80

Capitolo terzo

mare - consiste nel fatto che la parabola è una curva un po' più complicata della retta. L' intersezione in questione si determina con un procedimento ricorsivo. sulla para­ Partiamo fissando un punto arbitrario bola. Se siamo così fortunati da azzeccare in questo modo il punto di intersezione, non c 'è ragione di andare avanti. Altrimenti consideriamo la retta tangente alla parabola nel punto prescelto. L'equazione di tale retta è:

( x0, Yo)

( x0, y0 )

y =

cioè:

y

Yo + 2xo( x - xo), =

- x6 + 2xo x,

[3. 1 6]

poiché = Intersechiamo ora la retta tangente [3. 1 6] con la retta y = a . Questo è facile e fornisce

Yo x6.

a

l -(2 xo + xo)

come ascissa del punto di intersezione. Poniamo:

Figura 3.4

La radice quadrata di a e la successione Xn definita da Xn = (Xn - 1 + a/Xn- 1 )/2 (n = l , 2, 3, . . . ) .

a

l

2 x0 + xo)

XI = -(-

e consideriamo il punto sulla parabola che ha questa ascissa. Si tratta del punto 1 , , dove

( x YI )

=

Y I xi ,

Ripetiamo il procedimento ora descritto partendo dal punto 1 , y 1 ). Costruiamo cioè la retta tangente alla parabo­ la in questo punto e intersechiamola con la retta y = a. L' a­ scissa di quest'ultimo punto di intersezione è:

(x

y B isettrice y = x

/

/

a

x2 = -2l ( + xJ). XI Consideriamo il punto sulla parabola con questa ascissa ecc. ecc . . . (fig. 3 .4 ). Riassumendo, stiamo ricorsivamente definendo una suc­ cessione:

{ xo

[3 . 1 7]

con le formule: = numero positivo arbitrario

Xn+ l =

!(:n + Xn ), n = O , l , 2, . . . .

[3. 1 8]

Dimostreremo tra poco che questa successione converge rapidamente alla radice quadrata del numero a. Il fatto chia­ ve da mettere in luce - che rende questo procedimento un

o �------�+-��--�-+-x,

Figura 3.5

Xo

La radice quadrata di a e la successione Xn definita da Xn = (Xn - 1 + a/Xn - I )/2 (n = l , 2, 3, . . . ) .

x

Radici

algoritmo effettivo per il calcolo della radice quadrata è che ogni elemento della [3 . 1 7] si calcola in termini del precedente con operazioni razionali soltanto ( una divisione e un'addizione), operazioni essenzialmente più semplici della estrazione di radici quadrate. L'algoritmo in questione viene talvolta chiamato di Erone. Un 'ulteriore interessante interpretazione geometrica della successione [3 . 1 7] è la seguente. Si considerino l 'iperbole con equazione l a y = - ( - + x) 2 x e la bisettrice

y = x.

Iperbole e bisettrice si intersecano in un punto del qua­ drante nord-est, la cui ascissa è precisamente la radice quadrata di a. Iperbole e bisettrice consentono di inter­ pretare geometricamente la formula di ricorrenza [3 . 1 8] . Im­ maginiamo di avere in mano X n . Consideriamo il punto sull 'iperbole che ha questa ascissa, la retta orizzontale pas­ sante per tale punto e intersechiamo questa retta con la biset­ trice. Il punto di incontro ha ascissa Xn + l · La figura 3.5 aiuta a capire la situazione e suggerisce alcune delle proprietà della successione Xn , che ora illustreremo. a) Xn è positivo per ogni n. Questo segue immediatamente dalle formule [3 . 1 8] . b ) x; ;::: a , n = l , 2 , 3 , . . . I n altri termini tutti gli Xn (ec­ cettuato eventualmente il primo) sono alla destra della radice di a, cioè sono delle approssimazioni per eccesso. Infatti, quadrando ambo i membri della seconda delle [3. 1 8] si ricava: a 0 l 2 xn+l = a + -4 ( x n - - )- , Xn che si può scrivere anche

Il lato destro di questa uguaglianza è maggiore o uguale a zero per le proprietà a) e b). d) X n - va :::; 2 1 - n (X l - va), n= l , 2 , 3, . . . . Questa diSU­ guaglianza implica che Xn converge proprio alla radice di a. Per dimostrarla, deduciamo da [3 . 1 8] che: 1 va va Xn + l - va = 2 (Xn - va) - 2 ( 1 - �).

Per le proprietà a ) e b ) i l termine:

va 2 0

2 xn+ l - a + un qua drato.

c) x 1 ;::: x 2 ;::: X3 ;::: , in altri termini la successione Xn ( pri­ vata eventualmente del primo elemento) è monotona decre­ scente. Infatti, sempre dalla [3. 1 8] si trova: . • .

l Xn - Xn+i = - ( xn2 - a) . 2X n

_

va ) Xn

è positivo. Dunque: l Xn +l - va :::; 2 ( Xn - va). L' iterazione di questa disuguaglianza implica la d). La disuguaglianza d) dice non solo che Xn converge a va. ma anche che la distanza tra Xn e va a ogni paSSO Si dimezza almeno. In realtà le cose vanno molto meglio e proprio per questo il metodo è efficiente . e) Xn +l - va :::; l /( 2 va) (Xn - va) 2 , n = 1 2 , 3 , . . . ,

Infatti la [3. 1 6] dice subito che: l Xn +l - va = - ( Xn - va) 2 ; 2Xn da questa e da b) segue e). La disuguaglianza provata significa che Xn tende al suo limite con velocità quadratica. Conseguentemente, come l ' iterazione della e) mostra, non appena la distanza fra Xn e va diventa minore di uno ( ciò che accade necessariamente dopo un certo numero, grande o piccolo, di passi), l'errore precipita a zero nel modo seguente: Xn - fo :::; (costante)

cioè

81

x

N ( numero minore di 1 )< 2"- \

dove N è il primo intero tale che:

X N - va < l 2 va

e n un qualunque indice maggiore di N. Le proprietà precedenti dicono - almeno in linea teori­ ca - che la radice di a può essere velocemente calcolata con la voluta accuratezza attraverso la successione X n · Affinché il procedimento diventi un algoritmo è indispensabile dare un criterio per arrestare il meccanismo al momento giusto.

82

Capitolo terzo

Questo criterio è basato sulla seguente proprietà:

Xn

Xn+i - Xn,

n = 2, 3, 4, . . . :::; Va Questa disuguaglianza si dimostra deducendo da [3. 1 8] che:

f)

-

+ vfa) - Xn = Va ( l Va ); �(Xn-i 2 2 Xn -i -

la parte destra è positiva per la proprietà b) e dunque si ha:

Xn ::=; 2l (Xn -i + vfa),

che equivale alla f). Quest'ultima proprietà dice che .x differisce da ..j(i meno di quanto stesso differisce dal predecessore. Dunque, se ci proponiamo di calcolare va con un errore non superio­ re a t: , calcoliamo xo , x 1 , x 2 , . . . e ci arrestiamo non appena l'ultimo differisce dal predecessore per meno di L Sotto­ lineiamo che questo criterio di arresto coinvolge soltanto le quantità via via calcolate dall' algoritmo stesso (non richiede

n

Xn

Xn

Nome Scopo Dati Risultato Algoritmo

10

INPUT ••quale numero" ; A

12

REI-1 Questo programma calcola la radice quadrata di un numero Introdurre i l numero i n questi one .

14

IF A

16

PR INT 11non accettab i l e ' ' : GOTO 10

18

REM Questo programma non accetta numeri negativi i n ingresso .

� THEN 20

20

EPS= 1E-�8

22

REM Defi n i re l a prec i s i one con cui s i pretende il risultato .

30

X= ( l +A ) / 2

32

RE�1 Questo è i l punto da cui parte l ' i terazione .

35

PR INT "appross imaz i oni "

40

OLD=X

45

PRINT X

50

X= ( X+A/X ) /2

60

IF OLD-X

70

PR!NT "radice=" X

100

END

>

xo

l, x0 = a, =

entrambe le quali forniscono (a + 1 ) / 2 come valore succes­ sivo. Tanto vale allora scegliere: xo

a+ l

= -- , 2

il punto di mezzo tra l e a. L'algoritmo può essere codificato come nel codice QUA­ DRAD.

QUADRAD Calcolare la radice quadrata di un numero. Un numero positivo a; un numero eps, positivo e piccolo. Un numero x, maggiore di y'a, che differisce da y'a meno di eps. Definire una successione di approssimazioni nel modo ricorsivo seguente: x0 = ( l + a)/2; Xn = (x n - 1 + a/ Xn - 1 )/2 per n = l , 2, 3, Fermarsi non appena Xn differisce da Xn - 1 meno di eps. Il numero Xn è quello cercato. . . .

>

nessuna informazione extra) ed è teoricamente impeccabile. Per quanto riguarda il punto iniziale xo , non c ' è tanto da preoccuparsi su come sceglierlo. Qualunque numero posi­ tivo va bene, perché l'algoritmo converge così rapidamente che il tiro si aggiusta subito, indipendentemente dal punto di partenza. Comunque, scelte ragionevoli potrebbero essere:

EPS THEN 40

a .

Radici

3.7 Il metodo di Newton

Il metodo di Newton è uno dei più efficaci metodi per il calcolo delle radici dell'equazione

f(x) = O .

[3 . 1 9]

Si tratta di un metodo iterativo che fornisce una sequenza di approssimazioni di una radice. L' idea su cui si basa è analoga a quella usata nel paragrafo precedente per il calcolo delle radici quadrate, anzi è proprio il metodo di Newton che là viene applicato all 'equazione: x 2 - a = O. Partiamo da un punto x0 relativamente arbitrario. Relati­ vamente significa che x0 è sì arbitrario ma che non va scelto completamente alla cieca, perché - come dimostreremo in seguito - una cattiva scelta di x0 può compromettere l'esito dell 'operazione. Consideriamo poi il punto sul grafico di f che ha ascissa x0 e la retta tangente al grafico in questo punto. Tale retta ha equazione: Y

= f(xo ) + ! ' (x o )(x - x o )

e interseca l'asse x nel punto:

f(x o ) x 1 = xo - ! f (x o ) . Questo x 1 esiste effettivamente (e non è fuori scala) se la retta tangente considerata non è orizzontale né prossima a quella posizione. Nella scelta di xo si deve tener conto, tra l' altro, anche di questo possibile inconveniente. Il punto x1 trovato è il secondo elemento, dopo xo , di una sequenza di numeri. Il successivo, x 2 , si ottiene a partire da x 1 ripetendo la stessa procedura di poc ' anzi. Ne risulta:

X2 = X ! -

83

Sotto opportune condizioni, che vedremo in seguito, si dimostra che la successione prodotta dal metodo di Newton converge a una radice dell 'equazione [3. 1 9] . La figura 3.6 può aiutare a visualizzare il metodo stesso. Vantaggi e svantaggi. Il metodo è generalmente facile da applicare. Se applicato a funzioni che non hanno un comportamento bizzarro e se opportunamente innescato, il metodo fornisce una sequenza di approssimazioni di una radice che converge con eccezionale rapidità. D' altra parte la convergenza può essere meno brillante e tutt' altro che veloce se la radice sotto tiro è doppia, tripla ecc. Oppure può andare all ' aria se il comportamento della funzione è capriccioso tanto da incappare in punti dove la tangente è orizzontale o quasi. La figura 3 .7 illustra una situazione di questo tipo. Vi sono infine dei casi in cui il metodo di Newton produce una successione che rimbalza da un punto all 'altro e non si decide mai a convergere. Ad esempio, si consideri la funzione: x f(x) = � · il cui unico zero è l'origine. In questo caso l a formula [3.20] diventa:

Xn+ l -- - xn3 '

Dunque l a successione h a l a seguente forma esplicita:

y

/(X ! ) . / ' (X ! )

È chiaro a questo punto come descrivere il metodo di Newton. Si produce una successione: con le seguenti regole: a) x0 è relativamente arbitrario; b) X n+ l si calcola in termini del suo predecessore Xn con la seguente formula: [3 .20]

v = f (x)

x

Figura 3.6

Il metodo di Newton per la ricerca di radici di un'equazione f(x) = O.

84

Capitolo terzo

convessa o concava. In particolare lo zero ç è unico; a destra di ç la funzione f ha un segno, a sinistra segno opposto. Allora, se x0 è un qualunque punto di [a, b] tale che f(x o ) x 1 = xo - ' f (xo ) è ancora un punto di [a, b] , la successione:

y



? x,

Xo

dove

x

f(xn) [3.2 1 ] Xn + l = Xn - ' , J (xn) converge monotonamente con velocità quadratica allo zero ç decrescendo se f è crescente e convessa oppure decre­ scente e concava, crescendo negli altri due casi. -

Figura 3.7

Un caso in cui il metodo di Newton fallisce.

Pertanto Xn diverge se l x0 l > l , oscilla se l x0 l è esattamente l e converge soltanto se l xo l < l (fig. 3.8). Un ulteriore esempio, ancora più patologico, è dato nel­ l 'esercizio 3 . 1 5. Le qualità del metodo di Newton possono essere descritte dal seguente teorema: Teorema 3.1 Supponiamo che f(x) abbia uno zero ç nell' intervallo [a, b] . Supponiamo che la derivata prima di f non si annulli in [a, b] e che la derivata seconda abbia segno costante - questo implica che f è strettamente monotona e

y

x,

=

X3

= X5 = X7 = . . .

Cosa significhi convergere con velocità quadratica sarà chiarito nel corso della dimostrazione. Grosso modo signifi­ ca che il numero delle cifre decimali che le approssimazio­ ni via via prodotte hanno in comune col valore esatto della radice raddoppia passo dopo passo. Dimostrazione Facciamo la dimostrazione nel caso che f sia crescente e convessa e procediamo a tappe. Valgono le seguenti proprietà:

a) X ] 2: X 2 2: X3 2:

· ·

·

2: Xn 2: Xn+ l 2:

· · ·

2: ç .

Consideriamo infatti la funzione: f(x) h(x) = x - ' . f (x) Il significato geometrico della funzione h è evidente: fissato x , h(x) è il punto in cui la retta, che è tangente al grafico di f nel punto di ascissa x, taglia l ' asse delle ascisse. La funzione h(x), al variare di x nell ' intervallo [a, b], ha un minimo nel punto ç e questo minimo vale esattamente ç . Infatti:

[

1 h(x) - ç = 1 ' f(ç) - f(x) - (ç - x)f' (x) . (x) -

Xo

= X2 = X4 =

X6

= ...

x

Il denominatore, a destra, è positivo per ipotesi. La quantità fra parentesi quadre è anch'essa positiva per la convessità di f (è una differenza fra f e una sua retta tangente). Osserviamo che x 1 = h(x o );

Figura 3.8

Un altro caso in cui il metodo di Newton fallisce. Qui /(x) = x( l + x 2 )- 1 1 2 , xo = l .

]

dunque

Radici

Siccome x 1 è alla destra di �, f assume in x 1 valore positivo. Per passare da x 1 a x 2 si deve sottrarre f ( x 1 )/ f ' (x 1 ), cioè una quantità positiva; questo implica:

D 'altra parte infatti x z = h(x , ). Passando a x 3 , possiamo ripetere tale e quale il ragiona­ mento fatto per x 2 ; avremo:

E così via. Si conclude che

per tutti gli n da l in poi.

b) X n converge allo zero �. Per la proprietà precedente la successione Xn ha un limite L. Passando al limite rispetto a n in ambo i membri della [3.2 1 ] si trova: f( L ) . L=Lf ' (L ) Dunque f( L ) = O, da cui L = �, dal momento che di radici ce n'è una sola. c) La velocità di convergenza di X n a � è quadrati ca, vale a dire c ' è una costante C (dipendente da f soltanto) tale che [3 .22]

Infatti:

Integrando per parti si prova facilmente che la quantità fra parentesi quadre è uguale a:

h Xn

Dunque:

(t - ç}j " (t)dt.

{ Xn j"(t) dt, Xn+ l - � � }ç (t - O / '(t)

poiché f' è crescente. Questa disuguaglianza implica [3.22]

con:

85

l !" . C = - max 2 !'

La dimostrazione è così completa e suggerisce un algo­ ritmo per il calcolo delle radici. L' algoritmo consiste nel far partire il procedimento [3.21 l e nell ' arrestarlo a un punto op­ portuno. L'arresto può avvenire quando ci sono buone indi­ cazioni che ulteriori iterazioni non produrrebbero un miglio­ ramento apprezzabile dell 'ultima approssimazione ottenuta. Un criterio ragionevole in questo senso potrebbe essere il seguente: si fanno n passi e ci si ferma non appena n è tale che

l xn+ l - Xn l � E ,

dove E è la precisione prestabilita. Il valore Xn è candidato a essere la migliore approssimazione, nella tolleranza presta­ bilita, dello zero � fornita dali ' algoritmo. Qual è l ' affidabilità deli ' algoritmo? Certamente esso è pienamente garantito nei casi previsti dal teorema 3 . 1 ma non è da escludere che possa aver successo anche in altri casi. A parte situazioni chiaramente patologiche (come quelle indicate all 'inizio del paragrafo), in cui l ' algoritmo si in­ ceppa o gira a vuoto, in genere l' �lgoritmo converge a qualche cosa. E questo qualche cosa è una radice, anche se non necessariamente quella che ci si aspettava. Beninteso, affinché l ' algoritmo possa essere usato anche in casi non previsti dal teorema 3 . 1 , è necessario che esso sia corredato da opportuni accorgimenti, atti a prevenire eventuali collassi. Tutto quanto precede è codificato nel codice NEWTON. Esempio l Proviamo ad applicare il metodo di Newton ali ' equazione di 2o grado ax 2 + bx + c = O.

Questa equazione si risolve con formule esplicite - perfet­ tamente adatte allo scopo - scoperte molto prima di New­ ton. Tuttavia l' applicazione del metodo di Newton a questa equazione può essere un modo per familiarizzarsi con esso. Supponiamo che sia il coefficiente a che il discriminante � = b - 4ac siano positivi. Così l 'equazione ha due radici reali e distinte:

dove

-b r=2a

86

Capitolo terzo

Nome Scopo Dati Risultato Algoritmo

NEWTON Calcolare uno zero di una funzione. Una funzione l e la derivata !' di l; due numeri a e b, il primo minore del secondo; un punto fra a e b; un intero nmax abbastanza grande e un numero eps, positivo ma piccolo. Nessuno; oppure un punto fra a e b che ha una di queste due proprietà: il punto dista meno di eps da uno zero della funzione 1. la funzione 1 ha in tale punto un valore assoluto minore di eps. Definire xo = il punto dato fra a e b; definire Xn = Xn- ! - ICxn - r >/ l'(xn - r ) per n = l , 2, 3, . successivamente. Fermarsi non appena uno dei casi seguenti si verifica: si incappa in uno zero della derivata; Xn sfugge all'intervallo fra a e b; il numero dei passi ha raggiunto nmax; la distanza fra Xn e Xn- ! è minore di eps; il valore assoluto di l in Xn è minore di eps. .

.

10

DEF FNF ( X ) =

Definire la funzione , i cui zeri sono in esame .

20

DEF FND ( X ) =

Definire la funzione derivata .

30

A =

40

EPS =

Definire la prec is ione , con cui si vuole calcolare . Per es . , EPS=lE-06 .

50

NMAX =

Definire i l massimo numero delle i tera z i oni , che si è disposti a fare .

B=

Definire gli estremi dell ' interval lo , entro cui si vuole restare .

Per es . , NMAX=lOO



100

N=O

Iniziali zzare la variabi l e , destinata a contare le i teraz ioni .

110

INPUT " punto i n i z i al e " ; X

Introdurre il punto

120

IF X > =A AND X < =B THEN 1 30

122

PRINT " traboccamento " : GOTO 1 1 0

}

x

0

.

Contro l l ar e , prima di cominc i ar e , che

x

s i a tra

0

130

F =FNF ( X )

135

PRINT N ; TAB ( 10 ) X ; TAB ( 25 ) F

140

I F F=O THEN 250

Se il valore della :funzi one nel punto

150

N=N+1

Aggiornare i l contatore de l l e i terazioni .

160

I F N < =NI>IAX THEN 170

162

PRINT " troppe i teraz ioni "

170

D=FND ( X )

180

IF D < > O THEN 190

182

PRINT

11

STOP

impos s i b i l e continuare

190

R=F/D : X=X-R

200

IF X> =A AND X< =B THEN 210

202

PRINT " traboccamento " : STOP

11

Valore della funzi one nel punto

} STOP

F=FNF ( X )

215

PRINT N ; TAB ( 10 ) X ; TAB ( 25 ) F

220

IF ABS ( R ) > EPS AND ABS ( F ) > EPS THEN 1 50

}

PRINT " una radice= " x

270

PRINT " numero de l l e i teraz ioni = " N

300

END

PRINT " valore de lla funzione = " F

Calcolare

x

n

.

Contro l l ar e , prima di procedere , che Valore della :funzi one ne l punto Proseguire , se la dis tanza fra

}

è il punto di mezzo delle radici e anche il punto dove

assume il suo minimo valore.

x è zero , una radice è trovat a . 0

Fermar� i , se la derivata si annul l a nel l ' ultimo punto calcolato .

oppos.t o . 250

.

Valore della derivata ne l ! ' ul t imo punto calcol ato .

nel punto

260

0

Fermars i , se il numero delle i teraz ioni supera il l im i te prestab i l i to .

}

210

x

a & b .

x

n

x

x s i a :fra n

a & b .

n

x

n-l

e

x

n

e il valore de l l a funzi one

superano l a prec i s i one prestab i l i t a . Fermars i , n e l caso

Mostrare la radi ce trovata ecc .

{

In questo caso il metodo di Newton si può riassumere con le seguenti formule: xo = numero arbitrario [3.23] (X - T( )(Xn T z ) Xn + l = X n - n , n = O, l , 2, . . . 2(Xn r) -

_

Radici

Queste formule possono essere anche scritte in modo di­ verso. Se poniamo: Xn

=r

n = O, l , 2, . . .

+ çn ,

,

se chiamiamo cioè çn la deviazione di X n dal punto di mezzo delle radici, abbiamo:

{ :0 = :o!-[ : =A ANO X < = B THEN 60

56

PRINT " traboccamento " : GOTO 52

60

Xl=X : Fl =FNF ( X )

65

PRINT N ; TAB ( 10 ) X1 ; TAB ( 2 5 ) Fl

70

N=2

72

I NPUT

74

IF X> =A ANO X < =B THEN 80

76

PRINT " traboccamento " : GOTO 72

11

secondo punto " ; X

80

X2=X : F2=FNF ( X )

85

PRINT N ; TAB ( l O ) X2 ; TAB ( 2 5 ) F2

1 00

N=N + 1

1 10

IF N < =NMAX THEN 120

112

PRINT " troppe i teraz ioni "

REM Aggiornare i l contatore de lle i terazioni STOP

REM I l programma si :ferma , se il numero delle i terazioni raggiunge il l im i t e prestab i l i to

1 20

D=F2-Fl

130

IF ABS ( D ) > EPS THEN 140

132

PRINT " impos s i b i l e continuare "

STOP

REM Il programma si ferma, se i ncappa in valori della funzione troppo v i c i n i fra loro

140

X=X2-F2* ( X2-X1 ) /D

1 50

IF X> =A ANO X < =B THEN 160

1 52

PRINT " traboccamento " : STOP

REM I l programma si ferma, se l e i teraz ioni fanno uscire dal ! ' intervallo prescel to

160

Xl=X2 : Fl=F2

1 70

X2=X : F2=FNF ( X )

175

PRINT N ; TAB ( 10 ) X2 ; TAB ( 25 ) F2

180

IF ABS ( X2-X 1 ) > EPS ANO ABS ( F2 ) > EPS THEN 100

REM Le i terazioni si arrestano quando producono

un punto , chc cl :csta dal

predecessore meno della prec i s i one stab i l i ta oppure che dà a l l a funzione un valore assoluto minore d e l l a pre c i s i one . 200

PRINT " una radice = " X2

210

PRINT " valore della funzione = " F2

220

PRINT

250

END

''

nwnero delle i terazioni = " N

94

Capitolo terzo Esercizi

3.1 Trovare le radici delle seguenti equazioni di terzo grado: a) x 3 - 1 .5 1 5x 2 - 20. 87 1 873x - 5 . 1 674 1 59 = O ; b) x 3 - 4.9736x 2 + 0.4 1 6268x - 16. 855483 = O.

e calcolare questa radice col metodo di Newton e con quello delle secanti. 3.8

Cercare gli zeri della seguente funzione: IO

Entrambe le equazioni hanno tre radici reali; quelle della seconda sono più difficili da scovare. Perché? 3.2

L'equazione: x4 + 0.20x 3 + 3. 14x 2 + O. ! Ox - 4. 10 = O

ha due radici, vicine rispettivamente a l e

3.3

- l . Trovarle.

I polinomi di Eulero En (x), n = O, l , 2, . . . , sono definiti come coefficienti di tn / n ! nello sviluppo in serie di: 2et x · l + et Ad esempio, il polinomio di Eulero di grado 1 3 è : E I J (x) =

� (2x 1 3 - 1 3x 12 + 143x 1 0 - 1 287x 8 +

+ 7293x 6 - 22 1 65x4 + 26949x 2 - 546 1 ).

Questa funzione è connessa alla cosiddetta zeta di Riemann, che interviene in questioni di Teoria dei Numeri: gli zeri della zeta di Riemann sono oggetto di una importante congettura non ancora risolta. 3.9

L'equazione :

' fox e _t- dt = 50l

ha una sola radice. Trovarla. 3.10

Calcolare il punto in cui le funzioni: x

log

( l + x2 ) '

ex xl

assumono il loro minimo valore, relativamente alla semiretta O :::; x < < + oo. Calcolare la successione dei punti di massimo della funzione (sin x) j x.

E 1 3 (x) = O. 3.4 I polinomi di èebysev Tn (x), n formula:

Tn (cos r/J)

=

=

O,

l , 2, . . . , sono definiti dalla

cos(nr/J).

Ad esempio: T6 (x) = 32x 6 - 48x4 + 1 8x 2 - l , T9 (x) = 256x 9 - 576x 7 + 432x 5 - 1 20x 3 + 9x, T1 0 (x) = 5 1 2x 1 0 - 1 280x 8 + 1 1 20x 6 - 400x 4 + 50x 2 - l . Trovare gli zeri di questi tre polinomi.

3. 1 2

Adattare il metodo di Newton per calcolare le radici cubiche, analogamente a quanto è stato fatto per le radici quadrate.

3.13

a) y

Tabulare le funzioni inverse delle seguenti funzioni:

=

x e x , O :::; x :::; l O;

b) y = x - iog( i + x), o :::; x :::; 1 00; c ) y = x + sin x, - i :::; x :::; 5 .

3. 14

L'equazione d i Keplero: y = a + x sin y

rientra nella categoria di equazioni:

Trovare le radici delle seguenti equazioni trascendenti:

a) e = 2x + l ; b) e - x = cos x;

c) x - sin x + l 3.6

k=I

3.11

Trovare le radici di

3.5

l

L r.:: cos (x log k ) . vk

y = a + xr/J(y), =

O.

Trovare tutte le radici tra O e 100 dell 'equazione:

dove y è l ' incognita, a e x sono numeri assegnati e rjJ è una funzione definita in vicinanza del punto a. Si può dimostrare la seguente formula risolutiva (detta di Lagrange):

tg x = x (conviene riscrivere l 'equazione nella forma sin x - x cos x = 0).

3.7

Localizzare una radice di: x 3 - sin x + ex

=

O

Tale formula sussiste in particolare per l 'equazione di Keplero, ma non necessariamente è utile per gli scopi numerici. Come esercizio,

Radici

95

considerare il seguente caso speciale dell 'equazione di Keplero: y = 3 + x sin y e calcolare, con i metodi del presente capitolo, le radici di questa equazione al variare di x .

una differenza seconda di f nel punto x relativa a un incremento h. Il lettore è invitato a individuare condizioni sufficienti sulle differenze seconde affinché il metodo dia risposte sicure. Fatto questo il lettore potrebbe scrivere un programma.

3.15

3.17

Considerare la funzione f ( x ) = arctg x , che ha uno zero in x = O. Veri­ ficare che, se si applicasse il metodo di Newton per la ricerca di tale radice, si troverebbe una successione oscillante e divergente in valore assoluto.

3.16 Un metodo (un po' grossolano, ma facile da capire) per trovare gli estremi locali (massimi e minimi relativi) di una funzione f sufficiente­ mente regolare consiste nel trovare le radici dell'equazione f' (x) = O e nel distinguere quali tra esse sono punti di massimo o di minimo. La prima cosa si fa calcolando la derivata e applicando i metodi del para­ grafo 3.5; la seconda potrebbe essere fatta controllando il segno della derivata seconda nei punti in questione, oppure, più semplicemente, il segno di differenze seconde di f nei medesimi punti. Ricordiamo che:

f(x + h) - 2/(x) + j(x - h)

è

Un ulteriore metodo per calcolare una radice dell 'equazione = O è la cosiddetta regulafalsi. Si tratta di una variante del metodo di bisezione che può essere sommariamente descritta come segue. Supponiamo che j(x) sia continua e abbia valori di segno opposto agli estremi dell' intervallo [a, b]. Consideriamo la corda che unisce gli e­ stremi del grafico e l'ascissa c in cui tale corda incontra l'asse delle x . Se j(c) = O una radice è trovata; altrimenti si considera quello, tra gli intervalli [a, c] e [c, b] , negli estremi del quale la funzione assume valori di segno opposto. Chiamiamo [a 1 , bd questo intervallo e ripetiamo su di esso le stesse considerazioni di prima. E così via. Si costruisce a questo modo una successione di sottointervalli, gli estremi dei quali convergono a una radice. Il lettore potrebbe dimostrare questo fatto (sotto opportune ipotesi per la funzione) e scrivere un programma. f(x)

Capitolo 4 Grafici di funzioni

4.1 Introduzione ed esempi semplici

I grafici servono a illustrare proprietà di una funzione. In linea di principio un grafico altro non è che un modo per presentare un campionamento. È tuttavia un modo che si presta particolarmente bene per trasmettere in forma concisa ed efficace una certa quantità di informazioni. È esperienza comune che l' andamento delle vendite di un negozio (o la febbre di un paziente ecc.) si capisce con maggiore immediatezza attraverso un grafico che non attraverso una lista di numeri. I grafici sono uno strumento di informazione di buona qualità e per questo la loro fabbricazione comporta costi maggiori rispetto alla compilazione di una tabella. Nel capitolo l ci siamo occupati di tabelle. In questo capitolo presentiamo vari metodi per disegnare grafici di funzioni di una variabile. A rigor di termini il grafico di una funzione / (x), a valori reali e definita nell' intervallo [a, b] , è l'insieme dei punti (x, y) del piano la cui ascissa è un punto x dell' intervallo [a, b] e la cui ordinata y è il valore della funzione f nella medesima ascissa x (fig. 4. 1 ). Un grafico, per sua definizione, contiene infiniti punti. Qualunque algoritmo per la produzione di un grafico - come qualunque algoritmo per la descrizione di un oggetto ma­ tematico costituito da infiniti elementi - consiste necessa­ riamente nella selezione di un numero finito di campioni. Questo, nella situazione che qui ci interessa, si può realizzare in due modi: a) scegliere con criteri più o meno raffinati un numero finito di punti sul grafico e usare questi punti come campioni rappresentativi (lasciando all 'immaginazione il compito di colmare i vuoti); b) rimpiazzare la funzione f in esame con un'altra funzione,

la quale sia un'approssimazione della prima e abbia una forma opportunamente maneggevole, e disegnare il grafico di questa seconda funzione. Approssimazioni particolar­ mente consigliabili dal punto di vista b) sono quelle con fun­ zioni costanti a tratti e quelle con funzioni lineari a tratti. Le prime (che in qualche contesto si chiamano anche digi­ talizzazioni) saranno considerate nel paragrafo 4.2, le altre nel paragrafo 4.3. Qui cominciamo ad affrontare il problema secondo il punto di vista a). Supponiamo di avere una funzione / (x) definita in tutti i punti di un intervallo [a, b] . Iniziamo col campionare la fun­ zione così come si è fatto nel capitolo l . Fissiamo il numero n + l dei punti in cui campionare f e facciamo una scansio­ ne dell 'intervallo [a, b] con passo costante. Otteniamo così

y

f (x)

--------------

o Figura 4.1

Grafico di una funzione.

x

x

Grafici di funzioni

i seguenti punti o nodi: Xk

= a + kh

dove

h=

(k = O, l , . . . , n) b-a

--

n

è il passo della scansione. Naturalmente, anziché prendere punti equidistanti avrem­ mo potuto fare una scelta diversa, come vedremo in seguito quando ci occuperemo di campionamento con passo adatta­ bile. Qui seguiamo la strada più semplice, che funziona di­ scretamente nella generalità dei casi. Calcoliamo ora i valori

Immaginiamo di voler rappresentare sullo schermo un insieme di punti del piano (x, y), quale potrebbe essere il grafico della funzione f o una parte di esso o ancora una discretizzazione di uno di questi due. Per prima cosa dobbiamo imbottigliare il nostro insieme (o la parte di esso che vogliamo esaminare) in un rettangolo con lati paralleli agli assi; diciamo: a :S x :S b, min :S y :S max . Qui min e max sono rispettivamente il minimo e il massimo che può assumere l ' ordinata dei punti in esame; similmente a e b. Per seconda cosa normalizziamo le coordinate x , y in modo da trasformarle in coordinate del rettangolo:

della nostra funzione nei nodi scelti e disegnamo, in un piano riferito ad assi cartesiani ortogonali, i punti:

x-a x1 = sx --- , b-a max - y , y = sy . max - mm

k = O, l , . . , n. .

Queste formule sono in sostanza il prodotto di una trasla­ zione e di due omotetie (cambiamenti di scala). Col linguag­ gio della geometria si potrebbero chiamare affinità e sono quelle stesse trasformazioni utilizzate ad esempio nelle carte geografiche e, più o meno implicitamente, da chiunque fac-

y - - Yn

y,

sx = numero dei pixels su ogni riga orizzontale, sy = numero dei pixels su ogni riga verticale, lo schermo grafico è l 'esatta immagine dell ' insieme dei punti (x, y) tali che x = O, l , . . , sx e y = O, l , . . , sy . I numeri sx e sy sono una caratteristica del calcolatore, sono tanto più grandi quanto più alta è la risoluzione e si leggono sul manuale delle istruzioni. Si tenga presente che nella maggior parte dei calcolatori l'asse delle y è orientato verso il basso (in accordo con l ' assetto lessicografico delle pagine scritte in lingue occidentali). .

.

O :S y' :S sy.

O :S x ' :S sx, Le formule ad hoc sono:

f(x o ), f(x J ), . . . , f(x n )

L' insieme di questi punti è il risultato del nostro algo­ ritmo, che può essere considerato una descrizione del grafico di f (fig. 4.2). Il calcolatore può essere usato sia per ottenere i numeri richiesti sia per disegnare i punti corrispondenti. Per questo ultimo scopo è conveniente usare il modo grafico dello schermo. Lo schermo grafico, attivabile attraverso opportuni co­ mandi (che possono variare da macchina a macchina e sono descritti nei manuali delle istruzioni), è una griglia di pixels, cioè punti che possono essere accesi o spenti, che si susseguono da sinistra verso destra e dall ' alto verso il basso e sono numerati per mezzo di coordinate intere. In altri termini lo schermo grafico può essere considerato a tutti gli effetti come il reticolo dei punti del piano (x, y) che stanno in un rettangolo con due lati sugli assi coordinati e le cui coordinate sono numeri interi. Più precisamente, se poniamo:

97

Yo - -

o

a x0 x, h=

x, X3 • • •

(b - a ) / n,

X; · · · X; = a + ih, Y; = f (x; )

Figura 4.2 Campionamento in nodi equidistanti.

b

x

98

Capitolo quarto

eia disegni su carta millimetrata. Come tutte le affinità queste trasformazioni non alterano proprietà geometriche fondamentali della figura, anche se alcune proprietà metri­ che possono essere deformate. Un accorgimento va però aggiunto a queste formule, in modo da maneggiare coordinate intere, quali sono quelle dei pixels sullo schermo. L' accorgimento può essere o un brutale troncamento di x ' , y' con la loro parte intera (come può essere automaticamente fatto dai comandi grafici del computer) o meglio un arrotondamento ali ' intero più vicino, rimpiazzando cioè x' e y' con: INT (0.5 + x ' ) INT (0.5 + y'). In definitiva, campionata la funzione come sopra detto, si otterrà un' immagine del grafico - o di una sua parte - sullo schermo chiedendo al calcolatore di attivare i pixels le cui coordinate sono gli interi più vicini a: x ,k = sx

Xk - a b-a '

max - f(x k ) , , k = O, l , . . . , n. Y k = sy max - min Il grafico di f sarà interamente visibile se i numeri max e min usati nella formula precedente sono esattamente il massimo e il minimo di f o dei valori campionati. Si possono attribuire a max e min anche valori che eccedono il massimo e il minimo autentici: in tal caso si otterrà una figura un po' schiacciata, tanto più schiacciata quanto più ci si allontana dai valori autentici. D' altra parte si possono attribuire a min e max anche valori più grandi del minimo effettivo e più piccoli del massimo effettivo: in tal caso non tutto il grafico di f sarà visibile sullo schermo ma soltanto una fetta. Ad esempio, una scelta di questo tipo può essere fatta deliberatamente nel caso che si voglia aprire una finestra, quando cioè si voglia guardare il grafico non nella sua interezza ma soltanto in un piccolo rettangolo attorno a un punto prefissato. In questo caso min e max vanno scelti dall'operatore in relazione alle dimensioni della finestra che interessa. Nell ' altro caso, o si conoscono già a priori min e max oppure si calcolano con un semplice algoritmo ad hoc di cui ci occuperemo tra breve. Si osservi che le formule precedenti si semplificano se il numero n+ l dei nodi è preso esattamente uguale al numero sx dei pixels disponibili sulle righe orizzontali. In tal caso, infatti, l ' indice del nodo è proprio uguale alla coordinata che il nodo ha sullo schermo. Il precedente, in assenza di altri, può essere un criterio per la scelta del numero dei nodi.

Se la funzione f è molto difficile da calcolare può essere conveniente prendere n sensibilmente più piccolo di sx e pagare il prezzo di una certa grossolanità del disegno. Se la funzione mostrasse un comportamento bizzarro potrebbe essere necessario scegliere n anche molto maggiore di sx. Il codice SIMPLEGRAPH riassume le cose dette. In questo codice, come in tutti gli altri di questo capitolo, alcune istruzioni (in particolare quelle riguardanti la grafica) sono scritte in italiano anziché in BASIC. Questo a causa della varietà dei dialetti BASIC in uso. Il lettore interessato a usare i programmi di questo capitolo dovrebbe tradurre, consultando il manuale ad hoc, tali istruzioni nel dialetto BASIC capito dalla macchina a sua disposizione. Si tratta delle istruzioni seguenti: Cancella lo schermo Attiva il modo grafico Disegna un punto Disegna un segmento tra due punti Chiedi un carattere (per restare in attesa di ordini)

Avvertenza: il codice SIMPLEGRAPH e tutti gli altri programmi di questo capitolo potrebbero essere notevol­ mente semplificati se si facesse ricorso a un' istruzione che quasi tutti i più recenti linguaggi BASIC hanno, l 'istruzione WINDOW. Infatti l'istruzione WINDOW (a, c) - (b, d) identifica il punto dello schermo in basso a sinistra con il punto (a, c ) del piano (x, y) e il punto in alto a destra dello schermo con il punto (b , d). In altre parole questa istruzione condensa tutte le trasformazioni geometriche (traslazioni e omotetie) che sono necessarie per rappresentare un dato rettangolo su tutto lo schermo. In questo capitolo faremo un uso sporadico dell 'istruzione WINDOW, sia perché può essere istruttivo analizzare in dettaglio tutte le fasi del disegno grafico, sia perché non tutti i linguaggi BASIC hanno questa istruzione. Il lettore può provare a usare il codice SIMPLEGRAPH per funzioni che abbiano massimo e minimo facilmente prevedibili o stimabili. A esempio: f(x) = 2 cos x - 3 sin(3x). Questa funzione, che non è restrittivo considerare soltanto tra O e 21r, ha evidentemente i suoi valori nell'intervallo [ - 5, 5]. Il disegno che si ottiene, applicando il codice precedente relativamente ad a = O, b = 21r, min = - 5 , max = 5 è illustrato nella figura 4.3.

Grafici di funzioni

Nome Scopo Dati Risultato Algoritmo

SIMPLEGRAPH Disegnare il grafico di una funzione abbastanza semplice. Una funzione f , un intervallo [a, b], due numeri (detti min e max , il primo minore del secondo), un intero n. Disegno dei campioni di f, fra quelli relativi a n nodi equidistanti, che cadono nella banda tra min e max. a) Definire h = (b - a)jn, Xi = a + i h (i = O, l , . . . , n); b) calcolare il valore Yi della funzione f nel punto x; ; c) disegnare, in una scala opportuna (dipendente dalle dimensioni dello schermo, dalla lunghezza di [a, b] , da min e max), quelli fra i punti (xo , yo), (x i , YI ), . . . , (xn , Yn ) le cui ordinate Yi verificano mi n :S Yi :S max. Definisci la funz ione da stud i are .

10

D E F FNF ( X ) =

15

Canc e l l a l o schermo

20

PRINT ''estremi del l ' i nterval lo"

22

INPUT " s i n i stro"

;

essere studiata .

30

PRINT "estremi della fWl.z i one"

32

lNPUT " i nfer iore"

40

INPUT " quanti nodi 11

50

SX=

Chiedi gl i estremi de ll ' i nterva l l o , in cui la fun z i one deve

INPUT " destro"

A

;

MIN

;

INPUT "superiore"

MAX

Chiedi i l i m i ti , entro cui i campioni devono essere pres i . Chiedi i l numero dei nodi , i n cui l a funzi one deve essere

N

campionat a . D e f i n i s c i i l numero d e i p ixels dispon i b i l i

SY=

( SX=

numero d e i

p i xels sulle righe oriz zontal i , S Y = numero dei p i xe l s sul le righe verticali 60

H= ( B-A ) /N

K=SX/N

L=SY / ( MAX-M I N )

J

Memori zza il passo della s cans ione e due altri fattor ì di scal a .

100

Comandi p e r atti vare i l modo grafico

D i sponi lo schermo n e l modo grafi co .

1 10

FOR I=IJ TO N

Predisponi la scans i one .

120

X=A+ I * H

Prendi uno dei nodi , in cui la funzione deve essere camp ionata

[ rn

questo programm a , la funz i one è camp ionata neg l i

punti equi dis tant i : 130

IF X= .

• •

OR X= .

• •

x =a+i ( b-a ) /n i

Salta il punto . . . e il punto . . .

THEN 180

( i =O , l , . . . , n )

[ Questa

]

(n+1 )

i s truz i one , oppure

varianti di essa, deve essere usata solo se la funz i one ha s i ngolar i tà nel l ' interval lo consi derato ; altrimenti deve essere omessa 140

Y=FNF ( X )

1 50

IF

]

Calcola un camp ione .

MIN> Y

OR

160

X= I * K

162

X=INT ( . 5+X )

MA X < Y

Vai oltre , s e il camp i one

THEN 180

Y = L * ( MAX-Y )

Normal i z z a le coordinate .

Y=INT ( . 5+Y )

170

D i segna il punto

180

NEXT I

190

Chiedi un carattere C$

fuori dei l i � i ti prescel ti .

Arrotonda a l l ' intero p i ù v i c i no .

(X,Y)

D i s egna i l punto , che ha le coordi nate indicate . Prosegu i , o arres t a , la scans ione . IF C$ =

"11

THEN 190

Attendi che l ' operatore b atta un tasto , po i prosegui

[ Questa

i s truzi one serve per conservare l ' assetto dello schermo , fino a quando l ' operatore batte un tasto qua l s i as i 200 210

IF

A * B > {Il

THEN 220

X=-SX* A/ ( B-A )

X=INT ( . 5+X )

Di segna il segmento fra 220

IF

230

Y= L *MAX

MIN*MAX> {Il

THEN 250

( X , {li )

e

( X , SY )

e

( SX , Y )

Y=INT ( . 5+ Y )

Di segna i l segmento fra 250

C$ = " "

255

Chiedi un carattere C$

300

END

( {II , Y )

IF C$ = 1111 THEN 255

J

D i segna l ' asse de l l e ordinate , se lo zero è dentro l ' i nter= vallo consi derato .

D i s egna l ' asse de l l e asc i s s e , se lo zero è entro i limi ti

prescel ti .

99

100

Fi g ura

Capitolo quarto

4.3

Grafico della funzione j ( x )

==

2 cos x - 3 sin ( 3 x ) ne l l ' intervallo O ::;

::; x ::; 27r.

Un altro esempio è la funzione: f(x)

= 8 sin x + 4 sin(2x) + 2 s in(6x) + sin(24x ) ,

anc h ' essa periodica di periodo 2 7r , p e r la quale si può scegliere: max = 8 + 4 + 2 + l = 1 5 , min

= - max ,

Come abbiamo affermato precedentemente, è possibile incaric are l a macchina stessa di scegl iere una scala verticale appropriata per far entrare tutto i l grafico dentro l o schermo . A l l o scopo basta istruire la macchina a calcolare il minimo e il massimo dei valori campionati e integrare i l programma precedente con queste istruzion i . Come s i può calcolare i / minimo e i l massimo d i una col lezione yo , Y 1 , . . . , Yn di n + l numeri? Questo proble­ mi no è un esempio di quelli che ogni persona afferra im­ medi atamente senza bi sogno di spec iali commenti ma che devono essere descritti minuziosamente - malgrado la loro sempl icità - se dati in pasto alla macchina. Il problema si ri­ solve né più né meno come chi unque farebbe, magari incon­ sciamente . se dovesse di sporre di sola carta e matita. Si tratta del seguente algoritmo ricorsivo. Partiamo dalla congettura che il più piccolo fra tutti i numeri sia proprio y0 , c ioè i l primo. Consideriamo quindi i l secondo elemento y 1 , confrontiamo questo con i l minimo congetturato e conferm iamo o aggiorniamo la congettura a seconda del risultato del confronto . E così via. Dopo n passi i l minimo è in mano nostra. Analogamente per il massimo. In formule questo di scorso si prec i sa nel modo seguente . Definiamo ricorsivamente una successione:

in questo modo: a) mo = Yo b) per k = l , 2 ,

(fig. 4.4 ) .

. . . , n , mk è

il più piccolo fra m k - l e Yk cioè: m k - 1 S Yk Yk < m k - 1 ·

se se Evidentemente mn

= min { yo , Y l , . . . , Yn } ·

Analogamente s i procede per la determinazione del mas­ simo. L' algoritmo appena descritto può essere codificato nel modo seguente :

Y(O).Y( l ) . . . ,Y(N) Y(O) : MAX Y(O) I l O FOR I == l TO N 1 20 Y == Y(I) 1 30 I F MIN > Y THEN MIN Y 1 40 I F MAX < Y THEN MAX Y ! 50 NEXT I 1 60 PRINT "min = " MIN "max = " MAX .

. . . Introduci i numeri

1 00 MJN

==

==

==

==

,

Fi g ura

4.4

Grafico della funzione f(x) nel l ' intervallo O ::; x ::; 2 rr .

==

8

sin x + 4 sin(2x) + 2 sin(6x)

+ sin( 24x)

Il codice GRAPH che segue può essere usato per disegnare il grafico di una funzione con scelta automatica della scala.

Grafici di funzioni

Nome Scopo Dati Risultato Algoritmo

101

GRAPH Disegnare il grafico di una funzione. Una funzione f, un intervallo [a, b], un intero n. Disegno dei campioni di f, relativi a n nodi equidistanti. a) Definire h = (b - a)jn, x; = a + i h (i = O, . . . , n); b) calcolare il valore Yi della funzione f nel punto x; ; c) calcolare il più piccolo e il più grande tra lo zero e i campioni della funzione; d) disegnare, in una scala opportuna (dipendente dal massimo e dal minimo calcolati), i punti (xo, yo) , (X I , Yl ) , . . . , (x n, Yn l·

l,

Cancella lo schermo

10-20 : Ingresso d i alcuni dat i . Chiedi gli estremi de l l ' interval lo , in cui la fun z i one deve

10

PRINT "e stremi del l ' interval l o "

12

INPUT " s i n i s tro11 ; A : I NPUT " destro " ; B

essere studiata.

INPUT " quanti nodi " ; N

Chiedi i l numero dei nod i , in cui l a funzi one deve essere

20

camp ionata . 30-140 : C ampi onamen to . 30

DIM F ( N )

Prepara spazio per una l ista di

40

H= ( B-A ) /N

Memorizza il p asso d e l l a s cans i one .

50

FOR 1=0 TO N

camp i on i .

Predisponi la scansione . Prendi uno dei nod i , in cui la funzione deve essere camp i onata

60

[rn

questo programma , l a funz ione è camp i onata negl i

punti equ i d i stanti : 70

( n+ l )

IF X= •

• •

OR X= •

• •

THEN 140

Salta il punto .

. •

x =a+ i ( b- a ) /n i

( i =O , l , . . . , n )

[ Questa

e il punto . . .

J

( n+ l )

i struzi one , oppure

varianti d i essa , deve essere usata solo se l a funz ione ha s i ngol ar i t à nell ' i nterval l o cons iderato i al trimenti deve

essere omessa 100

Y= •

. •

J

Calcola la funz i one nel nodo sopra spe c i fi cato

( La

funzione

introdotta i n questo punto del programma . Dare un congruo nume= ro d i i s truzioni , dopo l a 70 e prima de l l a 130 , per calcolare i l valore

Y d e l l a fun z i one n e l p un to

X . Se l a fw12 i one non è

troP po comp l i cata , si può usare una formula chius a j altriment i ,

occorre inserire un sottoprogramma . 130

]

F ( I ) =Y

Regi stra il precedente campi one nel posto n° i d e l l a l i s ta .

[ Questa

135

PRINT I ; TAB ( 7 ) X ; TAB ( 23 ) Y

Mostra nodi e camp ioni

140

NEXT I

Prosegui , o arresta , l a scansione .

i struz ione è facoltativa

1 50

MIN=O : MAX=O

152

FOR 1=0 TO N

[ Determina

1 54

Y=F ( I )

J

150-170 : Minimo e mas s i mo .

1 56

IF

MIN > Y

THEN M IN=Y

1 58

IF

MAX < Y

THEN MAX=Y

160

NEXT I

200

SX= •

200-290 : • •

SY= •

• •

H=SX/N

K=SY / ( MAX-M I N )

]

]Ji segno .

Defi nisci il numero dei p i xels d i sponi b i l i

[SX=

num . dei p i x e l s s u l l e r ighe ori zzonta l i ,

SY= nwn .

210

il p i ù p i ccolo e il p i ù grande fra i seguenti

numeri : lo zero e i camp ioni della funzi one

dei p i xe l s sulle righe ver t i c a l i

Memor i z za dei fattori di scala

J (segue)

102

Capitolo quarto

220

Comandi per a t t i vare il modo grafi co

230

FOR I = 0 TO N

240

X= I • H :

242

X = I N T ( . 5+X )

D i sponi lo schermo n e l m o d o gr afi c o .

Norma l i zza l e coor d i nate .

Y = K • ( MAX- F ( I ) ) :

Arrotonda a l l ' i n tero p i ù v i c i n o .

Y= I N T ( . 5 + Y )

250

D i segna il punto

260

N E XT I

270

C h i e d i un c ar a t tere C$

D i segna i l p un to , che ha l e c oo r d i nate i n d i cate .

(X,Y)

IF C $ = " "

Attendi che l ' operatore batta un tasto ; prosegui non appena

THEN 270

un tasto qua l s i as i è s ta to battuto

[ Que s ta

i s tru z i one serve

per conservare l ' a s s e t to dello s c hermo , fino a quando l ' ape� ratore batte un tasto qual unque 280

Y= K *MAX

:

Y = I NT ( . 5+ Y )

D i segna i l segmento fra 282 284

IF

A•B> 0

THEN 290

X=-S X • A / ( 8 -A )

:

( Ql , Y )

X=INT ( . 5+X )

D i segna i l s egmento fra

290

C$ = " "

295

C h i e d i u n c arattere C $

300

END

4.5 Grafico della funzione f(x ) :S x :S 30.

:

e

e

IF C $ = " "

Figura

=

D i segna l ' as s e del l e a s c i s s e .

( SX , Y )

Di-segna l ' asse del l e ord i nate , se lo zero è dentro l • i n ter=

:

(X,0)

J

va l l o cons i derato .

( X , SY )

THEN 2 9 5

. x " - 6x + 5 sm " x ne Il ' mterva I lo 3 0 < 2 x + x + l -

_

In questo codice si è preferito non usare l ' istruzione DEF, allo scopo di non escludere quelle funzioni (come ad esem­ pio polinomi di grado elevato) la cui definizione richiede una vera e propria subroutine. La funzione dovrà essere in­ trodotta nei paraggi dell'istruzione l 00 o con una formula chiusa oppure con una subroutine. Le figure 4.5 e 4.6 mostrano esempi ottenuti applicando il

Figura 4.6 Grafico della funzione f(x) = exp [- 72(x - 1 / 2) 2 ] 4sin(25 x) l nell' intervallo O :S x :S l .

·

[cos(25 x) -

codice GRAPH alle funzioni: f( x ) =

x 2 - 6x + 5 . sm x, x2 + x + l

- 30

::; x ::;

30

f( x) = e x p [ - 72 (x - 1 /2 2 ) ] { cos (25 x) - 4 sin (25 x) } , o ::; x ::; l .

103

Grafici di funzioni

4.2 Istogrammi

4.2. 1 Istogrammi di funzioni

L'istogramma di una funzione è la rappresentazione gra­ fica che si ottiene riportando, in corrispondenza a valori rappresentativi della variabile indipendente, dei segmenti paralleli all' asse delle ordinate (o dei rettangoli con lati paralleli ali ' asse delle ordinate) la cui misura è proporzionale al valore della funzione. L'istogramma si presta particolarmente bene a descrivere successioni (cioè funzioni di una variabile discreta) o fun­ zioni che possono essere campionate in un numero di punti non particolarmente elevato. In termini più precisi la matematica che sta dietro è la seguente. Supponiamo di avere una funzione f(x) definita sull ' intervallo a :::; x :::; b e dividiamo [a , b] in n parti uguali mediante i punti: Xk = a + kh

dove

(k = O, l , . . . , n),

b-a h = -- . n

In ogni intervallo [x k - l , xk ] scegliamo un punto rappresenta­ tivo, ad esempio il punto di mezzo: a + (k - I /2)h

e calcoliamo la funzione in ciascuno di questi punti. Consideriamo quindi la funzione costante a tratti Tn (x) il cui valore sull ' intervallo [Xk - 1 , xk ) è proprio:

In formule:

dove li sta a indicare la funzione caratteristica. L' istogramma di f è, per definizione, il sottografico di Tn : cioè la parte di piano che sta tra il grafico propriamente detto di Tn e l'asse delle ascisse. In altri termini, costruire l'istogramma di f consiste nel rimpiazzare f con una più semplice funzione costante a tratti Tn (digitalizzare f) e nel disegnare con esattezza il grafico di Tn (fig. 4.7). Il procedimento non va considerato soltanto come un ar­ tificio grafico, ma è sorretto da un fatto matematico genui-

y

O

b

a X0 x, x2 X3 X4 • • •

x

4.7 Istogramma di una funzione. Figura

no: se f è sufficientemente regolare, Tn - f è arbitrariamente piccola pur di scegliere n sufficientemente grande. Una situazione analoga è già stata incontrata a proposito delle formule di quadratura. Abbiamo il seguente teorema (la cui dimostrazione segue facilmente dal teorema di Lagrange): Teorema 4 . 1 Supponiamo che la derivata prima di f sia limitata in [a , b] : l / ' (x) 1 ::::: L.

Allora:

b-a l /(x) - Tn (x) 1 ::::: L � ,

in particolare Tn converge uniformemente a f per n che tende all' infinito.

Due parole sul grafico di Tn . Questo si disegna nel modo già detto, una volta che sia chiaro come campionare una funzione costante a tratti. Fissato x nell ' intervallo [a , b] , il valore di Tn in x si calcola in due tappe: a) si determina l' intervallo [Xk - l , Xk) a cui appartiene x; l ' in­ dice k di tale intervallo è determinato dalle disuguaglianze:

ossia: n

x-a x-a Y

THEN M IN=Y

1 38

IF

MAX < Y

THEN MAX=Y

140

NEXT I

200

SX= •

210

H=4

• •

SY= •

Questa i s truzi one è fac o l tativa

• •

Definisci il nwnero dei p i xe l s disponib i l i . Defi n i s c i il passo ( i . e .

la distanza fra segmenti consecutivi )

de l l ' i s togramm a . 220

K=SY / ( MAX-MI N )

230

ZERO=K•MAX : ZERO= INT ( . 5+ZERO )

Defini sci un fattore d i scal a . Definisci l a quo ta , c he l o z e ro h a sullo schermo presa in modo che

min

&:

sull a riga p i ù alta d e l l o

[ La scala schermo , ri spettivamente J .

max vanno sulla riga p i ù bassa e

è

Grafici di funzioni 240

107

240-350 . D i s egna l ' i stogramm a de l l a successione . Scandisci l a

I=�

l i s t a dei camp ioni , dal l ' i n i z i o a l l a fi ne ( qui

i

è l a vari b i le

ad hoc ) ; s ud di vidi la l i sta in p i ù lotti , e usa la pagina gra=

fi ca più volte di seguito , se necessari o ; presenta l ' i s togramma di un lotto alla volta , sopra una pagina grafica a l l a volta . 250

Dai la pagina grafi c a ; oppure canc e l l a e ripristina la pagina

Comand i per i l modo grafi c o .

grafic a . 260- 3 1 0 . D i s egna l ' i stogramma di un lotto di campioni - d i tanti

260

FOR X=� TO SX STEP H

270

Y= K• ( MAX-F ( I ) )

280

Di segna il segmento fra

290

1=1+1

300

IF

310

NEXT X

320

Chiedi un carattere C$

330

GOTO 250

340

C$ = " "

350

Chiedi un carattere C$

400

END

camp ioni al più quanti segmenti verti c al i , ci ascuno a distanza

Y=INT ( . 5+Y ) e

( X , ZERO )

h

dai contigui , p ossono al loggi are ne l l o schermo . I n i z i a dal margi=

(X,Y)

ne s i n i s tro de l l o schermo e vai avanti fino a quando l a lista

I> N

dei camp i oni è esaur i t a , oppure i l margine destro dello schermo

THEN 350

IF C$

= '1 1'

è raggiunto ( qui

THEN 320

x

è l ' ascissa sullo schermo ) .

320-350 . Conserva l ' assetto dello schermo , fi no a quando l ' ope= ratore batte un tasto . Poi xai a l l ' i struzione 400 oppure ripeti

IF C$

=

i l segmento 250-31 0 , a seconda che l a l i sta dei campioni s i a

"" THEN 350

esaurita oppure no . F i ne del programma .

Supponiamo anche che /([a, b]) C [a, b], cioè che f trasfor­ mi l ' intervallo [a, b] in se stesso. Esempi di questo tipo sono già stati trattati nel capitolo l e nel capitolo 3 a proposito del metodo di Newton: infatti le approssimazioni successive di una radice, che il metodo di Newton fornisce, si calcolano proprio con procedimenti del genere. Le figure 4. l la e 4. l l b suggeriscono un modo per fabbricarsi graficamente la successione Xn · L' istogramma può essere utile per farsi un ' idea dell ' anda­ mento della successione [4. 1 ] , in particolare per congetturare se il limite di questa successione esiste o no. Un codice per disegnare l ' istogramma di una successione come la [ 4. 1 ] è il codice ITERAZIONI.

I l i l, I l Figura 4.10

Numero dei divisori dì

x; x =

{

Ad esempio, consideriamo la successione così definita:

1 00 , . . . , 250.

Qui 4.2.3 /stogrammi di successioni, ulteriori esempi

Consideriamo successioni definite per ricorrenza da leggi del tipo: xo = dato [4. 1 ] (n = O, l , 2, . . . ) , Xn+ l = f ( x n )

{

dove f è una funzione che supponiamo data in forma chiusa.

xo = 50 Xn+ l

=

-�--=l=+=x=�� ,

n = O, l , 2, . . .

[4.2]

l f ( x ) = y'1+;2 '

una funzione definita in ( - oo , + oo) il cui codominio è (0, 1 ] . S i può dimostrare che l a successione [4.2] converge e che il suo limite è: [4.3]

108

Capitolo quarto

Nome ITERAZIONI Scopo Disegnare ristogramma della successione Xn definita dalla seguente legge ricorsiva: xo = dato, Xn = f(xn- 1 ) (n = 1 , 2, 3 , . . . ) . Dati Una funzione f, un intervallo [a, b] (che f trasforma in se stesso) , un numero xo di [a, b] . Risultato Disegno di un istogramma parziale. in una o più pagine, della successione considerata. Il disegno si arresta a un comando dell ' operatore, oppure quando il numero delle iterazioni eccede un limite prefissato.

10

DEF FNF ( X ) = •

20

A= . . .

25

REM I numeri

per ogni

• •

: 8= •

• •

a , b e la funz i one

x tal e che

30

L=2000

a 5: x� b



fnf devono veri fi care :

REM N um ero de lle i teraz ioni .

40

MIN=O : MAX=O

42

IF

A c::: O

THEN MIN=A

44

IF

8 >O

THEN MAX=8

46

REM min= m inimo fra O , a , b i max= massimo fra O , a , b

50

SX= •

• •

a destra)

: SY= . . .

REM Coordi nate del l 1 ultimo p i xel { quel lo i n basso

dello schermo .

52

H=4

54

K=SY / ( MAX-MI N )

56

ZRO=K•MAX : ZRO= I N T ( . 5+ZRO )

60 65

INPUT 11punto ini ziale" i X

70

N=O

80

Attivare i l modo grafico

IF

REM Distanza fra segmenti consecutivi de l! • i stogramm a .

Xc::: A

OR

R E M Fattore di scal a ,

X>8

THEN 60

Cancel lare l o schermo

100

FOR I=O TO SX STEP H

120

REM Quota d i ri ferimento . REM Definire REM x 0

x • 0 deve essere fra a & b



REM I n i z i a l i zzare i l contatore del l e i terazion i .

90 1 10

a � fn f ( x ) !:: b

REM Disegnare una pagina.

N=N+ l

REM Aggiornare il contatore de l l e i teraz ioni .

IF

THEN 2 1 0

N>L

REM Fermare i l programm a , se i l numero delle

i teraz ioni eccede i l l im i te prestab i l i to . 1 50

X=FNF ( X )

160

J=K4 ( MAX-X )

162

J=INT ( . 5+J )

170

Linea fra

REM Calcolare

Xn . REM Nonnal i z zare

X n nel la scala appropriata . REM Arrotondare al l ' intero p i ù v i c ino . ( I , ZRO ) & ( I , J )

REM Segmento vertical e , propor z i onale a Xn :

uno de i segmenti , che compongono l ' is togramma . 180

NEXT I

190

C$= " "

192

Chiedere un carattere

194

IF C$= " " THEN 192

( C$ = I NKEY$ , oppure

GET C$

, • • •

)

REM Attendere che l ' operatore prema un tasto .

196

IF C$= " S " THEN 300

1 96

REM Premere il tasto S per fermare anz i tempo il programma i premere un

tasto qualsiasi per proseguire . 200

GOTO 90

210

C$='"'

212

Chiedere un carattere

214

IF C$= " " THEN 212

300

END

Grafici di funzioni

è strettamente minore di uno, allora il grafico di f interseca la bisettrice del primo e del terzo quadrante esattamente in un punto e la successione delle iterate [4 . 1 ] converge proprio all ' ascissa di tale punto (indipendentemente dal punto di partenza). L' uso del codice precedente conferma tutto ciò per l 'esempio considerato. Altri esempi, invece, anche se apparentemente semplici, producono successioni dal comportamento più complicato. Si consideri in proposito la seguente successione:

y y=x

{ xo

y = f (x)

= dato in (0 , l )

Xn + l

o

Xo

x2 x4 X6

x7 x5 x, x,

x

y = x, bisettrice

y = f ( x)

x

(l

)

- Xn ,

[4.4]

il cui grafico è una parabola rovesciata che passa per i punti (0, 0), ( l , 0) e con asse la retta x = l /2. Il massimo di f è proprio a, dunque f applica l ' intervallo [0, l ] in se stesso se

O < a :S l .

L'esempio che stiamo considerando è stato proposto come modello di dinamica di popolazioni (modello di Verhulst). Supponiamo che Xn sia il numero di individui di una certa popolazione al tempo n. Il tasso di crescita della popolazione è l 'incremento relativo, cioè il rapporto:

H-, =

(a) Iterazioni: xo dato, X n = j(xn- 1 ) (n = l , 2, 3, processo iterativo: Xn = f(xn·- 1 ).

. . . ); (b) una fase del

Infatti si può facilmente verificare che 2

l f (x) l :S 3/ 2 ' 3 e che l 'unica radice positiva dell'equazione

x = f(x) è proprio il valore [4.3] . D' altra parte un teorema generale (parente del teorema sulle contrazioni) garantisce che se una funzione f applica l ' intervallo [a , b] in se stesso e il massimo della derivata di f

Xn + l - Xn Xn

.

Se si supponesse H-n = costante > O, il numero di individui della popolazione al tempo n sarebbe: Xn

(b)

l

Xn

f(x) = 4ax( l - x),

y

Figura 4.11

=4a

dove a è un numero nell' intervallo (0, l ] . In questo esempio

(a)

o

109

= xo ( l + R)" ,

cioè crescerebbe esponenzialmente. Ma questo tipo di cre­ scita non è alla lunga consentito in un ambiente con risorse limitate. Appare dunque più realistico ammettere che il tasso di crescita della popolazione cambi nel modo seguente:

H-, =

a -

f3xn ,

cioè decresca al crescere della popolazione fino a diventare nullo o negativo. Con questa ipotesi la dinamica della popolazione è del tipo di quella descritta dal modello [ 4.4] . Osserviamo incidentalmente che questa successione è quella stessa che si otterrebbe applicando il metodo di Newton alla funzione:

l - 4a ) - l .::!a ( 4a + --, x

110

Capitolo quarto

chiudendo gli occhi sul fatto ovvio che l'unico zero di questa funzione è x = l - l /4a e sul fatto che in questo zero la fun­ zione in realtà non è derivabile. Il codice ITERAZIONI può essere usato per costruire istogrammi della successione [4.4] al variare del punto iniziale x0 e del parametro a (fig. 4. 1 2). Si desume da queste figure che la successione Xn ha un limite (zero o no) se a non è troppo grande. Altrimenti la successione ha più di un punto limite e il suo comportamento diventa rapidamente caotico man mano che a si avvicina a uno. Come ulteriore esempio consideriamo la successione de­ finita da: xo = numero tra O e 1r _ Xn + l = 1rp SIO(X n ),

{

(c)

dove p è un numero tra O e l . Le figure 4. 1 3 mostrano il comportamento della succes­ sione per alcuni valori di p. Il lettore provi a ottenerne altri al variare di p.

(a)

(d)

4.12 (a) Xn + l = 4axn 0 - Xn); a = 0.75, xo = 0.001 ; (b) a = 0.8, xo = 0. 99; (c) a = 0.9, xo = 0.8 ; (d) a = l , xo = 0.0001.

Figura

4.3 Interpolante lineare a tratti

(b)

Come si è detto nel paragrafo introduttivo, un metodo per tracciare il grafico di una funzione consiste nel rimpiazzare la funzione data con un ' altra, che la approssimi convenien­ temente ma che sia tecnicamente più maneggevole, e nel disegnare in dettaglio il grafico di questa seconda funzione. Questo punto di vista è già stato adottato nel paragrafo dedi­ cato agli istogrammi, i quali sono in realtà grafici di funzioni approssimanti costanti a tratti. Analogamente, possono es­ sere usate per lo stesso scopofunzioni lineari a tratti. Queste

Grafici di funzioni

111

funzioni hanno come grafico una poligonale. Se i vertici di questa poligonale si trovano sul grafico di una funzione f , si parla di funzione lineare a tratti che interpola f. In dettaglio le cose vanno nel modo seguente. Supponiamo che sia data una funzione f(x) definita sul­ l ' intervallo [a , b] e, ancora una volta, suddividiamo [a , b] mediante i punti : Xk (a)

dove

= a + kh (k = O, l ,

. . .

, n)

h = b -n a · --

Calcoliamo f in tutti questi nodi e otteniamo i numeri:

Yo = f ( xo),

Yl

=

f(x ) , 1

• • •

,

Yn = f ( xn ).

Consideriamo ora l a funzione, che chiamiamo L n , il cui grafico è la poligonale con vertici nei punti:

(x o , Yo),

(x l , Yl ),

· · ·

,

(xn , Yn l

(fig. 4. 1 4 ). In formule il valore di L n in un punto x di [a, b] è dato da: ; -

X X L n ( x ) Yi X - i - l + y;- 1 -h- , h dove l ' indice i è tale che X

=

(b)

x; - ! :=; x :=; x; ,

i = 1 , 2, . . , n. .

y

y = f (x)

Figura

4. 13

(c)

(a) Xn+ l = p1r sin X n , p = 0. 7 1 5 , X o = 0.0 l ; (b) p = 0 . 8 5 . xo = 0 . 9 : (c) p = 0.99, xo = 0 .0 1 .

o Figura

a x0

b x,

X2 X3 . . .

4.14

U n ' i nterpolante l i ne are

a

tratti .

x

1 12

Capitolo quarto

Alternativamente la funzione Ln può essere rappresentata con la formula: n

Ln( X) = L y;c/>i (X ) , i=O l a quale dice che L n è una combinazione lineare, con coefficienti uguali esattamente ai valori di f nei nodi, delle speciali funzioni l ineari a tratti cPi (che spesso si chiamano funzioni spline ) . Ogni funzione c/>; è per definizione quella funzione lineare a tratti che vale uno nel nodo xi e zero in tutti gli altri. Esplicitamente :

cioè cPi è una traslata e dilatata della seguente speciale funzione: se l x l ::; l altrimenti. Dunque Ln è una funzione, lineare nei tratti considerati, che interpola f. Il grafico di Ln . che è costituito da tanti segmenti, è particolarmente facile da disegnare. Questo grafico può essere considerato una buona immagine del grafico autentico di f , almeno se i nodi sono abbastanza fitti e f non è particolarmente capricciosa. Questa affermazione si basa sul seguente teorema: Teorema 4 . 2

Supponiamo che la derivata seconda di f

sia limitata :

l J" ( x) 1 :::: M

per ogni x E [ a , b ] .

essere fatta sulla base del teorema precedente qualora f sia sufficientemente regolare e siano disponibili le informazioni che occorrono. Nulla esclude che l ' algoritmo possa avere successo anche in situazioni non previste dalla teoria; in tali casi, tuttavia, non è garantito. b) Si suddivide [a, b] in n parti uguali e si campiona la funzione nei nodi. c) Si calcolano il massimo e il minimo dei campioni. Questo allo scopo di scegliere la scala opportuna per il disegno. Nel caso in cui si disponga di informazioni a priori sugli estremi della funzione, questa tappa può essere saltata. d) Si costruisce la funzione Ln interpolante a tratti e si disegna il grafico di quest' ultima. Fine de l i ' algoritmo. Il risultato è un grafico, che approssima quello di f. Un programma ad hoc può essere il codice SINTERLIN. Riprendiamo gli esempi considerati nel paragrafo 4. 1 . Con i metodi del presente paragrafo si ottengono le figure 4. 1 5-4. 1 8 . Il programma precedente presenta l ' inconvenien­ te (o il pregio) di mostrare il grafico in blocco sullo schermo. Nel caso che l ' intervallo [a, b] sia molto lungo e che in esso la funzione sia parecchio movimentata, il comprimere tutto il grafico nello schermo può sacrificare dei dettagli. Dunque può essere preferibile suddividere il disegno in più lotti e disegnare ciascun lotto separatamente. Questo può essere ottenuto col programma INTERLIN. Consideriamo ad esempio la funzione: f(x) = arctg (5 + x/500) - arctg x/500 - 2arctg (5 - x/500)

Allora L n (x) converge umformemente a f i n [ a , b l e l' errore con cui L n approssima f è dell ' ordine di l / n 2 . Più precisa­ mente: M o l Ln ( x ) - f ( x) l ::; S n 2 (b - a ) - .

Questo teorema è anche la base della formula dei trapezi. Osserviamo infatti che

ra b Ln(x)dx = h J

[

( yo + Yn)/2 +

"� ] ,

Yi ,

formula già incontrata nel paragrafo 2. 1 . La dimostrazione del teorema è lasciata al lettore. A questo punto un algoritmo si presenta naturalmente. L' algoritmo consiste nel : a ) Scegliere u n intero n sufficientemente grande, i n modo da garantire la qualità del ! ' approssimazione . Questa scelta può

Figura

j(x)

=

4. 15 2 cos

x-

3

sin(3x). O < x
LBL

292 Linea fra

300 FOR J=1 TO L

THEN 300

: REM Di segnare la parte del grafico , che sta in una pagina .

(segue)

116

Capitolo quarto 310

I=I+l

320

U=X : V=Y

330

X=H'J

332

X=INT ( . 5+ X )

340

L i nea fra

350

IF

3 52

L i nea fra

360

I F I=N THEN 385

: R E M Predeces sore .

: Y=K * ( MAX-LC ( I ) ) : Y = I NT ( . 5+ Y )

:

REM Punto sul grafi co .

:

REM Arrotondamento .

(U,V) & (X,Y)

: REM Un tratto del grafi co .

( X , O ) & (X ,SY)

: REM A s s e de l l e o r d i nate .

I LBL

THEN 360

370 NEXT J 375 Attendere c he l ' operatore batta un tasto 380 GOTO 260 385 Attendere che l ' operatore batta un tasto 400 END

: REM Una pagi na è f i n i t a . : REM L ' u l t i ma pag i n a è fini ta .

e consideriamo la parte di grafico che si vede dalla fi­ nestra. Fotografiamo questa parte di grafico e stampiamo la fotografia in un formato standard, diciamo il formato l x l . Vale a dire, facciamo una dilatazione e traslazione di coordinate che manda il rettangolo [4.4] nel quadrato:

{O " H " THEN 400

( i ) Premere il tasto S per fennare il programma .

380 Riprist inare il modo testo

( i i ) Premere il tasto H per modificare l ' altezza de l l a finestra .

382 PRINT 11 altezza da mod i ficare" i H

( i i i ) Premere un tasto qual s i as i , diverso da S e H , per proseguire .

3 84 GOTO 90 Segmento 400-428 : Aggiornamento 400 L=L/2 : H=H/2

2,! � ·

Dimezzar� le dimens i oni della fines tra .

404 Ripri stinare i l modo testo 406 PRINT " dimens ioni della finestra" PRINT " larghezza" L

,

" a l tezza" H

Comunic azioni a l l ' utente .

(segue)

I 22

Capitolo quarto Segmento 41 0-428 : Campi onamento della funzi one in s ta n t i fra gli estremi agg i ornati la li sta 410 FOR I=S TO l STEP -1 412

LC ( M+2 • I ) = LC ( M+ I )

: L C U!-2• I ) =LC ( Il- I )

414 NEXT I 420 FOR I = l TO N-1 STEP 2 422

X=A+L/N • ( I- M )

424

Y=FNF ( X )

426

LC ( I ) = y

oppure

GOSUB 1 000

428 NEXT I

450 GOTO 100

}

}

a- 1/2 e

LC .

dente l i sta di camp ioni . Registrare tal i valori nei posti pari de l l a l i s ta attuale . Calcolare i valori , che la funzione assume nei nodi d i spari . Reg i s tra= re tal i valori nei posti d i spari d e l l a l i sta attual e .

l n izial izza (Xl , Y 1 ) e (X2, Y2)

+

1 30 Y1 < 0 ?



No



No



Sì 1 40 Y 1 > SY ?

t

-

r-

150 Y2 < 0



t

No

7

200 Y2 > SY

-

220 222 ........_ Sopra Avanti/ Stop Dentro

�.

t

No

210 Y2 < 0

7

7

��+

250 Y2 < 0 ?

270 272 l-+- Avanti/ Stop � Sotto Dentro



.�

1 60 Y2 > SY ?

�+

-+

nod i , equ i d i =

Prelevare i valor i , che la funzione assume nei nodi pari , dalla prece=

500 END

1 70 1 72 Dentro Avanti / Stop � Dentro

(n + l )

a+l/2 . Aggiornamento de l=

t

No

260 Y2 > SY ?

� �

1 80 Dentro Sotto

f-+- Avanti/ Stop ... 1 82

190 1 92 Dentro -+Avanti/ Stop Sopra

t

Sopra Sopra

-+-

+

200 Avanti / Stop



240 244 Sopra -+- Avanti / Stop Sotto



250 Sotto Sotto r+- Avanti / Stop



t



290 Sotto Sopra

294

f-+- Avattti / Stop l

Grafici di funzioni

Dentro-Dentro: O :S Y1 :S SY, O :S Y2 :S SY

Dentro-Sotto : O :5 Y1

Dentro-Sopra: O :5 Y1

Sopra-Dentro: Y1

Sopra-Sopra : Y1

>

>

:5

:S

SY, Y2 < O

SY, Y2 > SY

SY, O :5 Y2 :S SY

SY, Y2 > SY

y



(x, . y, )

/

(x,, y,)

p

>

SY, Y2 < O

y

y

\ d

x

'o

l

y

C7"

_.D

y

6

l

Sotto-Sopra: Y1 < O, Y2 > SY

x

x

y o.. ... .,

Sotto-Sotto: Y1 < O, Y2 < O

x

x

q

Sotto-Dentro: Y1 < O, O :S Y2 :5 SY

x

y

p

Sopra-Sotto: Y1

x

x

y x y

l b

Legenda Varie fasi del disegno di tratti di una poligonale: si vogliono disegnare quei tratti che stanno in un rettangolo.

123

124

Capitolo quarto

(al (d) Figura 4.21 (a), (h), (c) , (Q) Zoom sulla funzione j(x) = x sin (x 2 + 0.00 1 ) - 1 1 2 ; centro in x larghezza iniziale = l .

=

O;

Il valore assoluto di questa differenza è minore di:

:L r k = r 2o < w-6.

+oo

k=21

(b)

Dunque questa differenza non può essere apprezzata d a un calcolatore che lavori con 6 cifre decimali (su per giù). In realtà la [4.9] è una funzione indefinitamente derivabile: è infatti un polinomio trigonometrico, di grado un po' alto (3 20 ), ma pur sempre un polinomio. Tuttavia questo polinomio, agli occhi di un calcolatore che lavori con la precisione sopra detta, è praticamente identico alla funzione di Weierstrass. Il comportamento di questo polinomio è, come vedremo, così complicato da suggerire una buona idea di come si comporta la funzione autentica. Ricordiamo che la funzione di Weierstrass è già stata considerata nel capitolo 2 a proposito delle formule di quadratura. Non è inutile richiamare alcune proprietà evidenti della funzione [4.8] deducibili dalla sua definizione:

j (O) = - f( l ) = 2 - 2 - 20 ;

l /(x) l < 2;

f è pari e periodica con periodo 2; j ( l - x) = j (x), cioè f è simmetrica rispetto al punto x = l /2; (c l

f( l /2) = O.

Grafici di funzioni

(a)

I J.f, i i' l ,

'

125

(d)

Figura 4.22 (a). (h) , (c ) . ( d} Zoom sulla funzione f ( x ) = s i n (x 2 + 0.000 1 ) - 1 1 2 ; centro in x = O; larghezza iniziale l ,

Dato x, i l valore y di f nel punto x può essere calcolato con la subroutine che segue. L' accorgimento principale di questa subroutine è calcolare il coseno di 3 k 1rx, anziché in questo punto (che diventa presto intrattabile), nel punto tra O e 21r dove il coseno ha lo stesso valore (valore più facilmente calcolabile). Un altro accorgimento consiste nel calcolare questi ultimi punti per ricorrenza.

(b)

1 000 X = X - 2* INT(X/2) 1 0 1 0 C = l : Y = COS(7r*X) 1 020 FOR K = l TO 20 1 030 X = 3*X : X = X - 2*INT(X/2) 1 040 C = C/2 : Y = Y + C*COS(7r*X) 1 050 NEXT K l 052 REM Y = valore di f in X 1 060 RETURN

Le figure 4.23 mostrano zoom della funzione con centro nel punto di ascissa l /2. Le dimensioni della finestra pos­ sono essere scelte così : larghezza l (in modo da coprire un intero periodo) e altezza 4 (perché f è tra - 2.e 2). Il codice è quello ZOOM con l ' inserimento della subroutine prece­ dente. Diamo altri due esempi di funzioni continue ma non de­ rivabili. Entrambe illustrano quel tipo di patologie in cui a ogni ingrandimento si scoprono nuovi dettagli. La prima funzione, considerata da Van der Waerden, è la seguente : (c)

/(x) = L 10- k dst ( 10k x), k =O +oo

[4. 1 0]

126

Capitolo quarto

Programma ZOOM.WND - 18

REU • • • • • Parametri • • • • •

20

5 = 1 50

22

H=2*S : N=2*M : REM N= numero dei camp ioni in gi oco , M= numero dei camp ioni c he sono conservati ad ogni p asso

30 - 40

DH1 LC ( N )

: REM Lista di c ampioni

REf-t

Introduzione di dati e campi onamento iniziale • • • • •

45

Canc e l l are l o schenna

50

PRINT " Centro della finestra : ascissa " ;

60

PRINT " Larghezza de l l a finestra " ;

70 72

f'OR I=O T1:> N

74

GOSU8 1000

76 78 BO

X=A+ L/N• ( I-M )

:

: REM Nodi

LC ( I ) =Y : REM Camp ioni NEXT I

8=LC ( H )

82

PRINT " Centro del la fines tra : ordinata

90

PRINT " Al tezza della finestra " ;

� 98

1 00

: INPUT A

INPUT L

:

11

; B

INPUT H

REH • • • • • Di segna quella parte del grafico , che è inquadrata dal l a finestra • • • •• Canc e l l are lo schermo e attivare il modo gra fi co L ' istruzione il/INDOli/ ( xl , yl ) - ( x2 , y 2 ) ab i l i t a i l calcolatore a scalare

1 10

il/INDOli/ ( A-L/ 2 , 8-H/2 ) - ( A+L/2 , 8+H/ 2 )

coordinate e mappare il rettangolo

{

( x , y ) : xl :S x :S x2 , yl :S Y :S y2 maticamente sul l o schenna .

120

Linea fra ( A-L/2 , 8 ) e ( A-L/3 , 8 )

: Linea fra ( A+L/3 , 8 ) e ( A+L/2 , 8 )

122

Linea fra ( A , 8-H/2 ) e ( A , 8-H/3 )

: Linea fra ( A , 8+H/3 ) e ( A , 8+H/2 )

}

auto=

REM Segni di riferimento , per visuali zzare il centro della finestra 130

X2=A-L/2 : Y2=LC ( O )

140

f'OR I = l TO N

150

Xl=X2 : Yl=Y2

160

X2=A+L/N • ( I-H )

170

L i nea fra ( Xl , Yl ) e ( X2 , Y2 )

180 � 350

: Y2=LC ( I )

NEXT I

REM * * * * * Attesa e scelte

360

Chiedere un carattere C$

370

IF C $= " " THEN 360 : REM Attendi che l ' operatore batta un tasto

372

IF C$="5" THEN 500 : REM Premere i l tE.sto S per arrestare i l programma

374

IF C $ < > " H " THEN 400 : REM Premere il tasto H per modi fi care l ' altezza

376

REM Premere un tasto qualunque , di verso dal tasto S e dal tasto H ,

de lla finestra per proseguire 380

Cance l l are l o schenna

382

PRINT " A l tezza da modificare "

384

GOTO 90

H

Grafici di funzioni � 398

REM * * * * * Aggi ornamenti * * * * *

400

L=L/2 : H=H/2 : REM Dimezza l e dimensi oni de l l a finestra

404

Canc el lare l o schermo

406

PRINT .. Dimensioni aggiornate de lla finestra PRINT

410

11

larghezza " L ,

LC ( M+2 • I ) =LC ( M+ I )

: LC ( M-2• I ) =LC ( M-I )

414

NEXT I

420

FOR I = l T O N - 1 STEP 2

REH Nuovo camp i onamento

X=A+L/N• ( I-M )

424

GOSU8 1000

426

LC ( I ) =Y

428

NEXT

450

GOTO 1 00

500

END

� 900

11

al tezze " H

FOR I=S TO l STEP -1 : REM Travaso di dati

412

422

11

REM * * * * * Subrouti ne : defi n i z i one de l l a funzione • • • • •

1000

1900 Y=

• • •

REM Val ore de l l a funz i one nel punto x

2000 RETURN

Programma S IMPZOOM.WND - 6

REM * * * * * Ingresso di dati * * * * *

8

Cancellare lo schenno • • •

: REM Introdurre la funzione

10

DEF FNF ( X ) =

20

PRINT " Centro della fines tra : asc issa " ;

30

PRINT " Dimensioni della finestra "

32

INPUT " larghe zza " ; L

34

INPUT " al tezze " ; H

40

8=FNF ( A )

50 ·

PRINT " Quanti nodi •• ;

� 98

100

: INPUT A

: REM Ordinata de l centro della fines tra : INPUT N : REM Numero dei camp ioni

REM * * * * * Di segna que l l a p arte del grafi co , che è inquadrata

dalla finestra • • • • •

Cancel lare l o schenno e attivare i l modo grafi co L ' istruz ione W INDOW ( xl , y l ) - ( x2 , y 2 ) ab il ita i l calcolatore a scalare

1 10

WINDOW ( A- L/ 2 , 8-H/2 ) - ( A+L/2 , 8+H/ 2 )

coordinate e mappare il rettangolo

{ ( x , y ) : xl s x s x2

, yl s is y2 } auto=

maticamente sul lo schenno . 1 20

Linea fra ( A-L/2 , 8 ) e ( A-L/3 , 8 )

: L i nea fra ( A+L/3 , 8 ) e ( A+L/2 , 8 )

1 22

Linea fra ( A , 8-H/2 ) e ( A , 8-H/3 )

: Linea fra ( A , 8+H/3 ) e ( A , 8+H/2 )

1 30

FOR I=O TO l STEP 1/N

REM Segni di r i ferimento , p er visuali zzare il centro de l l a finestra

140

X=A+L• ( I-� )

150

PSET ( X , Y )

160

NEXT I



: Y=FNF ( X )

: REM Coordinate di un campione del grafi co

REM Disegna i1. punto , che ha coordi nate

x & y

127

128

Capitolo quarto

dove dst (x) è la distanza di x dall 'insieme degli interi. In altri termini dst (x) = mantissa di x oppure dst (x) = l ­ mantissa di x a seconda che la mantissa di x sia minore op­ pure maggiore o uguale di l /2. Ricordiamo che la mantissa di un numero è la differenza tra questo e la sua parte intera. È facile dimostrare le seguenti proprietà di f(x): a) O ::::; f(x) < 5/9; b) / (0) = j( l ) = / (2) = . . . = O; c) f è periodica con periodo l ; d) j (x) = j( l - x); e) / ( 1 /2) = 1 /2 ; f(l /4) = /(3/4) = 3/ 1 0. la)

l

,i

Come già fatto nell 'esempio precedente, lavoriamo, anzi­ ché sulla funzione definita dalla [4. 1 0] , su quest' altra:

IO f(x) = L: w - k dst < Wk x), k=O

[ 4. 1 1 ]

la quale è più piccola della [ 4. 1 O] e differisce da questa per meno di 5/9 w - 1 1 • Dunque la [4. 1 1 ] è praticamente indistinguibile dalla [ 4. 1 0] . Dato x, il valore y d i j (x), data dalla [4. 1 1 ] , può essere calcolato con l 'algoritmo seguente. Si introducono quattro successioni: ·



così definite per ricorrenza: a)

mnto = mantissa di x

{

se mnt o ::::; 1 /2 dsto = mn to l - mnto se mnto > 1 /2 Po = l Yo = podsto

(b)

b)

per k = l , 2, 3, . . mnt k = mantissa di ( l O mnt k - l ) .

{

se mnt k ::::; 1 /2 k dst k = mnt l - mnt k se mnt k > 1 /2 Pk = Pk - 1 / l O Yk = Yk - 1 + Pk dst k .

(c)

Figura 4.23 (a), (b), (c) Zoom sulla funzione di Weierstrass; centro in ziale 0. 1 25.

x

= 1 /2; larghezza ini­

Grafici di funzioni

È evidente che mnt k è la mantissa di lO k x, dst k è dst ( lOk x), pk è w - k . Dunque: k

.

.

Yk = L w - 'dst ( lO'x). i=O In conclusione il valore y cercato è proprio Yk con k = 10. Questo algoritmo si traduce nella seguente subroutine: 1 000 MNT = X - INT(X) 1 0 1 0 DST = MNT 1 0 1 2 IF MNT < = .5 THEN 1 020 1 0 1 4 DST = l - DST 1 020 p = l 1 030 Y = P * DST 1 040 FOR K = l TO 1 0 1 050 MNT = 1 0 * MNT 1 052 MNT = MNT - INT(MNT) 1 060 DST = MNT l 062 IF MNT < = .5 THEN l 070 1 064 DST = l - MNT 1 070 P = P/1 0 1 080 Y = Y + P * DST 1 090 NEXT K 1 1 00 REM y = valore di f in x 1 1 1 0 RETURN

(a)

Innestando questa subroutine nel codice ZOOM si ottengono ingrandimenti della funzione di Van der Waerden. Le figure 4.24 mostrano zoom con centro nel punto di ascissa .25, altezza .6, larghezza . 5 . Come ultimo esempio consideriamo l afunzione di Takagi, definita da:

f(x) = L T k u k (x), k=O +oo

(b)

l

[4. 1 2]

dove l e u k sono l e iterate d i una funzione u. Qui:

u(x) = l - 2 l x l ,

- l S x S I,

il cui grafico è un triangolo isoscele con vertici in (- l , l), (0, 1 ) , ( 1 , - l ). Cenni e d esempi sulle iterate d i una funzione e un codice per calcolarle sono dati nell 'esercizio 4. 1 O. Ricordiamo che le u k sono definite per ricorrenza in questo modo:

{

uo(x) = u(x) u k (x) = u(u k - I (x)), k = 1 , 2, . . .

La funzione di Takagi può essere sostituita a tutti gli effetti

(c)

Figura 4.24 (a), (b), (c) Zoom sulla funzione di Van der Waerden; centro in x = 0.25.

129

130

Capitolo quarto

(a) Figura 4.25

(a), (b), (c), (d)

(d )

Zoom sulla funzione di Takagi; centro in x = 0.2, larghezza iniziale l .

dalla funzione: f(x) =

\

20

L T k u k (x),

k=O

[4. 1 3]

che può essere calcolata con un algoritmo ricorsivo facile da intuire. Una subroutine per calcolare in un punto x il valore y della funzione [ 4. 1 3] è la seguente: (b)

1 000 P = l : U = l - 2 * ABS(X) : Y = U l O I O FOR K = l T0 20 1020 P = 2 * P : U = l - 2 * ABS(U) : Y = Y + U/P 1030 NEXT K 1 040 REM y = valore di f in x 1 050 RETURN

Le figure 4.25 mostrano zoom relativi a quest'ultima funzione. 4.5 Funzione e funzione primitiva

(c)

Immaginiamo di volèr studiare e disegnare il grafico della funzione cosiddetta seno integrale. Questa funzione, che abitualmente si indica con si(x), è definita con la seguente formula: sin t dt. si(x) = o t

1x

-

Grafici di funzioni

In altri termini il seno integrale è quella primitiva della funzione sin x f (x) = x che vale zero per x = O. È stato dimostrato che la funzione si(x) è una funzione non elementare, cioè non può essere rappresentata con una formula che faccia intervenire operazioni aritmetiche soltanto e un numero finito di funzioni elementari. Tutto sommato, la formula più semplice per trattare la funzione si(x) è la sua definizione stessa. Supponiamo che l ' intervallo che ci interessa sia [0, L] e procediamo, come al solito, a un campionamento. Fissiamo l ' intero N e suddividiamo l ' intervallo [0, L] in N parti uguali mediante i nodi: Xk = kh

(k = o, l, . . . ' N)

dove

h = LfN. Vogliamo calcolare

Lc(k) = si(x k ), cioè i valori della funzione seno integrale nei nodi prescelti. Evidentemente questi numeri possono essere calcolati per ricorrenza nel modo seguente:

{

Lc(O) = O Lc(k) = Lc(k - l ) +

1�:

' (t)dt, k ?. l . , Gli integrali che compaiono in queste formule non sono elementarmente esprimibili - come abbiamo già osservato ma possono essere calcolati mediante formule di quadratura. Se il numero dei nodi è sufficientemente alto (così da rendere piccola la distanza fra due nodi consecutivi) si può usare la formula dei trapezi nella sua versione più rudimentale. Vale a dire:

Ricordiamo che (cfr. § 2 1 ) .

l errore l :::;

(Xk - Xk - ! ) 3 su p l !" l .

12

Nel caso in esame il massimo della derivata seconda si può calcolare facilmente e si vede che:

l /" (x) 1 :::; 1 /3.

Infatti:

la cos (xs) ds, f " (x) = fo \ - s 2 cos (xs)]ds. f(x)

da cui:

131

=

1

Dunque una stima dell 'errore è:

L3 36 N3 '

che è indipendente dalla posizione dei nodi. Se N è suffi­ cientemente grande si può trascurare l 'errore e ritoccare le formule di ricorrenza precedenti così da renderle completa­ mente esplicite. Precisamente: Lc(O) = O [4. 1 4] Le ) = Lc(k - l ) + f(x k - I ) + f(x k ) L/N

{



�[

(k - l ' 2, 3, . . . ). La successione dei numeri:

]

Lc(O), Lc( l ), Lc(2), . . . , Lc(N) , che si ottiene con le formule [ 4. 1 4] può essere considerata un buon surrogato della sequenza dei valori di si(x) nei nodi prescelti e può essere utilizzata per disegnare il grafico del seno integrale. Riassumendo, un programma di lavoro può essere il seguente: a) fissare l ' intervallo; b) definire il numero dei nodi. Nell'esempio che abbiamo scelto si hanno delle maggiorazioni esplicite che consen­ tirebbero di fissare a priori il valore di N in modo da garan­ tirci una precisione prestabilita; c) campionare f nei nodi prescelti; d) inserire i campioni di f nelle formule di ricorrenza [ 4. 1 4] e ricavare da queste la sequenza Lc(k); e) usare la sequenza Lc(k) per approssimare il grafico di si(x). Ad esempio, si può disegnare il grafico dell ' interpolan­ te lineare a tratti che assume i valori Lc(k) nei nodi Xk . Fine del programma. Evidentemente questo programma funziona non solo nel caso considerato ma anche nella generalità dei casi. Può semmai fornire risultati insoddisfacenti quando, a esempio, la funzione f oscilla rapidamente. Casi del genere saranno approfonditi più avanti. Il codice PRIMITIVA descrive il programma sopra indi­ cato. La figura 4.26 dà un' idea del grafico di una primitiva di (sin x)/ x ottenuta con questo codice.

132

Capitolo quarto

Nome Scopo Dati Risultato Algoritmo

PRIMITIVA Disegnare il grafico di una primitiva di una funzione data. Una funzione un intervallo un intero Grafico della primitiva di che vale zero nel punto a) Definire , n); b) calcolare una successione di numeri seguente procedimento ricorsivo:

f(x), [a, b], n. a. f h = (b - a)/n, x; = a + i h(i = O, l, . . .

Le(O), Lc(l), . . . , Le(n) col

Lc(O) = O; Lc(i) = Lc(i - l ) + (/(x;) + f(x;_ J l)h/2 per i = 1 , 2 , . . . , n, c) calcolare il minimo e il massimo dei numeri Le( O), Lc( l ), . . . , Le( n); d) disegnare in una scala opportuna (dipendente dal minimo e dal massimo calcolati) la poligonale con vertici in (x;, Le( i)); i = O, l , . . . , n. 10

10-30 : Ingre sso di dati

DEF FNDF ( X ) =

20

A =

30

N =

Introdurre l a funzione , di cui s i vuole l a primitiva.

B =

Estremi dell ' intervallo . Numero dei nod i , in cui camp i onare . 40-1 20 : Campionamento d e l l a primi ti va

40

DIM F ( N )

42

F ( O ) =O

S t i am o consi derando l a primitiva , che v a l e zero nel l ' estremo Passo d e l camp ionamento .

F = l i s ta dei valori de l l a primi ti v a . s i n i stro del l ' i nterval l o .

50

H= ( B-A ) /N

60

V=FNDF ( A )

70

FOR I=1 TO N

BO

X=A + l * H

Nodi .

90

U=V

100

V=FNDF ( X )

110 115 120

Valori della fWlzione integranda nei nod i .

F ( I ) = F ( I-1 ) + ( U+V) •H/2

Valori della fWlzi one primitiva nei nodi .

PRINT I ; TAB ( 1 0 ) X ; TAB ( 25 ) F ( I ) NEXT I

150

MIN=1E+30 : MAX=-MIN

152

FOR I=O TO N

1 50-160 : Massimi & minimi

1 54

U=F ( I )

1 56

IF

MIN > U

1 58

IF

MAX < U THEN MAX=U

160

NEXT I

200 210

Cance l l are lo schermo & attivare il modo grafi co

SX =

Coordi nate del l ' ultimo p i xel ( quello i n basso a destra )

220

H=SX/N : K=SY / ( MAX-MI N )

Fattori di scal a .

230

X2=0 : V=K• ( Max-F ( O ) )

240

FOR I = 1 TO N

THEN MIN=U

250

X1=X2 : X2=H* I

260

U=V : V=K • ( MAX-F ( I ) )

270

Linea tra ( X1 , U ) e ( X2 , V )

280

NEXT I

290

Chiedere un carattere C$

292

IF C$ = ""

300 304

}

: SY =

THEN 290

200-31 2 : Grafico

Grafico di un ' interpolante l ineare a tratti

}

U=K*MAX : L i nea tra ( O , U ) e ( SX , U ) IF

A > O OR

B . 2 (>. / x) 2 exp ( --, ( >. - x)-

)]

se - l :S x :S O se >. :::; x :::; l se O

:::; x :::;

>. ,

dove >. è u n numero relativamente piccolo, diciamo >. = 0 . 1 . Si sug­ gerisce di fare il grafico nell' intervallo [- l , 1 ]. 4. 14

Tracciare un grafico, per mezzo di un campionamento con passo adattabile, delle funzioni : a) /(x) = j0x sin

(t2 ) dt, O :S x :::; I O b ) /(x) = j0x sin ( 1 /t) dt, O :S x :S l . L'esercizio consiste nel combinare l'algoritmo iniziale del paragrafo

4.6 con la strategia usata nel paragrafo 4.5. 4.15 Provare a raffinare l 'ultimo algoritmo del paragrafo 4.6 escogi­ tando espedienti per seguire meglio il grafico immediatamente dopo un punto di massimo o di minimo relativo. 4. 16

Studiare il polinomio di grado 9 che assume i valori: L -5, 7, 1 8 , - 1 0 .3, 3, 3, 3, O, 3

nei seguenti punti :

1 , 2, 3 , 4, 5, 6, 7, 8, 9, I O. Disegnare il grafico di questo polinomio nell' intervallo intervalli più grandi. 4.17

[ 1 , I O] e in

Considerare il numero di abitanti di una regione italiana anno per anno dal 1 9 . . al 1 9 . Estrapolare questi dati con un polinomio e discutere l 'attendibilità di previsioni basate su processi di estrapo­ lazione.

Grafici di funzioni

Ad esempio, si considerino i seguenti dati ISTAT: Anno

198 1 1 982 1 983 1 984 1 985 1 986 Anno

1 98 1 1 982 1 983 1 984 1 985 1 986 Anno

1 98 1 1 982 1983 1 984 1 985 1986 Anno

1 98 1 1 982 1 983 1 984 1 985 1 986 Anno

1981 1 982 1 983 1984 1 985 1 986

Regione

LOMBARDIA

Refi ione

LIGURIA

Refiione

TOSCANA

Re[iione

LAZIO

Refiione

PUGLIA

Abitanti

(in migliaia)

8887 8894 889 1 8885 8882 8877

4.18

149

Sia /(x) una funzione sufficientemente regolare in un intervallo [a, bl e sia (yo, Y I , . . , Yn ) il campionamento della funzione nei punti (xo, XJ , . . . , xn ). cioè Yi = /(x;). Consideriamo, ad esempio, il caso .

che le ascisse siano equidistanti, vale a dire:

x; = a + i h , i = O, l, , n, . . .

dove

h = (b - a)jn.

(a)

Abitanti

(in migliaia)

1 805 1 796 1 789 1 778 1 77 1 1 759 Abitanti

(in migliaia)

3578 3582 358 1 358 1 3577 3572

(b)

l"'

l

Abitanti

(in migliaia)

5 000 5 025 5 056 5 08 0 5 1 02 5 1 16

/l

Abitanti

(in migliaia)

3873 3909 3947 3978 400 5 4026

l

l

l\

l

v Figura 4.34 (a)

e

( b)

Fenomeno di Runge; funzione

- 3 :::: x :::: 3.

\ 1\

1\

\

\�

/(x) = 1 / ( 1 + x2)

\ nell ' intervallo

150

Capitolo quarto

lnterpolare i punti (x; , y;) con un polinomio di grado n, disegnare il grafico di questo polinomio nell'intervallo [a, b] e confrontare tale grafico con quello della funzione f(x ). Osservare che in certi casi il polinomio interpolatore converge bene alla funzione f al crescere di n. In altri casi si presenta il cosiddetto fenomeno di Runge: mentre in certe zone il grafico del polinomio sembra ben adattarsi a quello della funzione, in altre zone si formano vistose protuberanze (figg.

4.34).

Si considerino, ad esempio, i seguenti casi:

a) /(x) = sin x

b)

2 /(x) = e - x

c) f(x) =

1-

-

1 + x1 d) /(x) = arctg x e) /(x) = log

( l + x1 )

in [0 , 1!'] ; in [ - 5 , 5] ; in [-2, 2 ] ; in [ -5 , 5 ] ; in [ 3] .

-3,

Capitolo 5 Curve

5.1 Asteroidi e scarabei

Le curve (del piano, dello spazio) sono enti geometrici che possono essere definiti attraverso condizioni anch'esse geometriche. Sono curve, �d esempio, i luoghi di punti che hanno speciali proprietà. E noto che la circonferenza è il luogo dei punti equidistanti da un punto fissato, l ' ellisse è il luogo dei punti le cui distanze da due punti fissati (cosiddetti fuochi) hanno somma costante e molte altre curve famose, come vedremo più avanti, possono essere definite in modo analogo. Definizioni di questo tipo permettono di dedurre rap­ presentazioni analitiche della curva stessa. Queste ultime possono essere utilizzate per dimostrare, con gli strumenti dell'analisi, ulteriori proprietà della curva. In particolare le rappresentazioni analitiche sono comode per disegnare curve speciali. Spieghiamoci con un paio di esempi. Una curva simpatica è il cosiddetto scarabeo, che può essere definito nel modo seguente. Prendiamo su un piano due rette ortogonali e supponiamo che un segmento di lunghezza L si muova tenendo i suoi estremi uno su una retta e l 'altro sull 'altra. Prendiamo un punto fisso su una bisettrice delle due rette e proiettiamo ortogonalmente questo punto sul segmento mobile. Eviden­ temente il piede della perpendicolare si muove assieme al segmento e il luogo di questo piede è precisamente uno scarabeo. Buttiamo giù qualche formula. Scegliamo le due rette ortogonali come assi di un sistema di coordinate (x, y) e supponiamo che il punto fisso, da proiettare sul segmento, sia (p, p). Sistemate così le cose, gli estremi del segmento sono i punti (L cos t, O) e (0, L sin t), dove t è l 'angolo (per la

precisione, uno degli angoli) tra il segmento e l ' asse delle x (fig. 5 . 1 ). Il segmento si trova dunque sulla retta che ha questa equazione: x y + -- = 1 [5. 1 ] L cos t L sin t La retta ortogonale a questa e passante per il punto (p, p) ha quindi equazione: --

·

(x - p) cos t - (y - p) sin t = O.

[5.2]

Risolvendo il sistema formato dalle equazioni [5. 1 ] e [5.2], si trovano le coordinate del piede che ci interessa.

y

(p, p ) pu nto fisso sulla bisettrice

� �

'\

o Figura 5.1

Piede della perpendicolare: il suo luogo è lo scara beo

"-o '?o �t � Asse

Costruzione geometrica dello scarabeo.

x

152

Capitolo quinto

{

Precisamente: x = cos t [L sin 2 t + p (cos t - sin t)] y = sin t[L cos 2 t + p (sin t - cos t)] .

[5 . 3]

Qui t è un parametro che varia nell ' intervallo [0, 27r] . Per ogni valore di t le formule [5.3] producono le coordinate di un punto sullo scarabeo e tutti i punti dello scarabeo si ot­ tengono così. Le formule [5.3] sono equazioni parametriche dello scarabeo. Si chiama appunto rappresentazione para­ metrica di una curva piana una coppia di funzioni di una variabile; i valori di queste funzioni sono ascissa e ordinata del punto variabile sulla curva. Una rappresentazione parametrica della curva è l ' ideale per disegnare la curva stessa. Allo scopo si possono tabulare le funzioni coinvolte per un gran numero di valori del parametro e marcare sul piano i punti della curva le cui coordinate provengono da quei valori del parametro. Nel caso in esame si può fissare a priori un numero intero N (numero dei punti che si vogliono disegnare), considerare i valori 2 7r t; = z ­ n o

{

del parametro t e prendere i punti di coordinate: x; = cos t; [L sin 2 t; + p (cos t; - sin t;)] y; = sin t; [L cos 2 t; + p (sin t; - cos t;)].

L'uso del codice produce, al variare dei parametri L e p, gli scarabei riportati nelle figure 5.3a,b,c. Un parente dello scarabeo, a dispetto del nome, è l'aste­ roide, che può essere definito così. Prendiamo, come prima, due rette ortogonali e un seg­ mento di lunghezza L con gli estremi che si muovono sulle due rette. L' asteroide è l ' inviluppo di questo segmento mo­ bile, cioè la curva che in ogni suo punto è tangente al seg­ mento quando esso passa per quel punto. Alternativamente l ' inviluppo può essere ottenuto così: si prende una posizione generica del segmento e una posizione infinitamente vicina e si prende il punto in cui le due posizioni si intersecano. Il luogo di tale punto è proprio l ' inviluppo. In concreto, l 'equazione della retta su cui il segmento si trova è: _x_ + _Y_ = l ' L cos t L sin t dove t è l'angolo tra il segmento e l' asse delle x. La retta: x y + =I L cos (t + �t) L sin (t + �t) contiene una posizione del segmento vicina alla precedente.

·

·

In generale, se abbiamo una curva piana la cui rappresen­ tazione parametrica è x = x(t)

{

Equazioni para metriche:

y

Parametro : t, a s t s b .

y = y(t),

{; : ;:�:

(x ( b ) , y (b) )

dove t varia nell ' intervallo [a, b], possiamo disegnare la curva col seguente algoritmo. Fissiamo l ' intero N e prendiamo N + l punti di [a, b] equidistanti, che cominciano in a e finiscono in b. Campio­ niamo le funzioni x(t) e y(t) nei nodi scelti. Disegnamo i punti del piano le cui coordinate sono (x(t;), y(t;)), con i tra O e N. La costellazione di punti che così si ottiene - null 'altro che un sottoinsieme finito della nostra curva - può dare un ' idea della forma di ciò che stiamo studiando (fig. 5 .2). Un disegno migliore si ottiene tracciando la poligonale i cui lati sono i segmenti fra (x(t;_ 1 ), y(t;_ J )) e (x(t; ), y(t; )). L' algoritmo descritto può essere codificato; ne risulta un programma come quello del codice CURVE.

o

x

a

b

Figura 5.2

Una curva parametrica e un suo campionamento.

t

Curve

(a)

153

L' intersezione delle due rette è il punto di coordinate: sin( t + �t) - sin t cos t cos(t + �t) x=L sin(�t) cos t - cos(t + �t) . . sm t sm(t + M). y=L sin(�t ) Facendo tendere f...t a zero otteniamo le coordinate di un punto generico sull ' asteroide, cioè: x = L cos3 t y = L sin3 t. Queste sono le equazioni parametriche de li' asteroide; t è un parametro che varia tra O e 21r. Le equazioni parametriche possono essere usate, come prima, per disegnare l ' asteroide. Usando il codice CURVE si ottiene, ad esempio, la fi­ gura 5 .4.

{

(b)

{

5.2 Strofoide e concoide

5.2.1

Consideriamo due rette ortogonali e u n punto, su u n a di esse. a distanza l dal l ' altra. Scegl iamo il sistema di rife­ rimento in modo tale che questo punto sia l ' origine e che le due rette abbiano equazione x= l e y = O. Consideriamo una retta passante per l ' origine con inclinazione variabile; la sua equazione è dunque y = tx. dove t è il parametro variabile che caratterizza ! " evoluzione di ciò che stiamo costruendo. Intersechiamo questa retta con la retta x = l l ' intersezione è dunque il punto ( l , t ) - e consideriamo, da parti opposte rispetto a questo punto, i due punti sulla retta y = tx che distano dall'intersezione detta tanto quanto questa intersezione dista dal la retta y = O. In altri termini consideriamo le due intersezioni della retta y =t x e del cerchio con centro nel punto ( l , t) e raggio l t l (fig. 5 . 5a). S i trova facilmente che questi due punti hanno le seguenti coordinate : t x= l x= + .; l + t2 l .; + t2 y = tx. y = tx

-

(c)

{

Figura 5.3

Scarabeo : x = cos t[ l s i n 2 t + p(cos t - sin t ) ] , y = si n t [l cos2 t +

+ p(sin t - cos t ) ] ,

(c)

l = l , p = 0.2.

O ) ' x = 3tt 22 +- l l ' y = t(3tt22 +- l)l . Lumaca: (x 2 + y2 px)2 = q2 (x 2 + y2 ) ; T = p 4> + q. ---

Cissoide di Diocle:

x(x2 + y2 ) = y2 ; sin2 4> · T = cos 4> ' l x = l + t2 ' y = t (l +l t2 ) .

Trisettrice di McLaurin :

x(x2 + y2 ) = y2 - 3x2 ; 4 cos2 4> . T = l cos 4> ' 2 t( t 2 - 3) 3 t x = t2 + l ' y = T+! "

g ) Trisettrice di Longchamps: x(x 2 - 3y2 ) + x2 + y2 = O;

5.1

Riportiamo un elenco di curve notevoli. Di ogni curva diamo il nome e, neli' ordine, l 'equazione cartesiana, l'equazione in coordinate polari T e 4> (quando è comoda; ricordiamo che T e 4> sono legate alle coordinate cartesiane da x = T cos 4>, y = T sin 4J), equazioni parametri­ che. L'esercizio consiste nel disegnare le curve usando opportunamente gli algoritmi di questo capitolo. In ciò che segue p, q, k, a sono dei numeri fissati.

Versiera di Maria Gaetana Agnesi:

x2 y = k2 (k - y) ; x = t, y = k 2k+3 t 2 . -

= O;

evidentemente sono la stessa cosa, ma se si usasse la seconda equazione anziché la prima non si troverebbe nessun risul­ tato. Il metodo potrebbe anche perdere colpi in situazioni vicine a quelle sopra accennate. Ad esempio, difficoltà possono presentarsi nel disegnare curve di livello contenenti rami distinti ma tangenti tra loro in qualche punto. Il metodo può essere codificato come nel codice LINLIV. La figura 5 . 1 7 mostra un esempio.

Cubica di Ro/le:

xy2 = (x + y)2 ; x = (l + l/t)2 , y = t(l + l/t)2 .

r)

Parabole virtuali:

x = p cos2 t, y = p cos t + q sin t; x = sin a + 2 sin t cos (t + a) , y = 2 sin t ; x = cos (a - 2t), y = sin t.

Curve

1 75

Nome LINLIV Scopo Disegnare il luogo degli zeri di una funzione di due variabili (più precisamente: la parte di tale luogo, che sta in un rettangolo).

x y, (x, y), i=

Dati Una funzione f di due variabili e

a, b, c, d (il primo a < x ::::; b, c < y ::::; d; ..

che cambia segno attraverso la linea dei suoi zeri. Quattro numeri minore del secondo, il terzo minore del quarto). Due interi n (relativamente grandi). Risultato Il disegno di molti punti distribuiti abbastanza uniformemente, tali che: a) = O ; b) c) = per qualche l , 2, oppure j(d per qualche j = , 2, . , n . Algoritmo Definire una quadrettatura come indicato nella figura.

x a + i(b - a)/m

d=

o 1

Yn

2

è

m, y =c+

...,m

3 . . . colonne . . .

m

n

�ighe

2

c)/n

{ X; = Yi =

f(x, y)

l

a + i (b - a ) / m c + j (d - c ) / n

1 o

C = Yo X;

Numerare le righe dal basso verso l ' alto, numerare le colonne d a sinistra verso destra, numerare i nodi dal basso verso l ' alto e da sinistra verso destra. Calcolare i valori che la funzione f prende nei nodi della riga no O. Per j = l , 2, . . . , n fare le cose seguenti. Calcolare il valore di f nel primo nodo della riga no j. Per l , 2, agire così. Calcolare il valore che f prende nel nodo no della riga no j; recuperare, fra quelli prima calcolati, il valore che f prende nel nodo antecedente e il valore che f prende nel nodo no della precedente riga no (j - 1 ). Se = O , allora dise­ gnare il punto ) . Se e sono diversi da zero e hanno segno discorde, allora calcolare (con il metodo delle bisezioni successive) una radice del l 'equazione ( = O tale che q1.1indi disegnare il punto ( ) Se e sono diversi da zero e hanno segno discorde, allora calcolare (con il metodo delle bisezioni successive) una radice dell'equazione = O tale che quindi disegnare il punto Se è di­ verso da zero e e hanno lo stesso segno di (oppure sono zero), allora non fare nulla.

u;i

(x;, Yi u;1 Ui,J - I y ui - I ,J Ui,J - I

x, y1 .



• •

.

10

DEF FNF ( X , Y ) =

20 22

PRINT "Definire un rettangolo : a < x < b , c < y < d " A,B INPUT " a , b "

24

INPUT "c , d " ; C , D

30

PRIUT "Definire i numeri dei nod i "

32

PRINT "Quanti nodi sul le r ighe " ;

34

i=

i Ui ,j - I u;1 ui -I,J x

... m

i

f(x;, y)

f x, y1) x;_ 1 < x < x;, YJ - I < y < y1, u;1

ui - I ,J u;1

(x;, y).

u;1

: REM D e f i n i z ione della fun z i one

INPUT fl

36

PRINT "Quanti nodi sulle colonne "

38

INPUT N

40

Dm

50

DX= ( B-A ) /M : DY= ( D -C ) /N : REf-I Abbrev iazion i

60

SX=

70

EPS=lE-04 : REU Prec i s ione , con c u i g l i zeri de l l a funzi one

L ( r-1 ) • • •

:

SY=

• • •

: REJ·1 Numeri dei p ixels dispon i b i l i

devono e ssere calcolati

(segue)

Capitolo quinto

1 76 100

Cancellare lo schermo & atti vare i l modo grafi co

1 50

Y2=C

1 60

FOR 1=1 TO 1·1

1 70

X=A+ I•DX

180

L ( I ) =FNF ( X , Y2 )

1 90

NEXT I

200

FOR J = 1 TO N

210

Yl=Y2 : Y2=C+J•DY

250

X2=A : U=FNF ( X2 , Y2 )

260

FOR 1 = 1 TO 1·1

270 280

V=U : W=L ( I )

290

L ( I ) =U

: U=FNF ( X2 , Y2 )

300

IF

302

XX=SX• I/M : YY=SY• ( 1-J /N )

304

U O

THEN 310

XX=INT ( . 5+XX )

- 306

: YY=INT ( . 5+ YY )

PSET ( XX , YY )

308

GOTO 360

310 312

IF u•v > =0 THEN 330

314

F=FNF ( X , Y2 )

316

IF F =O THEN 324

R1=X1

: R2=X2 : X= ( Xl+X2 ) / 2

318

IF F • U > O THEN R2=X : ELSE Rl=X

320

X= ( R l+R2 ) / 2

322

IF R2-R1 > EPS THEN 314

324

XX=SX• ( X-A ) / ( B-A )

326

XX=INT ( . 5+ XX )

- 328

: YY=SY• ( 1-J /N )

: YY=INT ( . 5+ YY )

PSET ( XX , YY )

330

IF u•w > =0 THEN 360

334

R 1 =Yl : R2=Y2 : Y= ( Yl+Y2 ) / 2

336

F=FNF ( X2 , Y )

338

I F F=O THEN 346

340

IF F•u > O THEN R2=Y : ELSE R1=Y

342

Y= ( R 1+R2 ) /2

344

IF R2-R1 > EPS THEN 336

346

XX=SX• I/fl : YY=SY• ( D-Y ) / ( D-C )

348

XX=INT ( . 5+XX )

- 350 360

: YY=INT ( . 5+YY )

PSET ( XX , YY ) NEXT

370

NEXT

380

LINE ( 0 , 0 ) - ( 0 , SY )

390

C$== IIJKEY$ : IF C$= " " THEN 390

400

END

: LINE ( O , SY ) - ( SX , SY )

Curve

1 77

I ntrodu rre dati e definire parametri

Calcolare, e conservare nella lista L, i valori che la funzione prende nei nodi n. 1 , 2, . . . , m della prima riga .

L---�..:..._ ._ _J

Ordinata della riga Ordinata della riga

n.

n.

(j - 1 ) j

Ascissa della prima colonna Valore di f nel primo nodo della riga

n.

j

Ascissa della colonna Ascissa della colonna V= U W = L(l) U = F N F (X2, Y2)

n.

n.

(i - 1 ) i

Valore di f nel nodo (X1 , Y2) Valore d i f nel nodo (X2, Y 1 ) Valore di f nel nodo (X2, Y2)

Conservare il valore attuale di U nel posto n. i della lista L

È il segno di V zero oppure Sì uguale al segno di U 7 Calcolare una radice X tale che F N F (X, Y2) = O, X1 < X < X2

(segue)

1 78

s)

Capitolo quinto

Curva di Jerabek:

p2 (x2 + y2 qx)2 = q2 (J q)2 (x2 + y2 ); � - q) T = q(pp - q cos . � _

_

x, si provi che il luogo di P al variare della retta p ha equazioni parametriche:

COS

t)

Concoide di Durer:

(xy y2 + q2 )2 = (x + Y p)2 (q2 y2 ); t x = cosptcos - sin t + q cos t, y = q sin t. _

_

_

u) Nefroide:

(x2 + y2 )(x2 + y2 k2 )2 = 4(x2 + y 2 kx )2 ; T = l + 2 sin ( � /2). _

_

v)

5.3 Date due rette parallele q e s , che distano tra loro 2k, sia C una circonferenza tangente a q e s rispettivamente nei punti Q e S . Sia p una retta uscente da Q e siano H e K rispettivamente le intersezioni di p con C e con s . Chiamiamo P ii punto che sta su p dalla parte opposta di H rispetto a s e che dista da K tanto quanto H dista da Q. Scelto Q come origine di un sistema di riferimento cartesiano ortogonale e q come asse delle y, si provi che il luogo di P al variare della retta p ha equazioni parametriche: -

-

Cicloide:

x = pt - q sin t, y = p - q cos t. w) Epicicloide: x = (p + q) cos t - k cos ( p p+ q t) y = (p + q) sin t - k sin ( P p+ q t). x) lpocicloide: x = (q - p) cos t + k cos ( q -p p t) y = (p + q) sin t + k sin ( q -p P t). y)

Spirale logaritmica:

z)

Spirale:

k� ) T = exp ( 27r

e si disegni questa curva (cubica duplicatrice di Longchamps).

.

T = k( t ) 1 1P , dove p

è un intero .

5.2 Date due rette ortogonali T e s, si fissa un punto O su T e si considera una retta p, uscente da O , che incontra nel punto A. Si manda per A la normale a p fino a incontrare T nel punto B ; la nor­ male a T in B incontrerà p nel punto P. Scelto O come origine di un sistema di riferimento cartesiano ortogonale e T come asse delle

{

x = 2k � ::� y = 2kt 2l ++ tt22

e si disegni questa curva (visiera o cissoide coniugata). Data una circonferenza C di centro O e raggio l , sia B un punto a distanza k da O e p una retta, uscente da O , che incontra C nel punto A. Indicata con s la congiungente di A e B, sia P ii punto di incontro tra p e la normale a s in B. Scelto O come origine di un sistema di riferimento cartesiano ortogonale e la congiungente O con B come asse delle x, si provi che il luogo di P al variare della retta p ha equazione: 5.4

e si disegni questa curva. 5.5

Data una circonferenza di raggio

k /2.

si fissa un suo diametro

OA. Preso un punto M su OA , si considera la corda di estremi H e H' passante per M e ortogonale a OA; sulla retta T, congiungente O con A, si prende il punto L che dista k da M , in modo che O sia compreso tra L e M. Le rette uscenti da O e parallele rispettivamente a LH e LH' incontrano la corda H H' nei punti P e P' . Scelto O come origine di un sistema di riferimento cartesiano ortogonale e la retta T (orientata da O verso A) come asse y, si provi che il luogo di P e P' al variare della corda H H' ha equazione:

{

e si disegni questa curva (coc/eoide).

4>

Data una circonferenza C di centro O e raggio l e dato un punto Q a distanza 2 da O , si considera un raggio OR di C. Detta r la congiungente Q con R, sia P il punto comune a T e alla retta passante per O e ortogonale a OR . Scelto O come origine di un sistema di riferimento cartesiano ortogonale e la congiungente O con Q (orientata da Q verso 0) come asse y, si provi che il luogo di P al variare del raggio O R ha equazione cartesiana: 5.7

·

a) Si provi a disegnare podarie delle seguenti curve:

l) 2) 3)

k

sin 4> r = k--

(a, b) sono: + x1 (t)(ax1(t) + by'(t)) x = y' (t)(x(t)y' (t) - x' (t)y(t)) (x'(t))2 + (y1 (t)) 2 '--"- by --' - x(t)y x1 (t)(x + y'(t)(ax'(t) '--'-:é-"-----'-'-+ ' (t))-'-'1(t)) 1 (t)y(t) '-'-'---' --'-'� '--'--'-'----'--'-"y = ----' (x' (t))2 + (y1(t))2

1 79

rispetto al punto di coordinate

e si disegni questa curva (perla di de Sluse). 5.6 Data una retta 8 e un suo punto O , si considera una circonferenza C tangente a 8 in O . Su C, a partire da O in senso antiorario, si considera l ' arco di estremi O e P che ha lunghezza fissata. Scelto un sistema di coordinate polari con polo in O e asse polare la retta 8 , si provi che il luogo di P al variare di tutte le circonferenze tangenti in O a 8 ha equazione:

Curve

{x= { xy = { xy == y

cos t = sin t ; cosh t smh t ; p c os t = q sm_ t

e a riconoscere, quando

è

il caso, di che curva si tratta.

b) Provare a scrivere un programma che consenta di disegnare la podaria usando soltanto le equazioni parametriche della curva C (senza far intervenire le derivate). Usare questo programma per disegnare podarie di qualcuna delle curve riportate nell 'esercizio 5 . 1 . 5.9 Consideriamo una curva che h a l a seguente proprietà: s u ogni tangente alla curva il segmento che va dal punto di tangenza all 'inter­ sezione con l'asse x ha lunghezza costante uguale a k. Si verifichi che una tale curva (nel semipiano y > O) ha equazioni parametriche:

{ yx == k±k( t, cont + 1r/2 < (t/2))) t < 1r, cos

log (tg

sin

e si disegni la curva stessa (trattrice ) . 5.10

equazioni parametriche:

x=

sin (2t)

Curve interessanti si ottengono prendendo una funzione x(t) di una variabile t e rappresentando questa funzione nel cosiddetto piano delle fasi , cioè disegnando la curva che ha equazioni parametriche:

{ yx == xx(t)'(t),

2 sin t - l

y=-

---

2 sin t - l

e si disegni questa curva ( capricornoide ) . 5.8

La podaria di una curva C si definisce nel modo seguente. Si fissa un punto e lo si proietta ortogonalmente sulle varie rette tangenti alla curva C. Il luogo delle proiezioni è appunto la podaria di C. Se C ha equazioni parametriche

{ x = x(t) y = y(t)

si vede facilmente che le equazioni parametriche della sua podaria

dove x' (t) è la derivata di x(t). L'andamento di questa curva può dare informazioni rulla funzione originaria; ad esempio, se la curva è chiusa la funzione è periodica. Il piano delle fasi viene spesso usato nello studio di equazioni dif­ ferenziali. Come esercizio, si considerino le seguenti funzioni: a) b) c)

x(t) = 2t4 - 4t 2 + l , x(t) = (t4 - 3t 2 + 2) 2 , x(t) = 3 sin (2t) + 5 sin (3t)

5.11

- 1 .5 ::; t ::; 1 .5;

- -12 ::; t ::; -/2; -7 cos

(4t).

Le curve di Ribacourt hanno la seguente rappresentazione para-

180

Capitolo quinto

metrica:

{

x = p j; (sin u)Pdu y = (s in t)P

e sono casi speciali (a parte un fattore di scala) di curve nel pia­ no delle fasi. Qui p è un intero positivo; si vede subito che se p = l le curve di Ribacourt sono cerchi e se p = 2 sono cicloidi. Per valo­ ri bassi di p l 'integrale può essere calcolato esplicitamente e le curve possono essere dunque disegnate con i codici usuali. Se p è grande non è il caso di fare così; conviene invece usare il Codice CURVE

integrato con una opportuna subroutine che permetta di calcolare approssimativamente l 'integrale. Per esempio, si possono sostituire le istruzioni 1 00-320 del codice CURVE con le seguenti: 1 00 X( O) = O : Y(O) = 0 1 1 0 FOR I = l TO N 1 20 T = I * H 200 Y(I) = (SIN(T)r P 300 X (l) = X(I� l ) + P*H*(Y(I � l) + Y(I))/2 3 1 0 PRINT I ; TAB(7) X(I) ; TAB(23) Y(l) 320 NEXT I

Capitolo 6 Serie

6.1

Somme parziali di una serie numerica

Supponiamo di voler studiare una serie numerica: +oo

L ak .

[6. 1 ]

k=l Per definizione, la somma della serie è il limite della successione delle ridotte n-esime Sn . Queste sono definite come:

{ S1Sn

[6.2]

oppure, equivalentemente, dalle formule ricorsi ve:

a1 Bn - 1 + an , n = 2, 3, . . . della serie [6. 1 ] equivale a =

=

[6_3)

Dunque lo studio quello della successione Sn . In questo paragrafo ci occupiamo di metodi ad hoc per studiare l ' andamento di Sn . Lo schema generale di un programma potrebbe essere il seguente: a) introduzione dei dati. Questi sono un intero N e i termini a1 , az, . . . , aN della nostra serie; b) calcolo delle somme parziali S 1 , Sz , . . . , SN;

c) grafico o tabulazione. Sulla tabulazione non occorrono commenti; per quanto riguarda il grafico, possiamo visualiz­ zare le Sk con un istogramma oppure con una successione di punti. In questo paragrafo scegliamo la prima alternativa. Come introdurre ak? È generalmente scomodo, se N è grande (com 'è ragionevole pensare), fq_rnire al calcolatore i numeri a 1 , az , . . . , aN uno alla volta. E utile invece che il programma stesso generi i valori ak sulla base di formule chiuse o di procedimenti ricorsivi specificati dali ' utente. Come calcolare le somme parziali? Una volta che si dispone di un procedimento per calcolare ak. il modo più

economico per ottenere le somme parziali è usare le formule ricorsive [6.3] . Nella fase c ) interviene l a scelta d i opportune scale che permettano di rapportare lo schermo al rettangolo del pia­ no dove si trova il nostro grafico. La scala orizzontale si determina facilmente sulla base del numero di pagine che vogliamo vedere : ad esempio, se una pagina fosse sufficiente, la scala è quella che manda l ' intervallo [ l , N] nell' intervallo [ l , sx], dove sx è il numero di pixels sulle righe orizzontali. Per quanto riguarda la scala verticale, possiamo avere due diverse esigenze. Una è selezionare una zona particolarmente significativa del grafico: in questo caso dovremo scegliere i valori massimo e minimo delle ordinate che ci interessano e fornire tali valori al calcolatore. L'altra esigenza è visualizzare tutto il grafico: in questo caso, la scala è determinata dal valore massimo e dal valore minimo di s] , Sz, . . . ' SN, valori che possono essere determinati automaticamente dal calcolatore. A questo punto, il programma può essere descritto più dettagliatamente nel modo seguente: a) assegnare una formula chiusa oppure un procedimento ricorsivo per il calcolo dei termini della serie; b) introdurre il numero N; dimensionare un vettore a con N componenti; dimensionare un vettore S con N componenti; c) calcolare i termini della serie e memorizzare i loro valori con i nomi a( l ), a(2), . . . , a(N); d) calcolare le somme parziali e memorizzare i loro valori con i nomi S( l ), S(2), . . . , S(N); e) definire le scale . Decidere se la scala verticale deve essere scelta automaticamente o no. Nel primo caso dare istruzioni per calcolare il massimo e il minimo delle somme parziali, nel secondo assegnare l ' ordinata massima e l ' ordinata mini­ ma; f) disegnare il grafico o l ' istogramma, secondo le tecniche del capitolo 4.

182

Capitolo sesto

Un 'osservazione sul punto c). Nel calcolo dei tenmm della serie è implicito il calcolo dei segni, che possono essere tutti uguali, oppure alternati oppure ancora con altri andamenti. Oltre alle serie a termini di segno costante o di segno alterno, sono interessanti quelle in cui i segni cambiano in modo casuale (o pseudocasuale). Per rendere il programma più versatile si può allora introdurre subito dopo la fase a) un ' opzione per il cambiamento casuale dei segni dei termini della serie. Allo scopo si può utilizzare il generatore di numeri pseudocasuali di cui i linguaggi di programmazione sono fomiti . Il programma descritto può essere riassunto nel codice SERIE. Si noti che il programma è in grado di modificare se stesso in fase di esecuzione : infatti la definizione dei termini della serie non è un intervento sul programma prima del lancio, ma è richiesta dal programma stesso durante l ' esecuzione. Il codice SERIE potrebbe aiutare il lettore a studiare al­ cune serie interessanti. Raccomandiamo gli esempi seguenti :

L 2nl •

+oo

Figura 6. 1

+oo

Prime 1 90 somme parziali di L l jn2 . n= l

[6.4]

n= l

l E-

[6.5]

n

[6.6]

+oo n= l

fo '

l E -·

+oo n= l

La serie [6.4] converge e la convergenza è graficamente messa in evidenza dal rapido livellarsi delle somme parziali (fig. 6. 1 ). Si confronti questo grafico con quello relativo alle serie [6.5] e [6.6] : queste serie divergono entrambe, la prima più rapidamente della seconda. I grafici (figg. 6.2 e 6.3) evidenziano questa differenza di rapidità, tuttavia non sarebbe facile dedurre dalla sola esperimentazione nume­ rica il comportamento delle serie. Ricordiamo che il cal­ colatore non è in grado di determinare il comportamento di una serie: infatti questo comportamento è una proprietà asintotica, mentre il calcolatore può solo considerare un nu­ mero finito di termini (e, per giunta, la sua precisione nel sommare è spesso inferiore alle aspettative: gli errori di ar­ rotondamento possono provocare una stabilizzazione artifi­ ciale delle somme parziali). D ' altra parte la sperimentazione al calcolatore non deve far dimenticare (anzi, deve rendere ancor più chiaro) che il comportamento di certe serie, come quelle in esame, può essere stabilito a priori grazie a dei teoremi. Nel caso specifico il comportamento delle serie considerate segue subito dal criterio del confronto con un integrale.

Figura 6.2

+oo

1

Prime 1 90 somme parziali di L l j n 2 . n= l

Figura 6.3

+oo

Prime 1 90 somme parziali di L l jn. n= l

Serie

1 0 PR I N T " P r o g r amma S E R I E " 1 1 P R I N T " Qu e s t o p r o g r amma c a l c o l a l e r i d o t t e " s ( O ) •a ( O ) , " 1 2 PRINT " 1 3 PRINT " s ( l ) = a ( O ) +a ( l ) , " 1 4 PRINT " 1 5 PRINT " =a( O ) +a( l ) + . . . +a( n ) " 1 6 P R I N T 01 d i una s e r i e nume r i c a a ( O ) + a ( l ) + . . • + a { n ) + . . . ( i n u n a o p i u ' pag i n e ) di t a l i s o mme . "

;;�i

e

t racc i a u n

183

i s t o g ramma

1 8 P R I N T " I l p r o g r amma c o n s e n t e anche d i c am b i a r e i s e g n i de i t e rm i n i , i n m o d o a l t e rno oppure i n modo c as u a l e . '' 20 REM * * * * * * * * * * Pre l i m i n a r i * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 2 2 NMAX = 5 0 0 0 : REM M a s s i m o nume ro d i t e rm i n i e r i d o t t e , c he p o s s o n o e s s e r e c o n s i d e r a t i in que s t o p r o g ramma 24 26 28

D I H A ( NHAX ) , S ( NHAX ) : REH A = l i s t a di t e r m i n i , S = l i s t a d i r i d o t t e PAS S 0 = 4 : REH D i s t a n z a ( i n p i x e l s ) f r a s e g me n t i c o n s e c u t i v i d e l l ' i s t o g ramma SX= 6 0 0 : SY= 3 0 0 : REH De f i n i r e il r i qu a d r o , c he s i v u o l e o c c u p a r e s u l l o s c h e r

mo grafico - de f i n i re s t r a ) di t a l e r i qu a d r o 29 30

PRINT REM * * * * * * * * * *

qu i

le

I ng r e s s o d i

4 0 P R I N T " De v o n o e s s e r e dat i d e l l a s e r i e ; L ' i nt e r o n . " 41 4 2 43 45 50 52 54 56 58 to

coord i nate

dat i :

Una

de l l ' u l t i m o p i x e l

( qu e l l o

i n b a s s o a de

********************************************* f o r mu l a , c h e

consenta

di

c a l c o l are

i

t e rm i n i

P R I N T " L a f o rmu l a puo ' e s s e re : l - CH I U SA oppure 2 - R I CORS I VA . " I N PUT " C he t i po d i f o rmu l a vuo i u s a r e [ r i s pond i l oppu re 2 ] " ; S C E L T A I F SC ELTA < > l AND S C E L TA < > 2 T H E N 4 2 I F S C E LTA = 2 THEN 5 4 P R I N T " De f i n i s c i i t e r m i n i a ( n ) ( n = 0 , 1 , 2 , . . . ) i n f o rm a c h i u s a . " GOTO 6 0 P R I N T '' De f i n i s c i i l p r i m o t e r m i n e a ( O ) . '' I N PUT " a ( O ) = " , A ( O ) P R I N T " De f i n i s c i a ( n ) ( n = 1 , 2 , 3 , . . . ) i n f u n z i one d e l p re d e c e s s o re a ( n - l ) e , s e n e c e s s a r i o , d e l l ' i nd i c e n . "

sol tan

60 I NPUT " a ( n ) = " , C $ 70 REM * * * * * I n i z i a un p r o g ramma a u s i l i a r i o * * * * * 7 2 REH I l q u a l e a b i l i t a i l p r o g ramma a r i c e v e r e l a de f i n i z i o n e d i f u n z i o n i n e l l a f o rma d i s t r i ng h e a l fanume r i c h e e a t radurre i n i s t ru z i o n i BAS I C 7 4 D R I V E $ = " " : REM I nd i r i z z o d e l d r i v e dove memo r i z z a r e u n f i l e a u s i l i a r i o - q u i u s i amo i l d e f a u l t d r i v e 76 D R I VE $ = DR I V E $ + " F I LEAUS . BA S " : REH I nd i r i z z o & nome d e l f i l e 7 8 OPEN D R I V E $ FOR OUTPUT A S I l : REH Ap r i re i l f i l e 8 0 P R I N T 1 1 , " 1 0 0 D E F FN F ( N ) = " + C $ : REH C o n t e n u t o de l f i l e a u s i l i a r i o 8 6 C LO S E # l : REH C h i ud e re i l f i l e 88 C H A I N HERGE D R I V E $ , 1 0 0 , A L L : REH I n s e r i r e i l f i l e au s i l i a r i o n e l p r o g ramma

p r i nc i p a l e 9 0 R E M * * * * * F i n e d e l p r o g ramma a u s i l i a r i o * * * * * 1 0 0 REM Durante l ' e s e c u z i o ne d e l p r o g ramma , q u e s t a i s t ru z i o ne v i e n e r i mp i a z z a t a d a D E F FN F ( N ) = Una f u n z i o n e d e l l a v a r i ab i l e N , d i pe n d e n t e d a l pa r ame t r o A ( N - 1 ) 1 0 5 I F SCELTA = 2 THEN 1 2 0 1 1 0 A ( O ) = FN F ( O ) : REH I l p r i mo t e rm i ne de l l a s e r i e e ' i n t ro d o t t o c o s i ' , s e l a f o r mu l a e ' c h i u s a ; a l t r i me n t i e ' i n t rod o t t o c o n l ' i s t ru z i o ne 5 6 1 2 0 NA= l : REH I n i z i a l i z z a z i one ; N A c o n t a i t e rm i n i memo r i z z a t i ne l l a l i s t a A 1 3 0 S ( O ) • A ( O ) : REH P r i ma r i do t t a 1 4 0 N S = 1 : REM I n i z i a l i z z a z i one ; N S c o n t a l e r i d o t t e memo r i z z a t e ne l l a l i s t a S 1 5 0 I F S ( O ) > O THEN H I N = O : E L S E H I N • S ( O ) : REH H I N = m i n { O , S I O ) ) 1 5 2 I F S ( O ) < O THEN MAX = O : E L S E HAX = S ( O ) : REH MAX=max { O , S ( O ) } 1 5 6 Z = l : REH I n i z i a l i z z a z i o ne ; Z c o n t a l e r i d o t t e i l c u i m i n i mo e ' i l v a l o r e a t t u a l e d i H I N oppure u n nume r o po s i t i V o e i l c u i mas s i mo e ' i l v a l o r e a t t u a l e d i HAX oppure u n nume r o n e g a t i v o 160 161 162

PRINT PRINT PRINT

" S c e g l i u n a f r a l e t r e a l t e rnat i v e s e g u e n t i : 11 " l - l as c i a re I NALTERAT I i s e g n i d e i t e rm i n i , " 2 - c aJD.b i a r e i s e g n i de i t e rm i n i in modo ALTERNO , " " 3 - c amb i a r e i s e g n i de i t e rm i n i in aodo CASUALE . " "

163 164 165 180

PRINT I N PUT " R i spond i l oppure 2 OPI·ure 3 : " , SCELTA IF S C E LTA < > l A N D S C E LTA < > 2 AND S C ELTA < > 3 THEN P R I N T " Qu e s t o p r o g r a••a c o n s i d e r a le p r i me ( n + 1 }

sc i 182 184 186 1 90 200 210 220 230 240

n. I NPUT " n = " , N I F N > NHAX THEN PR I N T " T roppo g r ande " : GOTO 1 8 2 I F N < l THEN P R I N T " T roppo p i c c o l o " : GOTO 1 8 2 PRINT REM * * * * * * * * * * T e rm i n i * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

1 64 ridotte

de l l a

serie .

De f i n ì

I F NA > N THEN 3 0 0 FOR I • NA T O N A ( I ) • FN F ( I ) NEXT I

(segue)

184

Capitolo sesto

2 5 0 NA= I

: REM Agg i o rnare la v a r i ab i l e NA *** 3 0 0 REH * * * * * * * * * * S e g n i d e i t e ra i n i * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 3 1 0 IF N S > N THEN 5 0 0 3 2 0 O N S C E LTA GOTO 3 4 0 , 3 6 0 , 3 8 0 3 4 0 FOR I = N S T O N

3 4 2 S ( I ) =A ( I ) 3 4 4 NEXT I 3 5 0 GOTO 4 0 0 3 6 0 FOR I = NS T O N 3 6 2 I F I MOD 2 =O THEN S ( I ) =A ( I ) : E L S E S ( I ) = - A ( I ) 3 6 4 NEXT I 3 6 6 REM i aod 2 e ' i l r e s t o de l l a d i v i s ione di i pe r 3 7 0 GOTO 4 0 0 3 8 0 RANDOM I Z E T I MER 382

:

REM Avv i a re

384 386 388 400

I = NS TO N S ( I ) = A ( I ) * SGN ( 2 * RND- l ) NEXT I REM RND produce nume r i REM * * * * * * * * * * R i d o t t e

405

PRINT

410

FOR

420 430

S( I )=S( I-l )+S( I ) P R I N T I ; TAB ( l 5 ) S ( I )

il

g e n e r a t o re

di

nuae r i

casual i

FOR

casua l i fra O e l *****************************************************

" C amp i o na me n t o d e l l e

ridotte"

I = NS T O N

4 4 0 NEXT I 4 5 0 N S = I : REM Ag g i o rnare la v a r i ab i l e NS 5 0 0 REM * * * M i n i ao & M a s s imo di { O , s ( O ) , s ( l ) , , , , , s ( n ) } 5 1 0 I F Z > N THEN Z = O : M I N = O : MAX = O

***

5 2 0 FOR I = Z T O N 5 2 2 Y=S ( I ) 5 2 4 I F M I N > Y THEN M I N = Y 5 2 6 I F MAX < Y THEN MAX = Y 530 540 550 552 600

NEXT I Z = I : REM Agg i o r nare la v a r i a b i l e Z P R I N T : PRI NT " P remere un t a s t o p e r c o n t i nuare " B $ = I NKEY$ : IF B $ = '"' THEN 5 5 2 REM * * * * * * * * * * I s t o g raama d i { s ( O ) , s ( l ) , . . • , s ( n ) } 6 1 0 H = M I N : K= MAX 6 2 0 Z E RO = SY * K/ ( K - H ) 6 3 0 CANC E L LARE LO SCHERMO E ATTI VARE I L MODO GRAF ICO 640 X=O 650 FOR I = O TO N

**************************

6 5 5 LOCATE 1 , 7 5 : P R I N T I 6 6 0 Y= S ( I ) 6 6 5 I F Y < H OR Y > K THEN 6 9 0 6 7 0 Y = S Y * ( K- Y ) / ( K- H ) 6 8 0 L I NE ( X , Z ERO ) - ( X , Y ) 6 9 0 X = X + PA S S O 7 0 0 I F X < SX THEN 7 2 0 · 7 0 5 BEEP : REM Una pag i na e ' f i n i t a 7 1 0 B $ = I NKEY$ : IF B $ = " " THEN 7 1 0 7 1 2 CANCEL LARE L O SCH ERMO 7 1 4 X=O 7 2 0 NEXT I 7 2 5 FOR I = l TO 3 : BEEP : 730 800

NEXT

I

:

REM

Il

d i segno e '

f i n i to

B $ = I NKEY $ : I F B $ = " " THEN 7 3 0 REH * * * * * * * * * * Op z i o n i * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

810 820 822

SCREEN O : REM R i p r i s t i nare i l •odo t e s t o P R I N T " Pu o i f a r e u n a de l l e s e g u e n t i •o s s e : " P R I NT " l - I n t r o d u r r e u n nuovo n ( aagg i o re o a i no re d e l p r e c e d e n t e ) e c o n s i d e r a r e u n nuovo i n s i e me di r i do t t e . 2 - Camb i a re i s e g n i d e i t e rm i n i e r i co • i nc i are . " 8 2 4 PR I NT " 8 2 6 PRINT " 3 - M od i f. i c a re la banda de l l e r i do t t e da v i s u a l i z z are . " 8 2 8 PRINT " 4 - R i p r i s t i na r e l ' i s t o s r a..a , f o rn i to autoaa t i camen t e . " 8 3 0 PRINT " 5 - A r r e s t a r e il p r o g r a..a . " 8 4 0 I N PUT " R i spond i l oppure 2 • • • oppure 5 : " , MOSSA 842 FOR I = l TO 5 8 4 3 I F MOSSA = ! THEN 8 5 0 8 4 4 NEXT I 8 4 5 GOTO 8 4 0 8 5 0 O N MOSSA GOTO 1 8 0 , 1 4 0 , 8 6 0 , 6 1 0 , 9 5 0 8 6 0 P R I N T " I n t roduc i ( i l a i n i ao e i l aas s i ao d i ) u n a banda : i l p r o g ra.. a v i sual i z z e ra '

s o l tanto

le

ridotte

862

I N PUT

864 870

I F H > K OR H = K THEN ZERO=K/ ( K-H )

" m i n i ao = " , H

:

872

I F Z E RO < O THEN Z E RO = O

che

I NPUT 862

s t anno

in

que l l a banda . "

" •a s s i llo = " , K

Serie

I F ZERO > l THEN Z E RO = S Y * ZERO GOTO 6 3 0 K I LL DRIVE$ 1 o o o END

874 876 890 950

Z E RO = l

Dare una formula, chiusa o ricorsiva , per calcolare i termini della serie.

NA, una variabile, conta i termini memorizzati nella lista A

N S , una va riabile, conta le ridotte memorizzate nella lista S

Z, una varia bile, conta le ridotte il cui minimo è il valore corrente di MIN oppure un numero positivo e il cui mas­ simo è il valore corrente di MAX o p p u re u n nu mero negativo

(segue a lato)

185

186

Capitolo sesto

Altri esempi interessanti sono le versioni a segni alterni delle serie precedenti, cioè: +oo ( - l ) n+i

L

n= l

n2

];

Vn '

+oo ( - l ) n+ i

+oo ( - ! )n+ l

L

n

n= l

,

[6.7] [6.8 ] [6.9] (a)

Si nota subito (fig. 6.4) che le somme parziali di queste se­ rie si livellano rapidamente su valori costanti (più rapida­ mente per la [6.7], più lentamente per la [6.8]). Il modo in cui il grafico si forma sullo schermo suggerisce inequivoca­ bilmente come dimostrare il teorema di Leihniz sulle serie a termini di segno alterno: la successione delle somme parziali di indice dispari decresce, quella delle somme parziali di in­ dice pari cresce, tutte le somme del primo tipo sono maggiori di quelle del secondo tipo e la distanza fra due somme con­ secutive tende a zero. Che cosa accade alle tre serie che abbiamo considerato se i segni, anziché alterni, vengono scelti in maniera casuale? Consideriamo la serie +oo r::

" __!':_ L.J n 2 '

n= l

[6. 1 0]

(b)

dove r::n è l o - l e assume questi valori in maniera ca­ suale. La serie [6. 10] è assolutamente convergente, perciò converge per ogni scelta dei segni, come la figura 6.5 sug­ gerisce. Invece le serie +oo r:: �

L

n= l

y!n '

+oo r::

L

n= l

;

[6. 1 1 ] [6. 1 2]

non sono assolutamente convergenti e la convergenza di queste serie dipende dalla scelta dei segni. È chiaro che cosa succede se r::n cambia segno un numero finito di volte. È dif­ ficile invece capire come stanno le cose nel caso contrario. L'uso del calcolatore potrebbe suggerire che la serie [6. 1 2] probabilmente converge per quasi tutte le scelte casuali dei segni; lo stesso sembra accadere alla serie [6. 1 1 ], anche se occorre più pazienza per accorgersene (si veda la figura 6.6). D'altra parte la sperimentazione al calcolatore non

Figura 6.4

(c)

+oo Prime 190 somme parziali di L ( - l )n+ 1jn 2 ; (b) prime 190 n= ! +oo somme parziali di L ( - l )n+ ljn 11 2 ; (c) prime 1 90 somme parziali di n= l +oo L (- ! ) n+ ljn. n= l (a)

Serie

187

porta più avanti di così. La descrizione di questo tipo di fenomeni può essere resa rigorosa soltanto introducendo il concetto di probabilità di convergenza. Il lettore interessato può consultare il libro di J. P. Kahane, Some Random Series of Functions (Heath 1968). Concludiamo questo paragrafo con qualche cenno sulle serie i cui termini a n sono generati per ricorrenza (a partire dal primo) con una formula del tipo:

[6. 1 3 ] Figura 6.5

+oo

Prime 1 90 somme parziali di L

n= I

± l jn2 (scelta casuale dei segni).

Per semplicità, consideriamo soltanto serie a termini posi­ tivi; supponiamo dunque che f(x) sia definita per x :::: O e assuma valori tutti positivi. Per quali tipi di funzione f la serie è convergente? Il criterio del rapporto dice che la serie converge se il limite di a n + I /an è minore di uno. Grazie alla formula [6. 1 3] questo certamente succede se la funzione f verifica una disuguaglianza del genere :

f(x) :::; ( l - e)x, per tutti g l i x positivi e per qualche e tra O e l. Questa condizione significa che il grafico di f sta tutto al di sotto della retta y

= ( l - e)x,

che ha una pendenza un po ' inferiore a quella della bisettrice del primo quadrante. In conclusione, una categoria di serie convergenti si ottiene generando i termini per ricorrenza attraverso una funzione di questo tipo. (a)

6.2 Dalla sperimentazione numerica alla dimostrazione matematica : un esempio

Tabulati di somme parziali di una serie possono essere usati per sperimentazioni. Queste, a loro volta, possono suggerire enunciati di teoremi non ovvi. In altre parole, il calcolatore può talvolta aiutare a formulare congetture e a verificame la plausibilità. Consideriamo ad esempio la serie

Figura 6.6

(b)

+oo (a) Prime 1 90 somme parziali di L ± l /n (scelta casuale dei segni); n= I +oo (b) prime 190 somme parziali di L ± l /n 1 1 2 (scelta casuale dei segni). n= I

+oo l L n= I ­ ..[n,"

[6. 14]

Questa serie diverge; i n realtà il criterio del confronto con un integrale, come ora vedremo, ci dà delle informazioni più ricche, cioè:

2yn - 2


n y'x l

..fii
l O THEN PR I NT " T roppo g r ande " : GOTO 1 6 2 2 0 0 I F C =CC THEN 2 2 0 2 1 0 COE F F = O : REH COEFF c o n t a i v a l o r i , c h e f e d e r i v a t e n e l p u n t o c , ae mo r i z z a t i ne l l a l i s t a L 2 2 0 I F H < COEFF THEN 5 0 0 2 3 0 I F COEFF > = FRHLE THEN 3 5 0 2 4 0 R E H * * * * * I n i z i a u n p r o g ramma aus i l i a r i o

su c c e s s i v e

di

f

hanno

*****

2 4 2 REH I l q u a l e a b i l i t a i l p r o g ramma p r i nc i pa l e a t r a s f o rmare s t r i ng h e a l fanu me r i c h e i n f o rmul e , adat t e a c a l c o l a r e i v a l o r i n e l punto c di f e d i de r i va t e suc c e s s ive di f 2 5 0 F I L E $ = " " : REH I nd i r i z z o d e l d r i v e dove ae•o r i z z a r e i l p r o g ra-a a u s i l i a r i o - qu i u s i amo i l d e f au l t d r i v e 2 5 2 F I L E $ = F I L E $ + " F I LEAUS . BA S " : REH I nd i r i z z o & nome d e l p r o g r aama a u s i l i a r i o 2 5 4 OPEN F I L E $ FOR OUTPUT AS # l : REH Ap r i re u n f i l e 2 6 0 P R I NT t l , " 3 0 0 x = c " 2 6 2 FOR I = COEFF T O FRHLE - 1 2 6 4 PRINT t l , L $ ( I ) 2 6 6 NEXT I 2 6 8 P R I NT 1 1 , " 3 2 0 r e m " 2 7 0 C L O S E I l : R E H C h i ud e re i l f i l e 2 8 0 CHA I N HERGE F I L E $ , 3 0 0 , AL L , DELETE 3 0 0 - 3 2 0 : REH I n s e r i re i l p r o g r a.. a au s i l i a r i o n e l p r o g ramma p r i nc i pa l e 2 9 0 R E H * * * * * F i ne d e l p r o g r amma au s i l i a r i o * * * * * 3 0 0 X = C : REH Durante l ' e s e c u z i o ne d e l p r o g r amaa , qu e s t a i s t ru z i o ne e ' s e g u i t a da u n a s e r i e di a l t r e ; l e q u a l i c o n s e n t o n o di c a l c o l a r e , e i mmag a z z i na r e ne l l a l i s t a L , i v a l o r i n e l p u n t o c d i f e d e r i vate s u c c e s s i v e d i f 320 330 340

REH COEFF= FRH L E : REH A g g i o rnare IF H < COEFF THEN 5 0 0

350 352 354

P R I NT PR I NT P R I NT

COEFF

: P R I NT " I n t roduc i d e r i v a t e de l l a f un z i one f . " " Fa i una de l l e s e g u e n t i due •o s se : " " l - I n t r o d u r r e i VALOR I n e l punto c de l l e d e r i va t e

che

o r a o c c o rron o "

Serie 356

PRINT

358 360 370 380 382 384 386 388 390 400 410 420 422 424 426 428

I N PUT " Q u a l e s c e l t a [ ba t t e r e l oppure 2 ) " ; SCELTA IF SCELTA < > l AND SCELTA < > 2 THEN 3 5 8 I F SCELTA = 2 THEN 4 2 0 P R I N T : PR I NT " L a funz i o n e e ' : f ( x ) = " + F Z N E $ P R I NT " Va l o r e n e l p u n to c de l l a d e r i va t a " FOR I = COEFF T O H P R I N T ' ' d ' o rd i ne " ; ! ; I N PUT L ( l ) NEXT I COEFF = I : REH Agg i o rnare COEFF GOTO 5 0 0 P R I N T : P R I N T " La f u n z i o ne e ' : f ( x ) = " + F Z N E $ P R I NT " E s p re s s i one de l l a de r i va t a '' FOR I = FRHLE TO H P R I N T " d ' o rd i ne '' ; ! ; I N PUT Y $

"

2 - I n t ro d u r r e

430 432 440 450 500

L $ ( 1 ) = L $ ( 1 ) + Y $ : R E H Comp l e t are l a de f i n i z i o ne de l l a fo rau l a L S ( i ) NEXT I FRHLE = I : REH A g g i o rnare FRHLE GOTO 2 5 4 REH * * * * * * * * * * Camp i o namen t i * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

510

PASSO= ( B - A ) / N AND

ESPRE S S I O N I

N = NN

AND C = C C

197

C H I US E d e l l e de r i v ate , c he o ra o c c o r rono "

520

I F A = AA AND B = BB

530 550

I F A = AA A N D B = B B A N D N = NN THEN 7 0 0 REH * * * * * Camp i o name n t o de l l a f u n z i one

THEN

740

560 570 572 te 580 590 592 594

I F Z > O THEN 6 5 0 REH * * * I n i z i a un p r o g ramaa aus i l i a r i o * * * REH I l q u a l e ab i l i t a i l p r o g ra.. a p r i nc i pa l e u n a s t r i nga a l fanuae r i c a OPEN F I L E $ F O R OUTPUT AS t l P R I NT 1 1 , " 6 5 0 f o r j = O t o n " PRINT t l , " 6 5 5 x = a + j *passo T ( O , j ) = " + FZ N E $ P R I N T 1 1 , " 6 6 0 next j "

*****

a de f i n i re

la

f u n z i o ne

med i a n

6 0 0 CLOSE t 1 6 1 0 CHA I N HERGE F I LE $ , 6 5 0 , A LL 6 2 0 REH *** F i ne de l p r o g ramma aus i l i a r i o * * * 6 5 0 REH Durante l ' e s e c u z i o ne d e l p r o g r a.. a , que s t a i s t ru z i o n e e ' r i mp i a z z a t a d a 3 a l t re ; le qu a l i c o n s e nt o n o di c aap i o nare la fun z i one f e c o n s e rvare i c a•p i o n i ne l l a p r i m a r i g a de l l a aat r i c e T 670 672 674 676 678 680 682 700 710

REM * * * M i n i •o & mas s i ao de i camp i o n i di f * * * H I N F N F = l E + 3 5 : MAXFNF= - 1 E + 3 5 FOR J = O T O N Y=T ( O , J ) I F H I NFNF > Y THEN H I NFNF=Y IF HAX F N F < Y THEN HAXFNF=Y NEXT J REH * * * * * Camp i o n a r e i l p o l i no a i o di Tay l o r d i FOR J = O T O N X = A + J * PASSO : T ( l , J ) = L ( O ) + L ( l ) * ( X - C )

712 7 1 4 NEXT J 7 3 0 CHPNT = 2 : REH CHPNT c o n t a i c amp i o naae n t i 7 4 0 I F CHPNT > H THEN 8 2 0 7 5 0 REH * * * * * Caap i o n a r e i pol i no a i d i Ta y l o r d i 7 6 0 FOR J = O T O N 7 7 0 X = A + J * PASSO 780 Y=l 7 8 5 FOR 1 = 1 T O CMPNT - 1

:

Y=Y* ( X-C ) / 1

NEXT

7 9 0 FOR I = CMPNT TO H 7 9 2 Y = Y * ( X - C ) / 1 : REM y : ( x - c ) " i / i ! 7 9 4 T ( I , J ) = T ( I - l , J ) + L ( I ) * Y : REM I p o l i no m i c a l c o l a t i r i c o r s i v aae n t e 796 NEXT l 8 0 0 N EXT J 8 1 0 CHPNT = H + l : REH Agg i o rnare CHPNT 8 2 0 REM * * * H i n i a i l mas s i m i * * *

830

I F A < > AA O R B < > BB OR N < >NN O R C < >CC THEN

g rado

g rado

l

*****

s u pe r i o re

*****

l

di

Tay l o r

di

g r ado

supe r i o r e

sono

850

8 4 0 I F Z < = H THEN 8 6 0 8 5 0 H I N = H I N FNF HAX =HAXFNF : Z = l 8 6 0 FOR I = Z T O H : FOR J = O T O N 8 6 2 Y=T ( I , J ) 8 6 4 I F H I N > Y THEN H I N = Y 8 6 6 I F HAX < Y THEN HAX=Y 8 6 8 N EXT J : NEXT I

(segue)

198

Capitolo sesto

870 880

Z=I REH

882

NN=N

* * * ** * * * * * :

CC=C

:

A g g i o r name n t i B B = B : AA = A

1 0 0 0 REH * * * * * * * * * * Graf i c i 1 0 9 0 REH * * * * * G ra f i c a re f ; g r ado i 1 1 00 1 1 10 1 1 20 1 1 30 1 132 1 1 34 1 1 36 1138 sto 1 1 50 1 1 90 1 200 1210 1220 1230 1232 1234 1236 1238 1 24 0 1242 1 244 1 246 1248 1 500

di

var i ab i l i

*******************************

* * * * * * * * * * * * * * * * * * * * * * * ** * * * * * * * ** * * * * * * * * * * * * * * * * pe r

i=l ,

• . •

, m graf icare

il

CANC E L LARE LO SCHERMO E ATTI VARE IL MODO GRA F I CO W I NDOW ( A , H I N ) - ( B , HAX ) L I N E ( A , O ) - ( B , O ) : L I N E ( O , M I N ) - ( O , HAX ) : REH A s s i FOR I = O T O M LOCATE 1 , 1 : P R I N T GOSUB 2 0 0 0 NEXT l IF Y $ = " " THEN 1 1 3 8 REM A t t e n d e r e che Y $ = I NKEY$

po l i no m i o

di

l ' o p e r a t o re

T ay l o r d i

b a t t a un

ta

GOTO 1 5 0 0 *** REH * * * * * Pe r i = l , • • • , m g r a f i c a r e f e i l po l i no • i o d i T ay l o r d i g rado CANCELLARE L O SCHERMO E ATT I VARE I L MODO GRAF IC O W I NDOW ( A , H I N ) - ( B , HAX ) FOR 1 1 = 1 TO H L I NE ( A , O ) - ( B , O ) : L I NE ( O , H I N ) - ( O , HAX ) I=O LOCATE 1 , 1 : P R I N T GOSUB 2 0 0 0 I=II LOCATE 1 , 2 : P R I N T I GOSUB 2 0 0 0 Y $ = I NKEY$ : I F Y $ = " " THEN 1 2 4 4 CANCELLARE L O SCHERMO NEXT I I REM * * * * * * * * * * Opz i o n i * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

1 5 1 0 R I P R I S T I NARE I L MODO TESTO 1 5 2 0 PRINT " Pu o i fare una de l l e cose s e guent i : " 1 5 2 2 P R I N T '' l - P e r i = 1 , 2 , • • . • • o s s e rvare i l g r a f i c o d i f e i l g r a f i c o d e l po l i no m i o d i Tay l o r d i g r ado i . " 1 5 2 4 PRINT " 2 - Ho d i f i c are i l c a•p i ona•e n t o ( l ' i n t e rv a l l o e / o i l nume ro d e i c aa piani 1 526 1528 1 5 30 1532 1 550 1552 1 554

e/o

il

c e n t r o ) . ''

P R I NT " 3 - Caab i a re i l c e n t ro de i p o l i no • i d i Tay l o r . " P R I NT " 4 - C aab i a re i l g rado ma s s i mo d e i p o l i noai d i Tay l o r i n g i oc o . " P R I NT " 5 - R i p r i s t inare i l d i s e g no , f o rn i t o autoaat i c a•ent e . " P R I NT " 6 - A r r e s t a r e i l p r o g raama . " I N PUT " C o s a s c e g l i [ bat t i l oppure 2 . . • . oppure 6 ] " ; SCELTA FOR I = l TO 6 I F SCELTA = ! THEN 1 6 0 0

1 5 5 6 NEXT I 1 5 5 8 GOTO 1 5 5 0 1 6 0 0 O N SCELTA GOTO 1 2 0 0 , 1 2 0 , 1 5 0 , 1 6 0 , 1 1 0 0 , 2 9 0 0 2 0 0 0 REM * * * Su b r ou t i ne ; g r a f i c o de l l a fun z i o ne oppure i l po l i nom i o d i Tay l o r di g rado i 2 0 1 0 X=A : Y=T ( I , O ) 2 0 2 0 FOR J = l TO N 2 0 3 0 XX =X : Y Y = Y 2 0 4 0 X = A + J * PASSO : Y = T ( I , J ) 2 0 5 0 L I N E ( XX , YY ) - ( X , Y ) 2 0 6 0 NEXT J 2 1 0 0 RETURN R E H Canc e l l a r e 2 9 0 0 KILL FILE$ 3 0 0 0 END

p r o g r a.. i

l i ne a r e

aus i l i a r i

a t rat t i c h e

i n t e rpo l a

f

Definire la funzione f, mediante una formula chiusa. Completare la definizione di L$(0), inserendo in L$(0) l'espressione di f

t

lnizializzare FRMLE: FRMLE 1. FRMLE conta quante formule sono memorizzate nella lista L$ =

t Definire gli estremi, A e B, dell'intervallo

t

:

Opzione 2

Definire il numero, N, dei campioni. Controllare che N sia più grande di 1, ma non troppo grande

t

Definire il centro, C, dei polinomi di Taylor l

Opzione 3

+

Definire il grado massimo, M, dei polinomi di Taylor che devono essere considerati. Controllare che M sia più grande di 1, ma non troppo grande

Opzione 4

t

Test: Coincide il centro C, ora introdotto, con quello Sì introdotto precedentemente?

t

No

Azzerare COEFF: COEFF O COEFF conta quanti, fra i valori che f e le derivate successive di f hanno nel centro C, sono memorizzati nella lista L =



+

.

j

Test: M < COEFF ?

f

No

Test: COEFF >

t

=

FRMLE ?

:

s· 1

No

Per l= COEFF, ..., FRMLE -1 calcolare L(l) mediante le formule, che sono ·memorizzate nella lista L$

t

(segue)

200

Capitolo sesto

l

Aggiornare COEFF: COEFF = F R M L E s·



Test: M < COEFF ? No

l

l

l

Agg iornare F R M LE: F R M L E = M

N

r-

co ...

al

+1

Per l = F R M LE, . . . , M chiedere un'espressione della derivata d'ordine l . Completare la definìzione di L$ ( l ) , inserendo tale espressione in L$ ( 1 )

o C/)

Ch iedere valori o espressioni delle derivate d'ordine l = COEFF, . . . , M �

co ...

al

o C/)

'-

Per l = COEFF, . . . , M chiedere il valore nel pu nto C della derivata d'ordine l e conservare tale valore col nome L ( l )

Aggiornare COEFF: COEFF = M

l�

t

Definire il passo dei campiona menti : PASSO = ( B - A) / N



l

Test: Coincidono i valori di A, B, N, C, ora in gioco, con quelli introdotti precedentemente? No

p,

Test: Coincidono i valori di A, B , N, ora in gioco, con quelli introdotti precedentemente? No Campionare la fu nzione f in (N + 1 ) nodi equidistanti fra A e B, e conserva re i campioni nella prima riga della matrice T

t

ì

+1

Serie

l

201

j

Calcolare M I N F N F e MAXFN F, il minimo e il massimo fra i campioni di f

Campionare il polinomio di Taylor di grado 1 in (N + 1 l nodi equidistanti fra A e B , e conservare i campioni nella seconda riga della matrice T. ... Usare le formule: X = A + J * PASSO, T ( 1 , J ) = = L (O) + L ( 1 ) * (X - C l

l n izializzare CM PNT: CM PNT = 2 . C M PNT conta i campionamenti disponibili

+1

t

Test: CM PNT > M ? No

:



l

1

Per l = CM PNT, . . . , M campionare il polinomio di Taylor di grado l in ( N + 1 l nodi equidistanti fra A e B, e conservare i campioni con i nomi T ( l , 0 ) , . . . , T ( l , N l . Usare l e formule: X = A + J * PASSO, T ( l , Jl = T l l - 1 , Jl + L ( l ) * IX - C l: l / 1 ! per J = = 0, . . . , N

Aggiornare CM PNT: C M PNT

r1

N

M+1

1

Test: Coincidono i valori di A, B, N, C, ora in gioco con quelli precedentemente introdotti 7 Sì

Test: Z < = M

..,

=

No

71 J

}

s· 1

l n izializzare M I N , MAX, Z: I\:1 1 N = M I N FN F, MAX = MAXFN F, Z = 1

Aggiornare M I N , MAX, Z: M I N = minimo fra M I N e T ( l , J ) MAX = massimo fra M AX e T ( l , dove l = Z, . . . , M e J = O , . . . , N ; Z= M+1

l

J ) . r+-

(segue)

202

Capitolo sesto

l

J

Memorizzare i valori correnti di

A, 8, N, C

f_

Tracciare in successione: -

Opzione 5

il grafico di f; i grafici dei polinomi di Taylor di grado 1, 2, . . . , m

Per l

=

1, 2,

. . .

, M tracciare il grafico di f

Opzione 1

e il grafico del polinomio di Taylor di grado l

+j

t

Opzioni

f Opzione 6

Fine

6.6 Serie di potenze e funzioni di Besse! La maggior parte delle funzioni cosiddette elementari potenze, esponenziale, logaritmo, funzioni trigonometriche

e tutte quelle funzioni che si ottengono combinando le prece­ denti con un numero finito di operazioni aritmetiche - sono funzioni analitiche. Vale a dire, esse sono rappresentabili an­

che come somme di serie di potenze;

una proprietà, questa,

che rende tali funzioni particolarmente maneggevoli. Esisto­ no però numerose funzioni analitiche che non sono elemen­ tari, ma che sono altrettanto importanti. Tali funzioni non sono rappresentabili in una forma chiusa semplice e le serie di potenze costituiscono al contempo una definizione di tali funzioni e il principale strumento per studiarle.

è costituito dalle funzioni di Besse/. di prima specie dipendono da un parametro reale a, si indicano con Jo:(x) e sono definite dalla Un esempio notevole

Le funzioni di Besse!

formula: o: +oo

Jo:(x)

=

nel caso che

(-l) n

'f l) (x/2) 2n , =O n. ( n+ a+ n

(x/2) L x

sia pos1t1vo e che

negativo. Qui r indica la funzione

a

[6.36]

non sia un intero

gamma di Eulero.

La

funzione r potrebbe essere definita come l 'unica soluzione logaritmicamente convessa dell'equazione funzionale

Figura 6.8 Polinomi di Taylor di arctg

x.

f(z +l)= zf(z),

Serie

verificante la condizione

a) I termini della serie di potenze a destra nella [6.36] possono essere calcolati ricorsivamente. Infatti, se si chiama an il termine di posto n, si ha:

r( l ) = l . Il criterio del rapporto e la definizione data di r dicono subito che la serie a destra nella [6.36] ha raggio di convergenza infinito, cioè converge per tutti gli x. Se z è u n numero intero positivo la definizione stessa dice che r(z + l ) è semplicemente il fattoriale di z. Quindi la formula [6.36] diventa:

(- l ) n Jo:( X) = (x/2) o: � , (x j 2) 2n 1 n . (n + a) . n=O se a è un intero. In particolare se a = O si trova +oo ( - l )n j 2n Jo(x) = � 2 (x 2) .

(n + a -

4n(n + a)

an - l

(n = l ,

2, 3 ,

. . .) .

Il primo termine è r(a + l ) '

[a]

j=O

se si usa il surrogato indicato prima.

Se a non é numero intero (né semintero) la formula [6.36] è un po' complicata (per una formula di rappresentazione di r si veda l 'esercizio 2. 10). Per motivi di semplicità, se a è un reale positivo non intero in questo paragrafo sostituiremo il termine r(n + a + l ) con

n

- x2

TI (a - j),

Se a non è intero ma semintero, cioè a = intero + l /2, si ritrovano delle vecchie conoscenze: si può dimostrare, ad esempio, che

j=O

an =

se si usa la serie in [6.36] ; altrimenti è

(n ! )

a- [a]

203

j),

dove [a] = INT (a). La definizione di r ci dice che questo prodotto è il rapporto tra r(n + a + l ) e r(a - [a]); dunque la nostra semplificazione consiste nel dimenticare soltanto un fattore moltiplicativo nella definizione [6.36] . Ricordiamo che le funzioni di Besse! possono essere caratterizzate dall ' equazione differenziale [6.37] Si verifica facilmente che Jo:(x) è soluzione di questa equa­ zione differenziale qualunque sia a. Si potrebbe dimostrare che, se a non è un intero, tutte le soluzioni dell 'equazione [6.37] sono una combinazione lineare di Jo: e L a . I valori delle funzioni Jo: possono essere calcolati agevol­ mente con la formula [6.36] . Facciamo in proposito le seguenti osservazioni.

b) La serie a destra nella [6.36] ha termini di segno alterno (almeno se a è positivo). Inoltre il valore assoluto dei ter­ mini decresce con n a partire da un certo indice in poi (indice che dipende da x e da a). Dunque, per il criterio di Leibniz, l ' errore che si commette nell ' approssimare la somma della serie con la ridotta n-esima non supera il valore assoluto del termine di posto n - l . La proprietà a) suggerisce un algoritmo per il calcolo delle funzioni di Besse!; la proprietà b) fornisce un criterio di ar­ resto per l ' algoritmo stesso. Con tale algoritmo è facile cam­ pionare le funzioni di Besse! e quindi disegnarne il grafico. Un programma ad hoc è il codice BESSEL. Il programma consente di disegnare il grafico di una o più funzioni di Besse! a scelta. Con questo programma si ricavano i grafici della figura 6.9, che rivela un fenomeno interessante: gli zeri di Jo: separano (cioè si dispongono in maniera alternata rispetto a) quelli di Jo:+l · Chiudiamo questo paragrafo mettendo in guardia il lettore da un 'eccessiva fiducia nei metodi di calcolo come quello sviluppato nel codice BESSEL. Il termine n-esimo nello svi­ luppo in serie di potenze di Jo: è del l ' ordine di grandezza di l n ! r(n + a)

( x ) 2n 2

Al crescere di n e di x, sia il numeratore che il denomina­ tore crescono molto rapidamente. Per evitare traboccamenti, l ' algoritmo che abbiamo sviluppato non calcola il termine n-esimo direttamente, ma lo ricava ricorsivamente, moltipli­ cando il termine di ordine n - l per

- x2 4n(n + a) ·

204

Capitolo sesto

Nome Scopo Dato

Risultati Algoritmo

BESSEL Disegnare un grafico di una o più funzioni di Besse! di prima specie. Un intero positivo nf (il numero delle funzioni di Besse!, che devono essere considerate); numeri non negativi inde(i) (i = O, l , . . . , nf - l ) (gli indici delle funzioni di Besse! in esame: in questo programma si considerano solo indici maggiori o uguali a zero); due numeri a e b, il primo maggiore o uguale a zero, il secondo maggiore del primo (gli estremi dell'intervallo, in cui le funzioni di Besse! devono essere studiate: in questo programma si considerano solo valori non negativi dell'argomento); un intero ne, relativamente grande (il numero dei campioni, che devono essere calcolati); un numero eps , positivo ma relativamente piccolo (la precisione, con cui i campioni devono essere calcolati). a) Campionamento delle Jn(x) (funzioni di Besse! di prima specie e indice n) nei nodi Xj = a+j(b-a)/ne (j = O, l , . . . , ne). Qui n = inde(O), inde(l), . . . b) Grafico delle medesime funzioni, relativo all'intervallo a � x � b. Fissati n e x, il valore di Jn(x) nel punto x è approssimato dalla somma rdt(k), dove k è il più piccolo intero maggiore o uguale a uno tale che l trm(k) l� eps . Qui rdt(k) = trm(O) + . . . + trm(k - l ) e trm(k) = ( - i ) k (x/2)n+ Zk /(k! (k + n)!). Conviene procedere ricorsivamente così:

rdt(O) = O, trm(O) = (x/2t /n!; rdt(k) = rdt(k - l ) + trm(k - 1 ), trm(k) = - trm(k - l) ( x / 2 )2 j(k(k + n)) 8

R�M • • • I ngresso dì dati • • •

10

PRINT " Quante funz ioni " ;

- 12

INPUT NF : REM Numero delle fun zioni di Besse ! , che devono es sere consi derate

14

NF=NF-1

16

DIM INDC ( NF )

: REM INDC

=

l ista degli i nd i c i delle

funzioni di Besse! in g ioco 20 - 22 30 - 32 34

PRINT " Qua l i fun z i oni ( i ntrodurre gli indi c i ) FOR 1=0 TO NF : INPUT INDC ( I )

11

: NEXT I

PRINT " Estremi del l ' intervallo " INPUT

11

s i n i s tro " ; A :

INPUT " destro " ; B

IF A< O OR B < A THEN 30 : REM L ' estremo s i n i s tro

deve essere positivo o nul l o - 40 50

INPUT " Quanti camp ioni " ; N C D IM BSS L ( NF , N C )

: REt-! BSSL = collez ione d i campioni

d i funzioni d i Besse! - 60 62

INPUT '' Prec i s i one " ; EPS I F EPS < = O THEN 60

98

REM • • • Campi onamenti , massimo & minimo • • •

100

MIN=1 E+35 : M AX = - M IN : REM l n i z i al izzazioni

110

PASSO= ( B-A ) /NC : REM Passo della scansi one

120

FOR 1 =0 TO NF

130

N=INDC ( I )

: REM Indice de l l a fun z i one d i Besse!

da camp ionare 140

I F N < 2 THEN 1 50

142

GOSUB 600

150

FOR J=O TO NC : REM Campi onamento del la funzi one d i Besse! con i ndice

n

160

X=A+J•PASSO : REH Nodi

170

GOSUB 1000

(k = l, 2, 3,

...

).

Serie 180

BSSL ( I , J ) =RDT : REM Campioni

188 192

IF MIN > RDT THEN MIN=RDT : REM Aggiornamento

200

PRINT N ; TAB ( l 5 ) X ; TAB ( 35 ) RDT

210

IF MAX < RDT THEN MAX=RDT : REM Aggiornamento

NEXT J

220

NEXT I

250

PRINT : PRINT " Premere un tasto per continuare "

252

Chi edere un c arattere C$ : IF C$ =

1111

THEN 2 52

298

REM * * * Grafici • • •

300

Cance l l are lo schermo & attivare i l m od o grafico

310

: REM Coordinate de l l ' u l t imo p i xe l

: SY =

SX =

320

H=SX/NC : K=SY/ ( MAX-MIN )

330

I F MIN•MAX > O THEN 334

332

205

Y=K•MAX : Y=INT ( . 5+ Y )

: REM Fattori di scala

: Linea fra ( O , Y ) e ( SX , Y )

REH Asse de l l e asci sse 334

I F A > O THEN 340

336

L inea fra ( 0 , 0 ) e ( O , SY )

340

FOR I =0 TO NF

350

XoO : Y=K • ( MAX-BSSL ( I , O ) )

352

Y=INT ( . 5+Y )

354

FOR J = l TO NC

356

XX=X : YY=Y

REt1 Asse delle ordinate

358

X=H'J : Y=K • ( MAX-BSSL ( I , J ) )

360

X=INT ( . 5+ X )

362

L inea fra ( XX , Y Y ) e ( X , Y )

364

: , Y=INT ( :5+Y )

NEXT J

370

NEXT I

400

Chiedere un carattere C $

500

END

IF C$ = '"' THEN 4 00

598

REM ••• Subroutine - Fattoriale di N * * *

600

FTRL= l

610

FOR J=2 TO N

620

FTRL=FTRL •J

630

NEXT J

700

RETURN

998

REH ••• Subroutine - Funzione di Besse! di prima spec ie e i ndice

n : valore i n un punto

x

•••

1 0 00 K=O 1010 RDT=O : TRM= ( X/ 2 ) "N 1020 I F N< 2 THEN 1050 1030 TRM=TRM/FTRL 1050 K=K+l 1060 RDT=RDT+TRM : TRM= - TRM•x•X/ ( 4• K • ( K +N ) ) 1070 IF ABS ( TRM ) > EPS THEN 1 050 1 1 00 RETURN

In questo modo, però, si va incontro a un altro rischio. Se x è grande (diciamo maggiore di I O) e la precisione richiesta è elevata (diciamo dell'ordine di l o-6), è necessario sommare molti termini della serie (diciamo più di 25). Un numero

così elevato di moltiplicazioni amplifica l'errore e rischia di rendere inattendibile il calcolo. Notiamo che i fattori, per cui passo passo si moltiplica, sono negativi: è plau­ sibile quindi che l'errore abbia segno oscillante, ma che

206

Capitolo sesto Esercizi 6.1 La costante di Catalan G, che interviene in varie questioni di analisi, può essere definita dalla formula:

G

=

+oo ( - l )n

"' !:o (2n + 1 ) 2 · =---:-:-:;

Usare questa formula per approssimare il valore della costante confrontare i risultati con quello noto (G = 0.91 596559 . . . ) .

G

e

6.2

Calcolare la somma delle seguenti serie e confrontare i risultati con quelli riportati:

+oo l a) � --;;- = 1 .29 1 28600; n�l n Figura 6.9

Le funzioni di Besse! J"' (a = O, l , . . . , 6).

b)

� ( - �) n�l n

n

= -0.7834305 1 ;

+oo l l 7r 2 c) '\' -,-n = - - - (log 2) 2 ; � n �2 1 2 2 +oo

1 7r ( - l )n 2 1 g 2; = (2n + 1 )(2n + 2) 4 - 0

� ( 1 )n n = -0. 2696 1 05; e) � -2 n� o n + l d

)

f)

+oo

l � n� = l .87985386;

n� l

n

+oo n 7 1 = 877e; n� l n . +oo ' h) � e- n - = 1 .3863 1 860. n�O

g) �

Figura 6.10

Grafico della funzione di Besse! Jo nell'intervallo (0 , 20), che eviden­ zia l 'insorgere di instabilità a partire da x � 1 5 .

cresca i n valore assoluto. Questo è precisamente ciò che accade al nostro algoritmo se x è grande. Il sorgere di questo fenomeno è mostrato nella figura 6. 1 O, dove è rappresentato il grafico di J0, calcolata nell'intervallo [0, 20] con 300 punti di scansione, richiedendo una precisione pari a l o-6. L'instabilità insorge per x � 1 5 . Il fenomeno diventa ovvia­ mente assai più contenuto se il calcolo è eseguito in doppia precisione. Invitiamo il lettore ad adattare in tal senso il codice BESSEL.

6.3

+oo n� o

Studiare la serie � an dove i termini sono definiti ricorsivamente

da:

{ ao

= dato

an + l = /(an ) , n = O, 1 , 2, . . .

a) Considerare i casi seguenti: l ) /(x) = log �; l 2) /(x) = 2 arctg x; 3) /(x) =

� (� - l );

Serie

4)

l

perché

f(x) = 2 I I - l x - l I l ;

5) f(x) = x 2 +



u

è

207

piccolo). Usare il processo iterativo:

wo = cos w; = 2wf_ 1 - l , i = l , 2, . . . u

e determinare i valori del termine iniziale che rendono convergenti le serie. b) Considerare il caso in cui f(x)jx è, in valore assoluto, strettamente minore di l per x lontano dall'origine, ma ha limite l per x che tende a O. In particolare considerare in dettaglio il caso in cui f(x) = sin x (fig. 6. 1 1 ).

fino a ottenere Wn · La formula di duplicazione del coseno cos (2a)

e la definizione di u dicono subito che

6.4

Approssimare il valore della costante di Eulero-Mascheroni definita nel paragrafo 6.2.

6.5

Dimostrare la congettura del paragrafo 6.2 utilizzando il teorema di Leibniz per serie a termini di segno alterno (porre a2n - l = f(n), a2n = - !,nn+ l f(x)dx).

6.6

Studiare il lim n �+oo(Sn - In ). dove le notazioni sono quelle del paragrafo 6.2 e /(x) =

--­

t(log t + l )

6.7 S i potrebbe pensare di calcolare cos x con i l seguente procedi­ mento. Fissare x e determinare il più piccolo intero n tale che:

Definire u con la formula:

Wn =

COS

X.

Questo algoritmo è del tutto analogo a quello usato nel paragrafo 6.3 per la funzione esponenziale. Tuttavia, in questo caso, l 'algoritmo funziona male. Verificare sperimentalmente i difetti e cercare una spiegazione. 6.8

Sviluppare algoritmi per calcolare Vf+X e 1 / Vf+X (con una precisione assegnata) per - l < x < l . Usare questi algoritmi per calcolare la radice quadrata di numeri. L' idea consiste nel cercare un quadrato convenientemente vicino al numero e nel calcolare la radice quadrata di ciò che avanza con uno degli algoritmi precedenti. Ad esempio: a) per calcolare J50 si può scrivere:

e calcolare la radice di l +

e calcolare cos u con la formula di Taylor (la quale è efficiente

= 2 cos2 a - l

;9 con gli algoritmi messi a punto;

b) per calcolare /2. si può scrivere: 2

= ( 57 )2 ( l - 5l0 ) - 1

e calcolare ( l - _!_0 ) - 1 12·, 5 c) per calcolare .J3 si può scrivere:

.J3 = 2 0 + _!_ ) - 1 1 2 .

4

48

6.9 Un algoritmo per calcolare l 'arcotangente di un numero x piccolo, diciamo tra - l e l , può essere il seguente. Si parte dalla formula evidente: �x dt arctcr x = O -l + t2 e

Figura 6.11

Prime 1 90 somme parziali di

e si usa l ' identità algebrica: ( � )n l __ = 1 t 2 + t 4 + . . . + ( - l ) n - l t 2n - 2 + , l + t2 l + t2 _

+oo

L an con an+ 1 = sin an , ao =

n= O

l.

__ _-

che dà la somma di n termini di una progressione geometrica con

208

Capitolo sesto

ragione -t 2 . Si ottiene così: x3 arctg x = x - 3 dove

È evidente che

di Taylor (verificare). Una formula meno ovvia, ma risolutiva, è la seguente: 2 -l

x n x +5 + . . . + ( - l )n - l 2n - l + Rn ( x )

Rr, (x )

5

__

2n

= ( - l )" Jcrox l t+ t

-2

1r

,

(- l )n Rn (x) ha il segno di x e vale la maggiorazione: l X 1 2n + l l Jln (x) I :S -- · 2n + l

come si è fatto nel capitolo sulle formule di quadratura. Questa scelta tuttavia funziona malissimo se si vuole utilizzare la formula

c ( l ) = 1 /3 c (2) = 2/15 c (3) = 17/315 c(4) = 62/2835

l

23 9 ,

La funzione tg x si calcola evidentemente come rapporto di sin x e cos x. Tuttavia può avere qualche interesse scrivere la serie di Taylor per questa funzione. La formula è:

arctg l = 1r /4,

{

arctg

6.10

Questo algoritmo si presta bene per calcolare 1r. L'idea è trovare archi convenienti sui quali l 'arcotangente ha valori parenti di 1r. La scelta più ovvia sembrerebbe suggerita da:

c(n) = tg O tale che sin To = T5 . Poiché 3 sin l < l , è chiaro che ro < l . Sia poi T > O tale che T 2 = r : si

e quindi : f' (x) > f'( l ) = cos l - 2 > cos Ora, .

Perciò:

T. Apostol, op . cit., vol.



ha T = .jf5 - 3. Si provi che O < To - T < 0.2. Possiamo trovare una stima migliore della distanza fra T e ro? Poiché lo sviluppo di Taylor della funzione sin x è a segni alterni per x > O, il teorema di Leibniz x3 mostra che l ' errore sin x - (x - 6) è positivo e inferiore a x5 / 1 20. Perciò:

x2

Questa è una stima di quale sia la differenza fra sin x e per = r. Ma il nostro obiettivo è di stimare quale sia la differenza fra T e ro . Poiché 0 . 8 < T < To < l , la funzione f(x) = sin x - x2

x

ha derivata J ' (x) = cos x - 2x negativa nel l ' intervallo [r, To] (poiché in questo intervallo 2x < -2 0.8 < - l ). Più precisamente, ·

f'

è

decrescente

in

[T, To]

(poiché

J" (x) = - sin x - 2 < 0)

l

2

f(T ) = sm T - r
l non si ha una formula chiusa per esprimere le radici di queste equazioni algebrièhe mediante radicali. Ciò indica che, per quanto riguarda il calcolo numerico su un elaboratore, di solito non vi è un grande vantaggio ad approssimare radici di equazioni tramite sviluppi di Taylor: per l ' elaborazione è ugualmente facile trattare l ' equazione sin x = x 2 o le equazioni algebriche generate dal­ l ' approssimazione polinomiale del seno.

210

Capitolo sesto

6.12 Sviluppare le seguenti funzioni in serie di Taylor e disegnare i primi polinomi di Taylor:

a)

l ) f(x) = ( l + x) "' , dove a è un numero reale; 2) f(x) = log (l + x); 3 ) f(x) = arcsin x; 4) f(x) = cosh x; 5 ) f(x) = sinh x; 6) f(x) = tg x; l 7) f(x) = ; --

cos 2 x

l + x v'l + x 2 x v'l l + arctg ; /(x) = 2 log l xv"i + x2 l - x2 arcsin x f(x) =

b) c)



(Suggerimenti : b) c)

f(x) = 2y"i fox

( l - x 2 )f'(x) - xf(x) - l

=

t< n Jco ) =

n

O se nè dispari (- l ) k (4k)! se n = 2k.

La serie di Taylor di questa funzione è dunque :

�( - l )k (4k) ! x2 k

k=O

(2k)!

'

che, come si vede subito col criterio del rapporto, converge solo per

x = o.

O, da cui, derivando con la formula di

/( n+2 ) (0 ) = ( n + 1 ) 2 /( n ) (O),

{

Campionare e disegnare il grafico delle funzioni dalle seguenti serie di potenze :

Leibniz per il prodotto, si ottiene la relazione ricorsiva:

6.13

Si potrebbe dimostrare facilmente (usando qualche teorema sugli integrali impropri e sulla derivazione sotto il segno di integrale) che f(x) è derivabile infinite volte e che

6.14

14 dt; +t

-

l

definita:

= O, l , 2, . . . ).

Esistono funzioni indefinitamente differenziabili, la cui se­ rie di Taylor ha raggio di convergenza zero. Un esercizio interes­ sante potrebbe essere il disegno dei primi polinomi di Taylor di una funzione del genere. Ad esempio, si consideri la funzione così

a)

+oo ( - 1 )n x 2n /(x) = L ; n=O n ! v'n+J

f(x)

definite

Appendice Errori di arrotondamento

A.l L'aritmetica del calcolatore

Un calcolatore immagazzina una quantità limitata di in­ formazione, quindi conosce soltanto una quantità limitata di numeri. Ciascun numero conosciuto consiste di una succes­ sione finita di cifre (in realtà, il calcolatore utilizza sviluppi esadecimali: per semplicità, le nostre argomentazioni si riferiscono invece a sviluppi decimali). Il numero di cifre, in condizioni standard (precisione singola), è 6 o 7. In pre­ cisione doppia, questo numero diventa 16 o 1 7 . Inciden­ talmente, un'unità di informazione è necessaria per im­ magazzinare il segno del numero; ma qui, per comodità, restringiamo l' attenzione ai numeri positivi. Le cifre possono essere separate da un punto, il quale può fluttuare in diverse posizioni. Oltre alle cifre, il calco­ latore memorizza la posizione del punto. Così, il calcola­ tore conosce tutti i numeri interi fra O e 9 999 999, e anche numeri piccoli come 0.00000 1 . Si osservi che i numeri noti non sono equidistribuiti: i numeri piccoli (cioè quelli vicini a 0.00000 1 ) sono separati da distanze dell 'ordine di w- 6 , mentre vicino a 9 999 999 la distanza è dell 'ordine di l . In al­ tre parole, la risoluzione, cioè la distanza fra due numeri noti consecutivi, è proporzionale alla loro grandezza. In realtà, il punto non è vincolato a stare dentro la suc­ cessione delle cifre. Alcune delle celle di memoria, de­ stinate a memorizzare i numeri, sono utilizzate non per immagazzinare le cifre significative, bensì per memoriz­ zare il numero di zeri fra il punto e le cifre significative. Ad esem o, il numero 0.00000 1 23456 si rappresenta così: l l l 2 3 l 4 l 5 l 6 l c::::::TI e si scrive, di solito, 0. 1 23456 · E 5; invece il numero 1 23 45 600 000 si scrive 0. 1 23456 E l l . Le notazioni che abbiamo utilizzato richiamano quelle consuete: 0. 123456 - 1 0 - 5 e 0. 1 23456 10 1 1 , rispettivamente. Questa rappresentazione, che si chiama rappresentazione in

r

-

·

virgola mobile (floating point, in inglese) permette al com­ puter di estendere il suo campo di azione a numeri reali pic­ coli come w- 3 8 o grandi come 1 03 8 (in precisione singola). Tuttavia, la risoluzione relativa resta dell 'ordine di w - 7 • Per apprezzare in pieno questo fatto, si guardi come il calcolatore somma i numeri l l EO e 0.0000000 1 = l E - 8. Per sommare i due numeri, il calcolatore deve, idealmente, incolonnarli, giustapponendo le cifre decimali dello stesso ordine, nel modo seguente: =

1 .0000000 0.0000000 1 Ma così facendo, il numero di posti decimali che separano la cifra significativa del primo numero da quella del secondo è maggiore di 7. Pertanto il calcolatore non può rappresentare esattamente la somma: esso è costretto a troncare il secondo numero, trasformandolo nel numero zero e così la somma risulta uguale al primo numero, cioè l . Naturalmente, per minimizzare questo tipo di errori, il calcolatore non si limita a troncare il numero alle prime sei cifre, bensì l ' arrotonda a sei cifre: ad esempio, se il secondo numero fosse stato 0.00000006, esso sarebbe stato arrotondato a 0.000000 1 , e la somma sarebbe risultata 1 .000000 1 ; ancora sbagliata, ma con un errore inferiore al risultato che si sarebbe ottenuto troncando. A.2 Le proprietà commutativa e associativa della somma

Vediamo ora quali sono le conseguenze di questa aritme­ tica sulle proprietà commutativa e associativa della somma. È chiaro che, quando il calcolatore somma due numeri in­ colonnandoli come si è visto sopra, non importa l'ordine con

212

Appendice

cui i due numeri vengono sommati. Perciò la proprietà commutativa è rispettata allorché il calcolatore somma due numeri. Non è così per la proprietà associativa (nella somma di tre o più numeri), come dimostra il seguente esempio. Sia:

a = l,

b = 0.00000004,

c = 0.00000004.

Se chiediamo al computer di calcolare a + b, la risposta è l , cioè a + b = a (si deve sempre tener presente che questa non è l ' aritmetica tradizionale . . . ). D ' altra parte, c = b, quindi, per il calcolatore, a+c = a. Allora (a+b)+c = a+c = a = l . Però, b + c = 4E - 8 + 4E - 8 = 8E - 8 = 0.00000008. Dunque, gra­ zie ali ' arrotondamento,

1 .000000 0.00000 1 1 .00000 1 In altre parole, a + (b + c) = 1 .000000 1 =l (a + b) + c. Così, la

proprietà associativa non vale per numeri con ordini di grandezza troppo diversi. In realtà, in un tipico elaboratore la precisione singola varia, anche se leggermente, con il modello e la marca e di solito è di un ordine di grandezza superiore a quella che cautelativamente abbiamo adottato qui: perciò è necessario, nel verificare questo fenomeno nella pratica, considerare uno scarto maggiore fra il numero grande e quelli piccoli. È opportuno sottolineare due modi con cui l ' imprecisione della somma viene a galla. Chiamiamo e la precisione della macchina, cioè il minimo divario fra numeri che il calcolatore può sommare correttamente (in precisione singola, come si è detto, si ha e ;;:::; w - 7 ). Se bfa « e, di­ ciamo b /a ;;:::; e/ l O, allora, di regola, il calcolatore eseguirà la somma a + b troncando b a zero: cioè, a + b = a. Se inve­ ce bfa < e ma bfa ;;:::; e, cioè, diciamo, bfa > e/ 2 allora le prime 6 cifre decimali di b sono nulle, ma la settima (o l ' ottava) no. Siamo nelle condizioni in cui a + b può es­ sere diverso da a in seguito ad arrotondamenti sul valore di b. In realtà, i limiti entro cui si manifesta l ' arrotondamento dell' addendo più piccolo sono qualche volta più ampi di quanto qui abbiamo scritto e in generale essi variano col modello di calcolatore che si utilizza. Ciò è dovuto al fatto che, pur visualizzando sempre 7 cifre significative sullo schermo (in precisione singola), di solito i calcolatori utiliz­ zano, nel loro interno, un maggior numero di cifre significa­ tive per eseguire le operazioni, al fine di ridurre l ' incidenza delle imprecisioni qui descritte. I limiti, entro i quali un cal­ colatore riesce a tenere traccia degli arrotondamenti, dipen­ dono dal numero di cifre significative impiegate, il quale varia da una macchina ali ' altra. Le conseguenze della perdita della proprietà associativa diventano assai più evidenti quando si considera la somma

.

non di soli tre numeri, bensì di molti numeri. Accade che il risultato del sommare può dipendere dali' ordine in cui gli addendi sono presi (e quindi, in apparenza, si perde la com­ mutatività della somma, anche se, come si è detto, questo tipo di fenomeni è dovuto alla perdita della associatività). Non solo, ma i risultati ottenuti sommando in ordine di­ verso un gran numero di addendi possono differire non solo sull ' ultima cifra significativa, ma anche su parecchie cifre precedenti. Per comprendere questo fenomeno, supponiamo di considerare una serie a termini positivi a n convergenti a

n Sn L a k (eseguite l k=l sommando in ordine diretto) e s� = L a k w- 7 (in precisione singola) o 1 0 1 6 (in precisione doppia). Quando n si avvicina a tali limiti, ci attendiamo che, per effetto del troncamento, il risultato del calcolo cominci a decrescere, per stabilizzarsi infine sul valore l . Questo è esattamente ciò che si verifica nel calcolo tramite la routine del logaritmo (prima colonna nelle figg. A.3a e b). Invece, nel calcolo mediante prodotti (colonna di destra), osservia­ mo che il risultato si stabilizza sul valore 2. 7 1 7 595 (a par�

215

tire da n = 2048 = 2 1 1 , in precisione singola) o sul valore 2.7 1 8 28 1 832 663 6 (a partire da n = 1 34 2 1 7 728 = 2 27 , in precisione doppia). Perché? Anche �uesta è una conseguenza dei troncamenti. Quando n > 2 · 1 0 , il computer esegue il troncamento: 2 l ( 1 + - )2 = 1 + n n essendo l ln2 w- 7 • Per valori di n così grandi, si ha quindi: l l ( 1 + - t? = 1 + - , n 2n e un altro quadrato dà il risultato ( l + l l(2n))4 = 1 +2ln. In altre parole, il calcolo di ( l + l l (2n) )2k dà lo stesso risultato di ( l + l l n t-l Quindi, a meno di una traslazione di un passo, iterando i prodotti l'elaboratore trova la stessa sequenza di risultati quando calcola ( l + l l n ) n e ( l + l l (2n) )2n mediante prodotti diadici iterati, se n > 2 1 1 • Ci si potrebbe rendere me­ glio conto di questo fenomeno tabulando in dettaglio i risul­ tati dei prodotti (l + l l n t con n = 2m e k = l , 2, . . . , m (figg. A.3f e g). Anche in precisione doppia si incontra un analogo fenomeno di ripetitività, ma naturalmente per .

Approssimazione del numero e con (1 + 1 / n ) A n al crescere di n : confronto fra i risu ltati ottenuti tramite la routine di elevazione a potenza di Basic oppure moltiplicando 1 + 1 /n per se stesso n volte (a gruppi di 2) I n precisione singola : n

4

8 16 32

64

1 28 256 512 1 024 2048 4096

8 1 92 1 6384 32768 65536 1 3 1 072 262 1 44 524288 1 048576

exp [n log ( 1 2 . 44 1 406 2. 565785 2 .637929 2. 67699 2.697342 2.1on39 2 . 7 1 2987 2 . 7 1 562 2 . 7 1 6944 2.71 7595 2.71 7595 2.71 7595 2.71 7595 2.70851 1 2.701 1 87 2.70851 1 2.650473 2. 593679 2 . 593679

+

1 / n)]

(1

+

1 / n ) . . . (1

2 . 44 1 406 2. 565785 2.637929 2.67699 2 . 697342 2.1on39 2.71 2987 2 . 7 1 562 2 . 7 1 6944 2.71 7595 2.71 7595 2.71 7595 2.71 7595 2.71 7595 2.71 7595 2.71 7595 2.71 7595 2.71 7595 2.71 7595 (a)

+

1 / n ) n volte

In precisione doppia: n

exp[n log (1 + 1/n Il

(1 + 1/n) .. (1 + 1/n) n volte

8 16 32 64 128 256 512 1024 2048 4096 8192 16384 32768 65536 131072 262144 524288 1048576 2097152 4194304 8388608 16m216 33554432 67108864 13421n28 268435456 536870912 1073741824 2147483648 4294967296 8589934592 17179869184 34359738368 68719476736 137438953472 274877906944 549755813888 109951162m6 2199023255552 4398046511104 8796093022208 17592186044416 35184372088832 70368744177664 140737488355328 281474976710656 562949953421312 1125899906842624 2251799813685248 4503599627370496 9007199254740992 1.8014398509481980 3.6028797018963970 7.2057594037927940 1.4411518807585590 2.8823037615171170 5.7646075230342350 1.1529215046068470

2.565784513950348 2.6379284973666 2.676990129378183 2.697344952565099 2.7on3901968802 2.712991624253434 2.71�168992 2.716955729466437 2.717618482336879 2.717950081189674 2.71811593626578 2.7181�21819 2.718240351930294 2.718261089904604 2.718271459109306 2.718276643766046 2.718279236108013 2.718280532282396 2.718281180370437 2.718281504414671 2.71828166643684 2.718281747447938 2.718281787953491 2.718281808206268 2.718281818332656 2.718281823395851 2.718281825927448 2.718281827193247 2.718281827826146 2.718281828142596 2.71828182830082 2.718281828379933 2.718281828419489 2.718281828439267 2.718281828449156 2.718281828454101 2.718281828456573 2.718282828457809 2.718281828458427 2.718281828458736 2.718281828458891 2.718281828458968 2.718281828459007 2.718281828459026 2.718281828459036 2.71828182845904 2.718281828459043 2.718281828459044 2.718281828459045 2.718281828459045 2.718281828459045 2. 718281828459045 2.718281828459045 1 1 1 1 1

2. 565784513950348 2.6379284973666 2.676990129378183 2.697344952565099 2.70n3901968802 2.712991624253434 2.715632000168992 2.716955729466437 2.717618482336879 2.717950081189674 2.71811593626578 2.7181�21819 2.7182403519303 2.718261089904416 2.718271459109188 2.718276643765827 2.718279236107668 2.718280532284842 2.718281180368466 2.718281504412798 2.718281666432676 2.718281747443817 2.718281787948101 2.718281808200882 2.718281818326636 2.718281818326636 2.718281818326636 2.718281818326636 2.718281818326636 2.718281818326636 2.718281818326636 2.718281818326636 2.718281818326636 2.718281818326636 2.718281818326636 2.718281818326636 2.718281818326636 2.718281818326636 2.718281818326636 2.718281818326636 2.718281818326636 2.718281818326636 2.718281818326636 2.718281818326636 2.718281818326636 2.718281818326636 2.718281818326636 2.718281818326636 2.718281818326636 2.718281818326636 2.718281818326636 2.718281818326636 2.718281818326636 1 1 1 1 1

16 16 + 16 + 17 + 17 + 17 + 18 +

+

(b)

(segue)

21 7

Errori di arrotondamento

' * * * * * * * * * * * * * * * ** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * CA LCOLO DEL N U M ERO DI NEPERO COME lim ( 1 + 1 / n ) An ' ** calcolo con potenze diadiche ** ' ' * * * * * * * * * * * * ** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ' CLS: PRINT " I n precisione singola : PRINT " n " , " exp [n log ( 1 + 1 / n ) ] " , " ( 1 + 1 / n ) An " : P R I NT FOR M = 2 TO 20: N = 2 AM : BASE = 1 + 1 / N ESP2 = BAS E : FOR K = 1 TO M : ESP2 = ESP2 * ESP2: N EXT K ESP1 = BASEAN : P R I NT N , ES P 1 , ESP2 N EXT M: ' LOCATE 23,40: PRINT " Premere un tasto per continuare . . . " ATTESA$ = I N KEY$: I F ATTESA$ = " " THEN 1 1 70 C L S : PRINT " In precisione doppia : PRINT " n " , " exp [n log ( 1 + 1 / n ) ] " , " ( 1 + 1 / n ) An » : P R I N T FOR M = 3 T O 60: N # = 2 A M : BAS E # = 1 + 1 / N # ESP2 # = BASE # : FOR K = 1 TO M: ES P2 # = ESP2 # * ESP2 # : N EXT K ELSE I F M < = 55 EXP1 # = BAS E # A N # : IF M < = 39 THEN P R I NT N # , ESP1 # , ESP2 # THEN PRINT N # , ESP1 # , ES P2 # ELSE P R I NT N # , ES P 1 # , ESP2 # 1 230 N EXT M 1 240 E N D 1 000 1010 1 020 1 030 1 040 1 1 10 1 1 20 1 1 30 1 1 40 1 1 50 1 1 60 1 1 70 1 1 80 1 1 90 1 200 1210 1 220

(c)

Approssimazione d e l numero e c o n ( 1 + 1 / n ) An al crescere d i n : confronto fra i risultati ottenuti tramite la routine di elevazione a potenza di Basic oppure moltiplicando 1 + 1 l n per se stesso n volte (a gruppi di 3) In precisione singola : n

exp [n log ( 1 + 1 / n ) ]

( 1 + 1 / n ) . . . ( 1 + 1 / n ) n volte

27 81 243 729 2187 6561 1 9683

2.669592 2.701 684 2.71 2693 2.71 644 1 2.71 7981 2.718802 2.71 6403 2.712295 2.66637 2.627625 2.35443 2.204343 3.272794 1 1 1 1 1

2.669502 2.701 684 2.71271 1 2.71 6355 2.718127 2.718596 2.71 6702 2.71 6702 2.697381 2.755057 2. 585928 3. 1 26629 5. 529409 1 1 1 1 1

59049

1 77 1 47 531441 1 594323 4782969 1 .434891 E 4.304672E 1 .291 402E 3.874205E 1 . 1 62262E 3.486784E

+ + + + + +

07 07 08 08 09 09

(d)

(segue)

218

Appendice

I n precisione doppia : n

exp [ n log ( 1 + 1 / n ) ]

(1 + 1 / n ) . . . ( 1 + 1 / n ) n volte

27 81 243 729 2187 6561 1 9683

2.66959397781 2575 2.701 68999 1 383448 2.71 2709672494775 2.71 6419778906097 2.717660625218148 2.71807470286061 3 2.7182127801 63 1 97 2.7182588 1 1 644424 2.7182741 56 1 0731 9 2.71 827927�2 2.718280975997276 2. 718281 544322043 2.71 8281 733402866 2. 71828179619301 1 2.71828181�6 2. 718281830753986 2. 718281 807395739 2. 718281959357633 2.7182821 56 1 6 1 085 2. 71 8280755234734 2. 718280696129884 2.71827351 4442053 2.71825231 1 1 23561 2.7182521 70958738 2.71 8443952982691 2. 71 84439529828 1 2.71 8444 1 1 91 28832 2.71 8444 1 74510841 2. 70295358371 0292 2.65700933 1 1 14101 2. 523809679928859 2 . 5238097551 4425 4.009451 1 08332763 1 1

2.66959397781 2575 2. 701 68999 1 383448 2.71 270967249478 2. 7 1 64 1 9778906096 2 . 7 1 766062521 8 1 34 2.71 8074702860676 2.7182127801 62857 2. 7 1 82588 1 1 64385 2.7182741 56103 1 34 2.718279270981 1 02 2. 71 82809759796 2. 718281 544338035 2.718281 733426728 2.718281 859005272 2.718281 875243075 2.71828 1 884985875 2. 7 1 828 1 709609482 2. 7 1 8282060381 536 2. 7 1 8282323446 1 94 2.71 828074503201 7 2.71 828074503201 7 2. 71 82736421 92333 2. 71 8252333783839 2. 71 8252333783839 2.71 8444 1 1 571 1 085 2.71 8444 1 1 571 1 085 2.718444 1 1 57 1 1 085 2.71 8444 1 1 571 1 085 2. 702953525465323 2.657009370701 1 66 2. 52380971 7828654 2.52380971 7828654 4.00945 1 0 1 701 1 8 1 1

59049

1 77 1 47 53 1 441 1 594323 4782969 1 4348907 43046720 1 29 1 40 1 60 387420480 1 1 6226 1 504 3486784256 1 0460352512 3 1 38 1 059584 941 43 1 76704 282429521 920 847288598528 2541 8656645 1 2 7625596993536 22876790980600 686303771 36128 205891 1 35602688 617673406808064 1 853020 1 5331 5328 555906045994598

1 .6677 1 8 1 9 1 67�0 5.0031 5457501 26590 1 .5009462436547790 4.5028389027630290

+ 16 + 16 + 17 + 17

(e) Figura A.3

(a) Calcolo del numero e. Nella seconda colonna si usa la routine BASIC per l 'esponenziale; nella terza colonna si calcola ( l + 1 /n)n per

n = potenze di 2 con sole moltiplicazioni e addizioni. Precisione sin­ gola; (b) come (a), ma in precisione doppia; (c) un programma generato

valori di n molto maggiori: n > 251 (vedi figura A.3b). Poi, quando n supera 256 � 101 7 , il troncamento di l + l l n a l porta il risultato a l . Per ridurre questo fenomeno, proviamo a eseguire i prodotti a tre a tre anziché a due a due. Pro­ viamo cioè a prendere n = l 13m e a calcolare il prodotto di tre copie di l + l l n e poi il prodotto di tre copie del risultato e così via. Così facendo si ottengono, a meno di arrotonda­ menti o troncamenti, i numeri ( l + l l3m)3" , k = l , 2, . . . m . I risultati sono riportati nelle figure A. 3d ed e (colonna di destra). In precisione singola (fig. A.3d) si nota una ripe­ tizione solo nel passaggio da n = 3 9 a n = 3 1 0 • Questa minore ripetitività è dovuta al fatto che, in questo caso, gli arrotonda-

per generare i tabulati (a) e (b); (d) calcolo del numero e. Nella colonna di mezzo si usa la routine BASIC per il calcolo dell 'esponenziale. Nella colonna di destra si calcola ( l + I /n) n per n = potenze di 3 con sole addizioni e moltiplicazioni. Precisione singola; (e) come la prece­ dente, ma in precisione doppia.

menti sono migliori, come rivelerebbe la lista dei risultati delle moltiplicazioni. Però il rischio della ripetitività si corre anche nel calcolare prodotti a gruppi di tre, per la stessa causa di prima: ( l + c )3 = l + 3 c a meno di termini dell'ordine di c2 , che vengono troncati quando c è piccolo. E infatti, i calcoli in precisione doppia (fig. A.3e, colonna di destra) dan­ no luogo a risultati che si ripetono «a blocchi», per n > 3 22 (un fenomeno analogo, in precisione singola, si ha utilizzan­ do la routine exp di BASIC con n = 2m, m > I l : vedi figura A.3a). Poi, quando n supera 335 > 1 0 17, I l n diventa più picco­ lo di I o - 1 7 e la somma l + l l n viene troncata al valore l : quin­ di, per n > 335 , il calcolatore trova il risultato ( l + l l n ) n = l .

Errori di arrotondamento

219

lterazioni dell'elevazione al quadrato del numero 1 + 1 / n . 1 024 I n precisione singola :

1 .00 1 954 1 .003912 1 .007839 1 .01 574 1 .031 728 1 .064462 1 . 1 33079 1 .283867 1 .6483 1 5 2.71 6944

2 2.25 4 8

1 .5625 2.441 406 1 .265625 1 .60 1 807 2.565785 1 . 1 28906 1 .274429 1 .62417 2.637929

32

64

4096

1 .03 1 494 1 .06398 1 . 1 32054 1 .281 545 1 .642359 2.697342 1 28 1 .0 1 5686 1 .031 6 1 8 1 .064236 1 . 1 32598 1 .282779 1 .64552 1 2.707739

1 .000977 1 .00 1 955 1 .0039 1 3 1 .007841 1 .0 1 5744 1 .031 735 1 .064478 1 . 1 331 1 3 1 .283944 1 .64851 3 2.71 7595

1 .00003 1 1 .00006 1 1 .000 1 22 1 .000244 1 .000488 1 .000977 1 .00 1 955 1 .003913 1 .007841 1 .0 1 5744 1 .031735 1 .064478 1 . 1 331 1 3 1 .283944 1 .64851 3 2.717595

1 .000244 1 .000488 1 .000977 1 .00 1 955 1 .0039 1 3 1 .007841 1 .0 1 5744 1 .031735 1 .064478 1 . 1 33 1 1 3 1 .283944 1 .64851 3 2.717595

1 .007828 1 .0 1 57 1 7 1 .031 68 1 1 .064365 1 . 1 32872 1 .2834 1 .6471 1 5 2.712987 512

262144 1 .000008 1 .0000 1 5 1 .00003 1 1 .00006 1 1 .000 1 22 1 .000244 1 .000488 1 .000977 1 .00 1 955 1 .0039 1 3 1 .007841 1 .0 1 5744 1 .031 735 1 .064478 1 . 1 331 1 3 1 .283944 1 .64851 3 2.717595 524288 1 .000004 1 .000008 1 .0000 1 5 1 .00003 1 1 .00006 1 1 .000 1 22 1 .000244 1 .000488 1 .000977 1 .00 1 955 1 .0039 1 3 1 .007841 1 .0 1 5744 1 .03 1 735 1 .064478 1 . 1 331 1 3 1 .283944 1 .64851 3 2.71 7595

65536 1 .000488 1 .000977 1 .00 1 955 1 .003913 1 .007841 1 .0 1 5744 1 .03 1 735 1 .064478 1 . 1 331 1 3 1 .283944 1 .64851 3 2.71 7595

8 1 92

256

1 .00391 1 .007835 1 .01 5732 1 .03 1 7 1 2 1 .064429 1 . 13301 1 .28371 1 1 .64791 4 2.7 1 562

1 .00006 1 1 .000 1 22 1 .000244 1 .000488 1 .000977 1 .001955 1 .00391 3 1 .007841 1 .0 1 5744 1 .031 735 1 .064478 1 . 1 331 1 3 1 .283944 1 .64851 3 2.717595

2048

16

1 .063477 1 . 1 30982 1 .279121 1 .636151 2.67699

32768

1 .0 1 5744 1 .031 735 1 .064478 1 . 1 331 1 3 1 .283944 1 .648513 2.717595

1 3 1 072 1 .0000 1 5 1 .00003 1 1 .00006 1 1 .000 1 22 1 .000244 1 .000488 1 .000977 1 .001955 1 .003913 1 .007841 1 .01 5744 1 .031 735 1 .064478 1 . 1 331 1 3 1 .283944 1 .64851 3 2.717595

1 6384 1 .000 1 22 1 .000244 1 .000488 1 .000977 1 .001 955 1 .0039 1 3 1 .007841 (f)

1 048576

1 .00002 0 1 .000004 1 .000008 1 .0000 1 5 1 .00003 1 1 .00006 1 1 .000 1 22 1 .000244 1 .000488 1 .000977 1 .001 955 1 .0039 1 3 1 .007841 1 .0 1 5744 1 .031735 1 .064478 1 . 1 331 1 3 1 .283944 1 .64851 3 2.71 7595

(segue)

220

Appendice

I n precisione doppia : 2 2.25 4 1 .5625 2.44140625 8 1 .265625 1 .601 800640625 2.56578451 3950348

2048

16

32

1 . 1 2890625 1 .274429321 289063 1 .6241 7009496 1 301 2.6379284973666 1 .0634765625 1 . 1 :Jl9823989868 1 6 1 .2791 21 1 868 1 7974 1 .6361 5101�3 2.676990 1 29378183

4096

64 1 .0314941 40625 1 .063980162143707 1 . 1 3205378543535 1 .281 545773 1 1 8505 1 .642359568597906 2.697344952565099 1 28

256

1 .0156860351 5625 1 .031 61 8 1 2201 1 423 1 .064235949662375 1 . 1 325981 56553n8 1 .282n8584229017 1 .6455208961 566 2.7on3901 968802

1 .001 95407867431 6 1 .00391 1 975n2098 1 .007839255098638

32768 1 .00006 1 036087573 1 .000 1 22075900549 1 .000244 1 66703624 1 .00048462 839302 7 1 .0009n024577 1 .001 95507 03 31 024 1 .003913829501636 1 .0078429n06464 1 .0157474664 1 8516 1 .03174291 5535635 1 .064493443757972 1 . 1 33146291803706 1 .28402051862849 1 .648708692258975 2.718240351 9303

1 3 1 072

1 .0000305 1 7810956 1 .00006 1 036553248 1 .000 1 22076831 957 1 .000244 1 68566667 1 .00048839675 1 623 1 .0009n032034632 1 .00195601 8600!6 1 1 .003913859419687 1 .007843037134931 1 .01 5747587501361 1 .031 7431 61 5 1 4835 1 .06449395 1 332627 1 . 1 33147372423748 1 .284022967630845 1 .648714981403522 2.718261 0899044 1 6 1 .0000 1 525884727 1 .0000305 1 7927373 1 .00006 1 036786089 1 .000 1 220n297668 1 .000244169498203 1 .0004883986 1 5 1 49 1 .0009n035763505 1 .001956026125894 1 .0039 1 3874378941 1 .0078430671 70536 1 .0 1 574764804371 3 1 .031 743284506336 1 .0644942051 23921 1 . 1 3314791 2742409 1 .2840241 921 52478 1 .648718126032824 2.718271 4591 09188

1 6384 1 .ooo 1 2201403n9 1 .0002441 629n651 1 .00048086 838557 2 1 .0009n009662 1 9 1 .001 954973872261 1 .0039 1 3769667362 1 .00784285692n34 1 .01 5747224260257 1 .031 74242359241 6 1 .064492428640353 1 . 1 33 1 44 1 30632637 1 .28401 56207871 94

524288 1 .0000038 1 4700904 1 .000070 62941 6359 1 .0000 1 5258890926 1 .0000305 1 80 1 4686 1 .00006 1 036960722 1 .000 1 22on646954 1 .0002441 70196861 1 . 0004884000 1 2806 1 .0009n0385601 85 1 .001 9550317247 1 8 1 .00391 388559848 1 1 .00784308969744 1 .0 1 5747693450883 1 .031 743376750788 1 .064494395469 1 1 9 1 . 1 331 483 1 7985166 1 .2840251 1 05526 1 1 1 .648720484529645 2.7182792361 07668

65536

1 .000488340854645 1 .0009769201 8608 1 .001 95479474521 1 .0039 1 34 1 0712915 1 .007842 1 36209239 1 .0 1 574577 1 518801 1 .031 739472358325 1 .064486338822235 1 . 1 33131 1 655391 67 1 .2839862383 1 6 1 5 1 .648620660 1 85257 2.71795008 1 1 89674 1 .0002441 55526161 1 .000487 83 0664243 1 .000976979834392 1 .00 1 95491 4 1 58382 1 .00391 3650006 1 3 1 .00784261 666863 1 .0 1 5746739973471 1 .031 741439766734 1 .06449039853 1 934 1 . 1 331 39808566675 1 .28400582575852 1 .64867096058182 2. 7181 1 593626578

512

1 024

1 .0009768009 1 8579 1 .oo1 9545559n 1 93 1 .003912932243453 1 .007841 1 75525649 1 .015743835084922 1 .031 73553851 3024 1 .06447822 1 43076 1 . 1331 1 3883900395 1 .283947073887838 1 .648520088545 1 41 2.71761 8482336879

1 .0002441 69963974 1 .0004883995469 1 9 1 .0009n037627956 1 .001 955029858439 1 .00391 388 1 858625 1 .0078430821 88453 1 .0 1 5747678315121 1 .031 74334605 02 59 1 .06449430205 32 56 1 . 1 33 1 48 1 8290389 1 .2840248044 1 8388 1 .64871 969836 1 679 2.718276643765827

1 .6486961 1 4425524 2.7181 98872 77 1 8 1 9

8192

1 .00782n58789063 1 .0157 1 6791 385785 1 .031 680600303034 1 .064364861041628 1 . 1 328725574201 64 1 .283400231 355704 1 .6471 16 1 53843873 2.712991 624253434 1 .003910064697266 1 .00783541 8000468 1 .0 1 5732229n61 78 1 .031 71 1 962606087 1 .064429573784503 1 . 1 3301031 754706 1 .283712379668089 1 .64791 74737 1 3 1 08 2. 715632000 1 68992

1 .01 5739964 1 1 7777 1 .031 727674705984 1 .06446 1 994754216 1 . 1 330793382761 25 1 .283868786828262 1 .648319061791 872 2. 71 6955729466437

2621 44 1 .00007 0 629409083 1 .0000 1 5258876374 1 .0000305 1 7985582 1 .00006 1 03690251 1 1 .000 1 22on530525 (g)

1 048576 1 .00000 1 907349542 1 .0000038 1 4702723 1 .00007 0 62941 9997 1 .0000 1 5258898202 1 .0000305 1 8029239 1 .00006 1 036989828 1 .000 122omos159 1 .0002441 703 1 3304 1 .000482 8400 45751 1 .0009n039026301 1 .001 955032657862 1 .0039138874684 17 1 .007843093451 949 1 .0 1 574n0101 8795 1 .031 743392 1 24967 1 .0644942 4 71 93533 1 . 1 331 48385526088 1 .284025263620379 1 .6487208776 1 5384 2 . 71 8280532284842

Errori di arrotondamento

Con quale precisione questi metodi di calcolo approssi­ mano il numero e? L'errore En è dato da En = dn + rn + en , dove: dn è l 'errore di discretizzazione, dovuto al fatto che e viene approssimato con ( l + l ln) n ; rn è l'errore commesso qualora ( l + l l n ) n = en log( 1 + 1 / n ) venga approssimato mediante lo sviluppo di Taylor del logaritmo; en , infine, è l 'errore d?vuto agli arrotondamenti. Naturalmente, se ( l + l l n )n viene calcolato direttamente eseguendo i prodotti, non ab­ biamo la componente rn , ma un errore di arrotondamento dello stesso ordine di grandezza di rn va aggiunto a en . Osserviamo che dn e rn decrescono con n, mentre en cresce. La precisione massima si ha allorché en ;:::;; dn (;:::; rn ) . Vediamo facilmente, dallo sviluppo di Taylor di log( l + l i n), che dn = e - ( 1 + l l n ) n ;:::;; l i n e analogamente rn ;:::;; l i n. Perciò la precisione massima si ha allorché en ;:::;; l l n. Abbiamo an­ che visto che en ;:::;; n e(e = precisione di macchina). Quindi la scelta migliore è n ;:::;; e- 1 12 . Entrambi i metodi hanno cioè la stessa precisione massima. In precisione singola, essa vie­ ne rag�iunta per n e ;:::;; l 03 e l 'errore è dell'ordine di ne ;:::;; ;:::;; w - (solo due o tre cifre decimali esatte ! ) . In precisione doppia, la precisione massima, raggiunta per n ;:::;; l 08 o 1 09, dà un errore dell 'ordine di w- 8 o w - 9 • Questo è esattamente ciò che si verifica nel caso n = 3 m (fig. A.3e). La precisione massima si ottiene per n = 3 1 7 e n = 3 1 8 , che sono numeri compresi fra 1 08 e l 09 e il risul­ tato ha otto o nove cifre significative esatte. Invece, nel caso n = 2m (fig. A.3b) la situazione è diversa. Il calcolo tramite moltiplicazioni diadiche iterate (colonna a destra) fornisce la precisione prevista (fra otto e nove cifre significative), raggiunta per n = 2 27 , ma a quel punto interviene il fenome­ no di stabilizzazione per ripetitività e non si può veri­ ficare l 'andamento successivo della precisione. Invece, il calcolo tramite la routine exp di BASIC raggiunge preci­ sioni molto superiori al previsto ( 1 6 cifre significative per n = 25 1 ). Ciò è presumibilmente dovuto a una minore inci­ denza degli errori di arrotondamento e di troncamento com­ messi nella esecuzione della routine exp quando la variabile è una potenza diadica.

Esercizio

Nel capitolo 6, abbiamo elaborato un metodo di calcolo per il numero e. Si sceglie un intero m , si calcola y = e 1 /m mediante lo svi­ luppo di Taylor dell 'esponenziale e infine si ottiene e = ym eseguendo

le potenze (diadiche, se m = 21 ). Non abbiamo discusso in dettaglio gli errori di arrotondamento. Alla luce delle osservazioni sull ' amplifica­

zione di questi errori, qual è la scelta di m che fornisce effettivamente la precisione maggiore?

221

A.4 Errori di arrotondamento e dilatazioni di scala: ancora lo zoom

Nel capitolo 4 abbiamo considerato lo zoom intorno a un punto del grafico di una funzione derivabile. Come si è visto, iterando le dilatazioni il grafico tende ad adagiarsi sopra la retta tangente. L' argomento, però, non teneva conto degli errori di arrotondamento. Consideriamo il programma SIMPZOOM, presentato nel paragrafo 4.4. Si calcolano dapprima le ascisse di una � artizione equidistribuita nell ' intervallo [0, l ] : x; = l i n, 1 = O, . . . , n. Poi questi punti vengono riportati in scala nell' intervallo [a - ll2, a+ll2] . Naturalmente, in queste due fasi hanno luogo errori di arrotondamento, piccoli ma gene­ ralmente non inferiori alla precisione di macchina, diciamo l o- 7 in precisione singola. Dopo 17 iterazioni del processo, si avrà l 12 ;:::;; 2 - ! 7 ;:::;; 10-6• A questo punto, l 'errore relativo nella uniformità della ripartizione delle ascisse sarà quindi dell' ordine del l O% o più. Infine, si passa alla terza fase, lo zoom vero e proprio, che con siste n� l rap� ortare l ' interv �llo [a - ll2, a + ll2] . alle ascisse fisiche di schermo e qumdi tracciare il grafico dilatato. La dilatazione è del! ' ordine di l l l . Essa dilata an­ che gli errori di arrotondamento e mantiene più o meno costanti gli errori relativi. Perciò, dopo circa 1 7 iterazioni, nel grafico sullo schermo si cominceranno a notare irrego­ larità nella distribuzione dei punti. Ovviamente gli errori di arrotondamento si avranno non solo nel calcolo delle ascisse ma anche nel calcolo dei valori campionati. Quindi le ftut� tuazioni si potranno notare sia nelle ascisse sia nelle ordinate dei punti del grafico. Naturalmente, se tutti i numeri con­ siderati sono vicini a zero, l ' aritmetica in virgola mobile per­ mette una migliore precisione (cfr. § A. l ). Perciò, per os­ servare questo fenomeno, è opportuno scegliere il centro A dell' intervallo in ascisse diverso da zero. In figura A.4a è rappresentato il grafico della funzione xl( l + x2 ) ottenuto dopo 6 dilatazioni a partire dall' intervallo [ l , 3 ] . Nelle figure A.4b e d si vede lo zoom del grafico al variare del numero di dilatazioni da 1 7 a 2 1 . A partire dalla sedicesima dilatazione, la distribuzione dei punti diventa via via più irregolare. Dalla diciottesima di­ latazione in poi, i punti sembrano diradarsi sempre di più. Perché? Anche questo è un effetto degli arrotondamenti e dei troncamenti. I punti di scansione x; , i = l , . . . , n, sono dapprima calcolati in maniera equidistribuita in [0, l ] e poi 1 compresi nell ' intervallo [2 - 2n , 2+ in ] (alla dilatazio ne nu­ mero n). Dopo questa compressione, se n > 1 6, o due punti consecutivi x; , X i+ I coincidono per effetto dei troncamenti, oppure la loro distanza è data dalla precisione di macchi-

222

Appendice

· · · . . .

Figura A.4

(a)

(b)

(cl

Idi

(a) Grafico di x j ( l + x 2 ) intorno al punto x = 3 , dopo 6 dilatazioni (ampiezza iniziale della finestra = 2; passo delle dilatazioni = 2); (b) dopo 17 dilatazioni; (c) dopo 19 dilatazioni; (dj dopo 21 dilatazioni.

Errori di arrotondamento

na t:. Quando n cresce, via via un numero maggiore di punti consecutivi finisce col coincidere per effetto dei troncamenti e lo zoom rivela un numero sempre minore di punti distinti sullo schermo. La distanza fra due punti distinti consecutivi cresce come 2n t:. Cautela Se chiamiamo a l ' ascissa centrale, queste con­ siderazioni non valgono quando a = O. Infatti, scriviamo Xi = = a + t:i : allora Xi - l - Xi = (a + t:i+ l ) - (a + t:i). Se il numero di 1 0 - 6, perdilatazioni è maggiore di 16, t:i+ l - E::i :::; 2- 17