NUMERICI CALCOLI (XXV, p. 29)
Generalità. - Il concetto di calcolo numerico si può introdurre da un punto di vista generale, come segue. Un insieme finito di oggetti, un insieme finito di celle, capaci ciascuna di contenere un oggetto, e un insieme finito di istruzioni, seguendo le quali si perviene in un numero finito di passi da una disposizione iniziale degli oggetti nelle celle ad una finale, definiscono un calcolo. La successione delle istruzioni da seguire si dirà un programma. Si ha un calcolo numerico allorché gli oggetti sui quali si opera sono interpretati come cifre, relative ad una certa base di numerazione. L'analisi numerica può dirsi quella parte della matematica che si occupa dell'impiego dei calcoli numerici nella risoluzione di problemi (intendendo come problema la ricerca, in un insieme S, di un sottoinsieme di elementi che godono di una certa proprietà, p). Non è usualmente compito dell'analisi numerica appurare se un tale insieme è vuoto, o se è costituito da un solo elemento, di pervenire, cioè, alla dimostrazione di teoremi di esistenza e di unicità.
Discretizzazione. - Consiste nel rappresentare l'insieme di partenza, S, su un altro, S′, i cui elementi sono raggruppamenti finiti di cifre, e nel sostituire la proprietà p richiesta per le soluzioni in S, con un'altra proprietà, p′, il cui verificarsi o meno è riconoscibile, in S′, mediante un programma. Detto {x′} l'insieme di tutti gli x′ soluzione del problema (S′,p′), si prenderà in considerazione, se {x′} non è vuoto, l'insieme P {x′} di tutti quegli x di S, ai quali corrispondono tali x′. È di grande importanza trovare una maggiorazione del diametro di Γ {x′} (relativo a una certa metrica o pseudo-metrica da introdursi in S): Di questa ricerca fa parte lo studio degli errori di troncamento (sostituzione di algoritmi finiti ad algoritmi infiniti) e di arrotondamento (sostituzione di numeri con un numero finito di cifre ai numeri reali).
Approssimazione. - Un passo intermedio nella discretizzazione è spesso costituito dalla rappresentazione di S su un opportuno sottoinsieme di S stesso. Ad esempio, quella dello spazio delle funzioni reali, continue in un intervallo (a, b) dell'asse reale, sul sottoinsieme di tale spazio formato dalle funzioni razionali intere in una variabile reale (polinomî).
Prenderemo ora in esame alcuni tipici problemi di calcolo numerico, indicando, per ciascuno di essi, uno o più metodi di risoluzione.
Principali problemi di calcolo numerico.
1) Interpolazione secondo Newton e secondo Hermite. - Il problema è la determinazione di quel polinomio g(x), di grado ≤ n, che in n + 1 punti x0, x1 ,....., xn a due a due distinti dell'intervallo (a, b) dell'asse reale acquista certi n + 1 valori assegnati y0, y1---, yn.
Indicando con fi0, i1...., ir, quel polinomio di grado ≤ r che in xik vale yik, si ha:
in cui va inteso f0 = y0, f1 = y1, ... Troviamo dapprima
poi
e così via (procedimento di neville). Il polinomio g(x) = f0, 1, ..., n, è quello cercato. La formula [1] si presta bene anche alla ricerca di quel polinomio f(x), di grado ≤ n, che soddisfa le condizioni
in certi s + 1 punti a due a due distinti dell'asse reale. Sarà indicato con
quel polinomio che ha grado ≤ ν0 + ν1 + ... + νr − 1 e soddisfa le:
Si applicherà la l1] se il polinomio a primo membro non ha tutti gli indici uguali. Nell'altro caso, tale polinomio si ottiene immediatamente mediante la formula di Taylor.
2) Sistemi di equazioni lineari algebriche. - Indichiamo con A una matrice m × n (cioè ad m righe ed n colonne) ad elementi reali; con b una matrice m × 1 (vettore-colonna ad m componenti). L'equazione Ax = b, nel vettore-colonna incognito di componenti xI, ..., xn, costituisce un sistema di equazioni lineari algebriche, che può anche scriversi nella forma
Poiché, com'è noto, la risoluzione di un sistema compatibile a matrice m × n può essere sempre ricondotta a quella di un sistema a matrice quadrata, supponiamo senz'altro m = n. Si fa distinzione fra due tipi di metodi di risoluzione: a) metodi diretti, b) metodi iterativi. Fra i metodi del tipo a) citiamo i seguenti:
Metodo di eliminazione (o di Gauss). - Sia a11 ≠ o. Sottraendo alla ha equazione la 1a moltiplicata per ah1/a11 (h = 2,..., n) si passa ad un sistema equivalente al dato (cioè avente la stessa soluzione), con matrice della forma
in cui A22 è una matrice (n − 1) × (n − 1) e O indica una colonna di n − 1 zeri. Siano b′1, b′2, ..., b′n i nuovi termini noti. Si opera nello stesso modo sul sistema A22 x(1) = b, in cui x(1) indica il vettore di componenti x2, ..., xn, e b(1) quello di componenti b′2, ..., b′n. Ripetendo tale procedimento, si perviene ad un sistema formato da una singola equazione in una incognita. Ottenuta questa ultima, si sostituisce in una delle due equazioni del sistema immediatamente precedente, e così via.
Metodo dei gradienti coniugati. - Si parte da un arbitrario vettore x(0), e si calcola in successione, r(0) = b − Ax(0), p(0) = ATr(0),
in cui AT denota la matrice trasposta di A. Il vettore x(n) fornisce la soluzione cercata.
Metodo di ortogonalizzazione. - Nell'ipotesi che A sia una matrice m × n, con m ≥ n ed a colonne linearmente indipendenti, questo metodo fornisce il vettore x per cui è minimo (Ax − b)T (Ax − b), e quindi, in particolare, la soluzione di Ax = b se m = n. si trovano le due matrici C e P con P triangolare superiore (in cui cioè sono tutti nulli gli elementi al disotto della diagonale principale), avente tutti 1 sulla diagonale principale, tali che AP = C, CT C = D, con D diagonale. Risulta allora x =PD-1 CTb, in cui D-1 denota la matrice diagonale avente per elementi i reciproci di quelli di D.
Fra i metodi del tipo b) citiamo i seguenti:
Metodo diagonale. - Si decomponga A nella somma L + D + U, in cui L è triangolare inferiore con tutti 0 sulla diagonale principale; D è diagonale (la diagonale principale di A) e U è triangolare superiore. Partendo da x(0), vettore arbitrario, si calcolano in successione i vettori x(i) (in base alla formula: Dx(i+I) = b − (L + U)x(i). Risulta
soluzione di Ax = b, se e solo se [D-1 (L + U)]i → O per i → + ∞.
Metodo di Seidel. - Usando i simboli del metodo precedente, la successione x(i) (i = o, 1, ...) è definita da: (L + D)x(i + 1) = b − Ux(i). La condizione [(L + D)-1 U]i →- O per i→ + ∞ è necessaria e sufficiente per la convergenza di x(i) ad x. Vanno anche tenute presenti, come sufficienti, l'una o l'altra delle due condizioni: 1) A matrice simmetrica, definita positiva; 2)
Metodo dei gradienti. - Si assuma a piacere una matrice B simmetrica, definita positiva. Partendo da x(0) arbitrario si calcolano in successione i vettori x(i) secondo lo schema:
3) Polinomio caratteristico e radici caratteristiche di una matrice. - Sia : A una matrice n × n, E la matrice unitaria dello stesso ordine. Il determinante di λE-A, sviluppato secondo le potenze di λ, è il polinomio caratteristico di A e le sue radici si dicono radici caratteristiche di A. Ricordiamo ancora che il simbolo trA (leggi "traccia" di A) denota la somma degli elementi sulla diagonale principale di A.
Tra i metodi per calcolare il polinomio caratteristico, o, direttamente, le radici caratteristiche di A, ricordiamo:
Metodo di Soitriaa-Faddeiev. - Posto A1 = A, si calcola p1 = tr A1; B1 = A1 − p1E; A2 = AB;
B2 = A2 − p2E, e così via sino ad An = ABn-1,
Bn = An − pnE. Il polinomio
è il polinomio caratteristico di A. Si dimostra che Bn = O, ciò che costituisce un efficace controllo dei calcoli.
Metodo di Danilewski. - Se A ha la forma
con E21 matrice unitaria, d'ordine n − 1, ed O matrice (n − 1) × 1 con tutti gli elementi nulli, il suo polinomio caratteristico si scrive subito, avendo come coefficienti p1, ..., pn, ordinatamente, gli elementi situati sulla prima riga di A. Se A ha la forma
con O matrice q × (n − q) ad elementi tutti nulli, il suo polinomio caratteristico si spezza nel prodotto dei due polinomî caratteristici di A11 e di A22. È noto che, se B è una matrice n × n a determinante ??? 0 e B-1 è la sua inversa, la matrice B-1AB ha come polinomio caratteristico quello stesso di A. Il metodo di Danilewski consiste nel sostituire successivamente ad una matrice A assegnata, delle matrici A1 = B¹1 AB1, A2 = B-¹2 A1 B2, ecc., così da pervenire, in un numero finito di passi, alla forma [1] o [2].
Metodo di Givens. - Indichiamo con Uij(θ) la matrice n × n che si ottiene dalla matrice unità ponendo cos θ nel posto (i, i), sin θ nel posto (i, i), sin θ nel posto (i, j) cos θ in quello (j, j). Data una matrice A n × n simmetrica, la matrice A(1) = UTij(θ) A Uij(θ), indicando con UTij(θ) la trasposta di Uij(θ), ha, per un opportuno θ, nulli i due elementi nei posti (i,j) e (j, i). Mediante successive trasformazioni del tipo ora indicato, in numero finito, si riduce la matrice A ad una T di forma tridiagonale, cioè con elementi tutti nulli nei posti (i, j) per cui ∣ i − j ∣ > 1. Il polinomio caratteristico di T si trova facilmente, osservando che, detta Ti la matrice formata con le prime i righe e colonne di T, ed fi(λ) il suo polinomio caratteristico, risulta f1(λ) = λ − t11, f2(λ) = (λ − t22) f1(λ) − t12t21,
Il polinomio fn(λ) è il polinomio caratteristico di A.
Metodo di Jacobi. - Nell'ipotesi che A sia simmetrica, si passa da A ad A(1) come nel metodo precedente, con l'avvertenza di scegliere per i e j gli indici corrispondenti a un elemento avente massimo modulo. Operando nello stesso modo a partire da A(I), e così via, si costruisce una successione di matrici, convergente ad una matrice diagonale, la quale ha come elementi le radici caratteristiche di A.
4) Equazioni non Lineari. - Per il metodo di Newton e il metodo di Gräffe nella risoluzione delle equazioni non lineari rinviamo alla voce Approssimazione nel vol. III, rispettivamente alle pp. 770, 771.
Metodo di Lin-Bairstow. - Sia
un polinomio a coefficienti reali. Presi due numeri reali r(0), s(0) a piacere, si costruiscono le due successioni definite da
e si risolve il sistema nelle due incognite Δr(0), Δs(0)
Si itera il procedimento a partire da r(1) = r(09 + Δr(0), s(1) = s(0) + Δs(0) in luogo di r(0), s(0) e così via. Le r(i), s(i) convergono a due numeri r, s, tali che z2 + rz + s risulta un divisore di f(z).
Metodo di Bernoulli. - Sia
un polinomio a coefficienti reali, e sia ao = 1. Distinguiamo due casi: nel caso 1), dette αi (i = 1,..., r) le radici di f(z) = o, a due a due distinte, con ∣ α1 ∣ ≥ ∣ α2 ∣ ... ≥ ∣ αr ∣ risulti ∣ α1 ∣ > ∣ αi ∣ (i = 2, ..., r); nel caso 2) invece risulti ∣ α1 ∣ ≥ ∣ α2 ∣ > ∣ αi ∣ (i = 3, ..., r).
Si ponga
Nel caso 1) è bh1 definitivamente ??? 0, e ciascuna successione
converge, per h → + ∞. Detto bk il suo limite, il polinomio
è un divisore di f(z). Nel caso 2) si costruiscano come prima le bhk e si ponga chk = bh1 bh+1,k − bhk bh+1,1, (k n= 2, ..., n). È ch2 definitivamente ??? 0, e ciascuna successione chk/ch2 (k = 2,..., n) converge, per h → + ∞. Detto ck il suo limite, il polinomio
è un divisore di f(z).
Metodo dicotomico nel campo complesso. - Sia
a coefficienti reali, e an =1; si ponga 2μh = n − h 0 n − h − i a seconda che n − h sia pari o no (h = 0,1, .., n), e si definiscano i numeri ai0, ai1 (i = 0,1 ..., μ0 e 0,1, ...μ1 rispettivamente) come segue:
Successivamente, si calcolino i numeri αij definiti da αji = 0 per i > μj, αij = − αo,j-2 αi+1, j-1 − α0, j-1 αi+1, j-2 per i = 9,1, ..., μj, j = 0,1, ..., n. La condizione αij > 0 (in = 0, ..., μj, j = 0, ..., n) è necessaria e sufficiente perché f(z) sia un polinomio di Hurwitz (abbia cioè, tutie le sue radici a sinistra dell'asse immaginario). Si supponga che, dall'esame delle αij, si sia riconosciuto che f(z) è di Hurwitz. Si cerca allora un h 〈 0, tale che, trovati i coefficienti di f (z + h) e costruite le corrispondenti αij, almeno una di esse sia ≤ 0. Nella striscia compresa fra le rette x = − h ed x = 0 cadono le radici di f(z) = 0 aventi parte reale massima. Operando nello stesso modo su f(z + h/2) si riduce a metà la larghezza della striscia, e così via, sino a trovarne una, sulla cui mediana, x = c si riterrà che cadano tutte le radici di f(z) = 0 aventi parte reale massima. Nel caso che f(z) non sia di Hurtwitz, si prenderà in esame f(z + h) con h > 0 e si procederà come prima. Supposto f(c) ??? 0, i coefficienti dell'immaginario delle radici complesse di f(z) situate sulla retta x = c si trovano esaminando le varie colonne di numeri aij (j = 0,1, ...) costruiti per f(z + c). Si constata che per un certo p ≥ 2 è αoo > 0, α01 > 0, ..., α0, n-p > 0, mentre α0, n-p+1 = 0ao. Posto ν = n − p, l'equazione in y:
ha come sue radici, tutte reali, i detti coefficienti.
5) Sistemi di equazioni non lineari. - Metodo dei gradienti. - Sia A un dominio rettangolare dello spazio reale euclideo Rn; fi (x1, ..., xn) (i = 1, .., n) n funzioni reali continue in A ed F(x1, ..., xn) una funzione reale, definita in A, due volte parzialmente derivabile rispetto alle xi in A con derivate ivi continue. Inoltre il sistema fi (x1, ......, xn) = 0 (i = 1, ..., n) abbia una soluzione, x1*, ..., xn*; in tal punto F(x1, ..., xn) abbia un minimo proprio. Se il punto x01, ..., x0n è interno a un dominio contenente P* racchiuso da una superficie di livello F(x1, ..., xn) = c, e nel quale l'unico a F punto ove le derivate parziali
sono simultaneamente nulle è P*, il problema di Cauchy:
ha come soluzione un vettore x1(t), ..., xn(t), le cui componenti convergono a x1*, ..., xn* per t→ + ∞.
Metodo delle funzioni implicite. - Si sostituisce al sistema 1) fi(x1, ..., xn) = o (i = 1, ..., n) l'altro: 2) gi(x1, ..., xn, λ) = 0 (i = 1, ..., n), con le gi continue e parzialmente derivabili in A × I (I intervallo (0,1)), scelte in modo da ridursi alle fi per λ =1, e tali che il sistema
sappia risolversi senza difficoltà. Sia (x01, ..., x0n, 0) soluzione di quest'ultimo. Se il sistema 2) e le condizioni gi(x01, ..., x0n, 0) = 0 (i = 1, ..., n) definiscono implicitamente n funzioni x1(λ), ..., xn(λ) in tutto (0,1), la n − upla xi(1) (i = 1, ..., n) fornisce una soluzione di 1).
6) Risoluzione numerica del problema di Cauchy per sistemi di equazioni differenziali ordinarie, del 1° ordine. - Sia A un intervallo aperto dell'asse reale, B un insieme aperto dello spazio reale euclideo Rm, f(x, y) una funzione vettoriale ad m componenti (reali) continua in A × B, e (x0, y0) un punto fissato di A × B. (A × B denota l'insieme delle coppie ordinate x, y con x in A ed y in B). Il problema è quello di trovare un intervallo aperto I ⊂ A, e contenente x0, ed una funzione y(x) ad m componenti (reali) verificante in I il sistema di m equazioni differenziali ordinarie in m incognite
e la condizione y(x0) = y0. Supposti esistenti I ed y(x), e y(x) unica, siano x0, x1, ..., xN punti di I, con xn 〈 xn+1 (n = 0,1..., N − 1). Si vuole costruire una tabella di vettori y0, y1, .., yN ad m componenti approssimanti i vettori y(x0), y(x0), ..., y(xN), in cui y(x) è la soluzione "esatta". Di solito xn+1 − xn (n = 0,1, ..., N − 1) è una costante, h.
Metodi a passo singolo. - Si calcola yn+1, una volta noto yn, mediante una formula del tipo yn+1 = yn + hϕ(xn, yn, h), con ϕ(x, y, h) opportuna funzione vettoriale verificante la condizione
in A × B. Si dirà che il metodo è d'ordine p, se, posto
risulta r(x, h) = O (hp+1) per h → 0. Nelle tabelle alla pag. precedente sono riportati alcuni casi particolari più in uso.; per ciascuno di essi è indicato il modo di calcolare la funzione ϕ(x, y, h) a partire dalla funzione nota f (x, y) e l'ordine del metodo.
Metodi a passi multipli. - Intervengono nel calcolo di yn+1, i k precedenti valori yn, yn-1, ..., yn-k+1(k > 1). Posto fn = f(xn, yn) si ía uso di una formula del tipo:
La [2] fornisce esplicitamente yn+1 se b0 = 0, implicitamente se b0 ??? 0. Spesso una formula con b0??? 0 è più accurata di una con b0 = 0; si fa allora uso della seconda per "predire" yn+1, calcolare fn+1 e della prima per "correggere" yn+1, sostituendovi a secondo membro il valore fn+1 precedentemente trovato. Esempio (metodo di Milne)
Bibl.: a) Opere a carattere generale: D. R. Hartree, Numerical analysis, Oxford 1952; F. B. Hildebrand, Introduction to numerical analysis, New York 1956; A. S. Householder, Principles of numerical analysis, ivi 1953; L. V. Kantorovic e V. I. Krylov, Näherungsmethode der höheren Analysis, Berlino 1957; E. Grabbe, S. Ramo, D. Wooldridge, Handbook of automation, computation and control, vol. I e II, 1959; A. Korganoff, Méthodes de calcul numérique, vol. I, Parigi 1961.
b) Memorie (Il numero progressivo si riferisce al paragrafo in questo articolo). 1. E. H. Neville, Iterative interpolation, in Journ. Indiana Math. Soc., XX (1933), pp. 87-120; 2. M. R. Hestenes e E. Stiefel, Methods of conjugate gradients for solving linear systems, in Journ Res. Nat. Bur. Standards, IL (1952), pp. 409-436; 3. A. M. Danilewski, Sulla risoluzione numerica delle equazioni secolari, in Mat. Sbornik 2, XLIV (1937), pp. 169-172.