Il primo esercizio chiede, dati 2 valori, di creare 3 variabili denominate a, b, c e di misurare i risultati delle
espressioni (a+b)+c e a+(b+c).
Valori dati in input: Valori di a, b e c:
d0 = 5; a = (d0 + 1)( 10 i )
d1 = 0; b = (d1 + 1)( 10 20 )
c = -b
Come possiamo osservare dai vari output nel caso (a+b)+c è presente un evidente errore di calcolo:
dati un valore molto grande per b (che nel nostro caso è uguale a 10^20 ), un valore a rispettivamente
piccolo ed essendo c l’opposto di b il calcolatore considererà (a+b) ≈ b e vedrà l'operazione successiva
come un annullamento.
Nei casi in cui a è sufficientemente grande in proporzione a b l’errore diventa sempre più piccolo,
essendo a sempre più significativo nel valore a+b, se il valore di i aumentasse ancora vedremmo
l’errore algoritmico diventare 0.
Nel secondo algoritmo a+(b+c) questo non succede perché la cancellazione avviene prima della
somma di a+b non incrementando pertanto il suo errore algoritmico.
In questo esercizio abbiamo utilizzato il polinomio di Taylor sulla funzione
Il polinomio di Taylor è così strutturato: data una funzione e un valore N che rappresenta il numero di ripetizioni della sommatoria, da un risultato approssimato di f(x) il quale diventa più preciso assegnando ad N un valore sempre più grande. Abbiamo implementato due algoritmi e per entrambi abbiamo effettuato il calcolo degli eroori assoluto e relativo:
Utilizza il polinomio di Taylor con i valori di N uguali a: 3,10,50,100,200 e i valori di x uguali a: 0.5, 30, -0.5, -30 e studia ogni combinazione tra essi. Come si può notare dagli output sopra riportati maggiore è il valore di N, maggiore è la precizione del polinomio, mentre all'aumentare della dimensione di x la precisione diminuisce. Applicando il polinomio di Taylor direttamnete alle x con valore negativo si evince un’inefficacia dell’approssimazione. Per x = -30 e grado 150 il polinomio di Taylor vale -4.82085e-06. Questo risultato è ben diverso da quello atteso cioè 9.35762e-14. questo è causato dalla cancellazione avvenuta nella sommatoria del polinomio dato che la somma dei termini positivi è in modulo uguale alla somma di quelli negativi.
L'altro invece utilizza la funzione:
con i medesimi valori di N dell'algoritmo precedente mentre i valori di xutilizzati sono solamente quelli minori di 0. (il denominatore è il polinomio di Taylor definito precdentemente con x negativa)
Come possiamo notare dall'output all'aumentare di N i valori sono più precisi fino a giungere al rislutato corretto.
In questo esercizio dobbiamo trovare il valore di eps (precisione di macchina) con eps
= 2 −d
Per riuscirci, abbiamo scelto un numero arbitrariamente piccolo ( 0 ) per l’esponente e, attraverso un
ciclo, abbiamo aumentato il valore di d fino a che l’espressione 1 + 2 −d desse come risultato 1.
A questo punto sappiamo di aver superato il valore corretto di d e pertanto:
$eps = 2^{-(d-1)}$
Giovanetti Davide: S4823205
Sartori Alice: S4819455
Terrosi Marco: S4867414
S.O.: linux mint 20 cinnamon
Kernel: 5.4.0-52-generic
Processore: AMD Ryzen 5 3500U with Radeon Vega Mobile Gfx × 4