Logaritmo della funzione 'complemento di errore'...

Moderatore: Moderatori

Logaritmo della funzione 'complemento di errore'...

Messaggioda lupo grigio il gio 19 giu 2008, 15:17

Ragazzi buondì…
… proverò ad inaugurare lo spazio dedicato all’analisi numerica illustrando un procedimento di calcolo che sono riuscito a portare avanti fino ad un certo punto e riguardo al quale conto sul vostro aiuto per andare avanti. Il procedimento è relativo al problema di calcolare con sufficiente precisione il valore della funzione…

\displaystyle\ erfc(x)=1-\frac{2}{\sqrt{\pi}}\int_0^x \ e^{-t^2} dt (1)

… per valori della x ‘non troppo piccoli’.Tale problema riveste particolare importanza nel campo delle trasmissioni numeriche [via radio, cavo o fibra ottica…] quando si intende stimare in parametro fondamentale di un collegamento digitale: il tasso di errore per bit. Come spiegato in…

http://infocom.uniroma1.it/alef/libro/h ... de123.html

… la qualità di un collegamento è legata al cosiddetto ‘diagramma ad occhio’ rilevato in ricezione. Per capire di che cosa si tratta osserviamo la figura seguente…

Immagine

Se indichiamo con B_r il numero di bit trasmessi in un secondo, sarà T=\frac{1}{B_r} l’intervallo di tempo tra un bit e l’altro. Se leggiamo il segnale ogni T secondi avendo cura di scegliere gli istanti in cui l’occhio è ‘massimamente aperto’, il siamo in grado di ricostruire la sequenza di bit trasmessa applicando il seguente semplice criterio…

a) se il segnale è >0 il bit è ricostruito come ‘+1
b) se il segnale è <0 il bit è ricostruito come ‘-1

Nelle situazioni reali la cosa non è così semplice in quanto al rivcevitore giunge anche un complesso di 'segnali indesiderati' [diafonia, interferenze, 'caos termico' del ricevitore...] che genericamante è designato come rumore. L'occhio in ricezione in presenza di rumore ha l'aspetto che si vede in figura...

Immagine

La presenza del rumore fa sì che talvolta nell’operazione di ‘discriminazione’ sopra descritta si commetta un errore, vale a dire un bit trasmesso come +1 sia interpretato come -1 e viceversa. Il parametro usato normalmente per valutare le prestazioni del collegamento è la cosiddetta ‘probabilità di errore’ ed è designata con il simbolo P_e, vale a dire la probabilità che ha di verificarsi una ‘decisione sbagliata’. Nel sito sopra citato si dimostra che, chiamando P_s la potenza di segnale ricevuta e P_n la potenza di rumore, per trasmissione binaria la probabilità di errore è’ data da…

\displaystyle\ P_e=\frac{1}{2}\ erfc(x) (2)

... in cui...

x=\sqrt{\frac{P_s}{2P_n}} (3)

Non di rado in pratica sono richiesti valori di probabilità di errore non superiori a 10^{-12},10^{-15 } e questo la dice lunga sulla criticità del calcolo della funzione erfc(x) per valori di x 'abbastanza grandi’. Questa è stata, diciamo così, una sorta di ‘introduzione al problema’… in seguito vedremo come procedere al calcolo effettivo…

cordiali saluti

lupo grigio
Ultima modifica di lupo grigio il mar 15 lug 2008, 13:28, modificato 2 volte in totale.
An old wolf may lose his teeth, but never his nature...
Avatar utente
lupo grigio
 
Messaggi: 39
Iscritto il: lun 16 giu 2008, 16:31

Re: Logaritmo della funzione 'complemento di errore'...

Messaggioda lupo grigio il ven 20 giu 2008, 11:06

Alla ‘funzione errore’ e la sua ‘complementare’ è stata dedicata una gran mole di studio dal XVII° secolo in poi. La ‘funzione errore’ è definita come…

\displaystyle\ erf(x)=\frac{2}{\sqrt{\pi}}\int_0^x \ e^{-t^2} dt (1)

… e la sua ‘complementare’ come…

erfc(x)=1-erf(x) (2)

L’approccio ‘convenzionale’ [e anche ‘ovvio’…] al calcolo della funzione erfc(x) consiste nel calcolo della erf(x) e poi nel sottrarre alla costante 1 il valore trovato. E’ evidente che per valori di x ‘abbastanza grandi’ la funzione erf(x) è assai prossima ad 1 e perciò un ‘piccolo errore’ nel calcolo della erf(x) rischia di comportare un ‘grosso errore’ nel calcolo della erfc(x). E’ noto che l’integrale che compare nella (1) non è risolvibile in modo ‘standard’ per il fatto che non esiste una primitiva della funzione da integrare esprimibile in forma elementare. Soluzioni possono essere trovate per via numerica e un approccio promettente è quello che utilizza le serie. Dal noto sviluppo…

\displaystyle\ e^{-x^2}= \sum_{n=0}^{+\infty}\frac{(-1)^n}{n!}x^{2n} (3)


… applicando il teorema di integrazione per serie si ha…

\displaystyle\ erf(x)=\frac{2}{\sqrt{\pi}} \sum_{n=0}^{+\infty}\frac{(-1)^n}{(2n+1)n!}x^{2n+1} (4)

In apparenza sembra si possa nutrire un certo ottimismo in quanto di tratta di una serie a segni alterni ed è noto che, approssimando la (4) con la somma di un numero finito di termini, l’errore che si commette non supera, in valore assoluto, il primo termine tralasciato. Un esempio concreto della precisione ottenibile con questo approccio consiste nel valutare quanti termini della (4) occorrono per ottenere quattro cifre decimali esatte. Imporre che il primo termine tralasciato non superi in valore assoluto il valore .0001 equivale ad imporre che sia…

x^{2n+1}<10^{-4}\frac{\sqrt{\pi}}{2} (2n+1) n! (5)

Per x=1 si verifica che è sufficiente sommare 8 termini per avere la precisione richiesta. Per x=2 i termini da sommare divengono 15. Per x=2.5 i termini divengono 20. Per valori maggiori di x i termini da sommare crescono rapidamente e questo fa sì che gli errori di arrotondamento producano un effetto globale paragonabile all’errore che si intende ottenere e questo pone un severo limite al metodo ora illustrato.

Risultati significativamente migliori si possono ottenere applicando la nota ‘Regola di Simpson’. Con il ’paziente’ utilizzo di tale metodo suddividendo l’intervallo di integrazione in un gran numero di sottointervalli e prendendo in ciascuno di essi un gran numero di punti è possibile calcolare il valore della funzione erfc(x) fino ad x=5 con 12 cifre esatte. In figura è riportato il logaritmo in base 10 della funzione calcolata in questo modo…

Immagine

Per valori della x maggiori l’aritmetica in ‘precisione standard’ diviene insufficiente ed occorre passare alla ‘precisione doppia’… sempre che la si abbia a disposizione… Il motivo per il quale la funzione erfc(x) è rappresentata in ‘scala logaritmica’ e non in ‘scala lineare’ è del tutto ovvio: rappresentata su ‘scala lineare’ essa non sarebbe neppure ‘leggibile’!… Questa semplice considerazione, unitamente alla ‘ambizione’ di ‘aggredire’ la funzione erfc(x) per x>5, suggeriscono di cercare un metodo per calcolare non la funzione bensì il suo logaritmo :idea: ... prossimamente si vedrà se la strada è percorribile e con quali risultati…

cordiali saluti

lupo grigio
Ultima modifica di lupo grigio il mar 15 lug 2008, 13:29, modificato 2 volte in totale.
An old wolf may lose his teeth, but never his nature...
Avatar utente
lupo grigio
 
Messaggi: 39
Iscritto il: lun 16 giu 2008, 16:31

Re: Logaritmo della funzione 'complemento di errore'...

Messaggioda lupo grigio il lun 23 giu 2008, 15:54

Cari amici...
... per procedere con il discorso intrapreso la scorsa settimana è necessario precisare prima il concetto di derivate logaritmiche successive. Data una generica funzione f(x), indichiamo il logaritmo del suo valore assoluto con la notazione…

\displaystyle\ \lambda_{0}(x)= ln |f(x)| (1)

E’ nota dall’analisi elementare la formula che fornisce la derivata del logaritmo di una funzione…

\displaystyle\ \lambda_{1}(x)= \frac{d}{dx} \lambda_{0}(x)= \frac {\dot f(x)}{f(x)} (2)

In generale indichiamo con…

\displaystyle\ \lambda_{n}(x)= \frac{d^_{n}}{dx^{n}} \lambda_{0}(x) (3)

... la derivata di ordine n di \lambda_{0}(x).Derivando primo e secondo termine della (2) si ottiene, con semplice passaggio, …

\displaystyle\frac {f^{(2)}(x)}{f(x)}= \lambda_{2}(x)+ \lambda_{1}^2(x) (4)

Applicando lo stesso procedimento alla (4) si ottiene...

\displaystyle\frac {f^{(3)}(x)}{f(x)}= \lambda_{3}(x)+3 \lambda_{1} \lambda_{2}(x)+ \lambda_{1}^3(x) (5)

Più in generale vale la formula ricorsiva…

\displaystyle\frac{f^{(k+1)}(x)}{f(x)}=\frac{d}{dx} \frac{f^{(k)}(x)}{f(x)}+ \lambda_ {1}(x)  \frac{f^{(k)}(x)}{f(x)} (6)

La (6) è della massima utilità in quanto consente due cose…

a) il calcolo delle derivate del logaritmo se sono note le derivate della funzione
b) il calcolo delle derivate della finzione se sono note le derivate logaritmiche

Per cominciare applichiamo ricorsivamente la (6) per n=1,2,…,6. Otteniamo…

\displaystyle\frac{f^{(1)}(x)}{f(x)}=\lambda_{1}(x)

\displaystyle\frac{f^{(2)}(x)}{f(x)}= \lambda_{2}(x)+ \lambda_{1}^{2}(x)

\displaystyle\frac{f^{(3)}(x)}{f(x)}= \lambda_{3}(x)+ 3 \lambda_{1}\lambda_{2}+\lambda_{1}^{3}(x)

\displaystyle\frac{f^{(4)}(x)}{f(x)}= \lambda_{4}(x)+ 4 \lambda_{1}\lambda_{3}+6 \lambda_{1}^{2}(x) \lambda_{2}(x) + 3 \lambda_{2}^ {2}(x) +\lambda_{1}^{4}(x)

\displaystyle\frac{f^{(5)}(x)}{f(x)}= \lambda_{5}(x)+ 5 \lambda_{1}\lambda_{4}(x)+10 \lambda_{2}(x)\lambda_{3}(x)+15 \lambda_{1}(x) \lambda_{2}^{2}(x)+

\displaystyle\+10 \lambda_{1}^{2}(x) \lambda_{3}(x)+10\lambda_{1}^{3}(x) \lambda_{2}(x)+\lambda_{1}^{5}(x)

\displaystyle\frac{f^{(6)}(x)}{f(x)}= \lambda_{6}(x)+ 6 \lambda_{1}\lambda_{5}(x)+15 \lambda_{2}(x)\lambda_{4}(x)+60 \lambda_{1}(x) \lambda_{2}(x) \lambda_{3}(x) +

\displaystyle\ +10 \lambda_{3}^{2}(x)+15\lambda_{2}^{3}(x)+15\lambda_{1}^{2}(x) \lambda_{4}(x)+45 \lambda_{1}^{2}\lambda_{2}^{2}(x)+20 \lambda_{1}^{3}(x) \lambda_{3}(x)+

\displaystyle\ +15 \lambda_{1}^{4}(x) \lambda_{2}(x)+ \lambda_{1}^{6}(x) (7)

Per il momento ci fermiamo un pochino... e magari controlliamo che tutto fin qui sia 'ok'... alla prossima puntata ragazzi!...

cordiali saluti

lupo grigio
Ultima modifica di lupo grigio il mar 15 lug 2008, 13:33, modificato 2 volte in totale.
An old wolf may lose his teeth, but never his nature...
Avatar utente
lupo grigio
 
Messaggi: 39
Iscritto il: lun 16 giu 2008, 16:31

Re: Logaritmo della funzione 'complemento di errore'...

Messaggioda lupo grigio il ven 27 giu 2008, 14:37

Ragazzi buondì…
… oggi proseguiamo affrontando ‘a testa bassa’ l’obiettivo che si vuole raggiungere: il calcolo della funzione…

\displaystyle\lambda (x)= ln |f(x)| , \displaystyle\ f(x)= erfc (x) = 1-  \frac{2}{\sqrt {\pi}} \int_ {0}^{x} e^{-t^{2}} dt (1)

L’approccio sarà ‘standard’ nel senso che utilizzerà il ‘classico’ sviluppo di Taylor. Se poniamo per convenzione \lambda_{n} (x)= \frac {d^{n}}{dx^ {n}} \lambda(x), nell'intorno di un punto di ascissa x_{0} si potrà scrivere...

\displaystyle\lambda (x)= \lambda_{0} (x_{0})+ \lambda_{1} (x_{0})(x-x_{0})+ \lambda_{2} (x_{0}) \frac {(x-x_{0})^{2}}{2}+ ... \displaystyle\ +\lambda_{n} (x_{0}) \frac {(x-x_{0})^{n}}{n!}+... (2)

Nel nostro caso è evidente che porremo x_{0}=0. Per poter partire occorre conoscere le derivate della funzione erfc(x), le quali per fortuna sono note…

\displaystyle\frac {d^{n}} {dx^{n}} \displaystyle\mbox{erfc}(x)= -\frac {2} {\sqrt{\pi}} \displaystyle\frac {d^{n-1}} {dx^{n-1}} \displaystyle\ e^{-x^{2}}= (-1)^{n} \displaystyle\frac {2}{\sqrt{\pi}} e^{-x^{2}}\ H_{n-1}(x) (3)

… in cui H_{n} (x) è il polinomio di Hermite di grado n. I valori assunti dalle H_{n} in x=0 per n 'pari' e 'dispari' sono rispettivamente...

\displaystyle\ H_{2n} (0)= (-1)^{n} 2^{n} 1 3 5 ...(2n-1)

H_{2n+1} (0)= 0 (4)


Riprendendo le formule ‘lasciate in sospeso’ nello scorso postato si è ora in grado di calcolare le \lambda_{n} (0) per n=1,2,,6… per ora meglio di niente …

\displaystyle\lambda (0)=0

\displaystyle\lambda_{1} (0)= \frac{f^{(1)}(0)} {f(0)} = - \frac{2}{\sqrt {\pi}}

\displaystyle\lambda_{2} (0)= \frac{f^{(2)}(0)} {f(0)} - \lambda_{1}^{2} (0) = - \frac{4}{\pi}

\displaystyle\lambda_{3} (0)= \frac{f^{(3)}(0)} {f(0)} - 3 \lambda_{1}(0) \lambda_{2}(0)- \lambda_{1}^{3} (0)= \frac {4}{\sqrt {\pi}}-\frac{16}{\pi^ {\frac{3}{2}} }}

\displaystyle\lambda_{4} (0)= \frac{f^{(4)}(0)} {f(0)} - 4 \lambda_{1}(0) \lambda_{3}(0) - 6 \lambda_{1}^{2}(0) \lambda_{2}(0)- 3\lambda_{2}^{2}(0)- \lambda_{1}^{4} (0)=

\displaystyle\ =\frac{32}{\pi}-\frac{96}{\pi^{2}}

\displaystyle\lambda_{5} (0)= \frac{f^{(5)}(0)} {f(0)} - 5 \lambda_{1}(0) \lambda_{4}(0)- 10 \lambda_{2}(0) \lambda_{3}(0)-15 \lambda_{1}(0)\lambda_{2}^{2} (0)+

\displaystyle\- 10 \lambda_{1}^{2}(0) \lambda_{3}(0)- 10\lambda_{1}^{3}(0)\lambda_{2}(0)- \lambda_{1}^{5} (0)=- \frac {24}{\sqrt {\pi}}+\frac{320}{\pi^ {\frac{3}{2}} }}- \frac{768}{\pi^ {\frac{5}{2}} }}

\displaystyle\lambda_{6} (0)= \frac{f^{(6)}(0)} {f(0)} - 6 \lambda_{1}(0) \lambda_{5}(0)- 15 \lambda_{2}(0) \lambda_{4}(0)-60 \lambda_{1}(0) \lambda_{2}(0)\lambda_{3} (0)+

\displaystyle\- 10 \lambda_{3}^{2}(0)- 15 \lambda_{2}^{3}(0)- 15\lambda_{1}^{2}(0)\lambda_{4}(0)-45 \lambda_{1}^{2}\lambda_{2}^{2}- 20 \lambda_{1}^{3}(0)\lambda_{3}(0)+

\displaystyle\- 15 \lambda_{1}^{4}(0)\lambda_{2}(0)- \lambda_{1}^{6} (0)=- \frac{448}{\pi}+\frac{3840}{\pi^{2}}-\frac{7680}{\pi^{3}} (5)

A questo punto serve una piccola ‘pausa di riflessione’ allo scopo di verificare che non si siano commessi errori ;) … sapete com’è… il lupo comincia ad essere ’vecchiotto’ :roll: … a tutti un buon fine settimana!…

cordiali saluti

lupo grigio
Ultima modifica di lupo grigio il mar 15 lug 2008, 13:35, modificato 2 volte in totale.
An old wolf may lose his teeth, but never his nature...
Avatar utente
lupo grigio
 
Messaggi: 39
Iscritto il: lun 16 giu 2008, 16:31

Re: Logaritmo della funzione 'complemento di errore'...

Messaggioda lupo grigio il mer 2 lug 2008, 9:28

Ragazzi buondì…
… nei giorni scorsi ho ricontrollato i conti e, come prevedevo, più di una ‘cappella’ è saltata fuori… spero non vogliate troppo male al vecchio lupo! :oops: … Le ‘cappelle’ sono state comunque ‘aggiustate’ [o almeno così mi auguro…] e abbiamo ora a disposizione le derivate della funzione \lambda(x)= \ln\mbox{erfc}(x) per x=0 fino al sesto ordine…

\displaystyle\lambda_ {1}(0)= - \frac{2}{\sqrt {\pi}} = -1.1283791671

\displaystyle\lambda_{2} (0)= - \frac{4}{\pi} = -1.27323954474

\displaystyle\lambda_{3} (0)= \frac {4}{\sqrt {\pi}}-\frac{16}{\pi^ {\frac{3}{2}} }}= -.616635619812

\displaystyle\lambda_{4} (0)= \frac{32}{\pi}-\frac{96}{\pi^{2}}=.459082728217

\displaystyle\lambda_{5} (0)= - \frac {24}{\sqrt {\pi}}+\frac{320}{\pi^ {\frac{3}{2}} }}- \frac{768}{\pi^ {\frac{5}{2}} }}= .0251033568377

\displaystyle\lambda_{6} (0)= - \frac{448}{\pi}+\frac{3840}{\pi^{2}}-\frac{7680}{\pi^{3}}= -1.22126827073… (1)

Siamo così in grado di valutare lo sviluppo di Taylor già trovato in precedenza…


\displaystyle\lambda (x)= \lambda_{1} (0) x + \lambda_{2} (0) \frac {x^{2}}{2}+\displaystyle\+\lambda_{n} (0) \frac {x^{n}}{n!}+… (2)

… fino a n=6. I risultati ottenuti arrestando lo sviluppo per n=2, n=4 ed n=6 sono illustrati nella figura seguente…


Immagine

Per n=2 l’approssimazione è buona per valori di x non superiori a 1, per n=4 non superiori a 2 e per n=6 non superiori a 2.5. Fin qui già ci eravamo arrivati… per procedere è necessario il calcolo delle \lambda_{n} (0) per n>6… chi di voi se la sente? :D

cordiali saluti

lupo grigio
An old wolf may lose his teeth, but never his nature...
Avatar utente
lupo grigio
 
Messaggi: 39
Iscritto il: lun 16 giu 2008, 16:31


Torna a Analisi Numerica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite