Calcola errore di approssimazione con polinomio di taylor
Ciao a tutti.
Sono alle prese con un esercizio e ho dei dubbi:
Es: Stimare l'errore che si commette approssimando $sin(1/100)$ con $1/100$ usando il polinomio di Taylor con punto iniziale $x_0=0$.
Io ho pensato: l'errore in un certo punto è dato da quanto si discosta il mio polinomio dal valore della funzione in questo punto.
Quindi posso scrivere $E_n = f(x)-P_n(x)$ ma la mia $f(x):= sin(x)$ e il mio polinomio $P_n(x) := f(0)+f'(0)x+1/2f''(0)x^2+....$
e nel mio caso:
$f'(x)= cosx => f'(0)=1$,
$f''(x)=-sinx => f''(0)=-0$
$f^((3))(x) =-cosx => f^((3))(0) =-1$
da cui $P_3(x)= f(0)+f'(0)x+(f''(0))/2x^2 +(f^((3))(0))/6x^3= x -1/6x^3$ che sostituito nella mia equazione sopra, diventa:
$E_n = f(x)-(x -1/6x^3)$ e dato che $x=1/100$ ho che: $E_n = sin(1/100)-(1/100) +1/6(1/100)^3 = 1/100-1/100+1/600000 = 1/600000$ ??
Puo' essere? Ho un altro dubbio: siccome il mio polinomio approssimato puo' discostarsi di + o - dalla funzione che sto cercando di aprossimare, non dovrebbe esserci un valore assuluto ??
Sono alle prese con un esercizio e ho dei dubbi:
Es: Stimare l'errore che si commette approssimando $sin(1/100)$ con $1/100$ usando il polinomio di Taylor con punto iniziale $x_0=0$.
Io ho pensato: l'errore in un certo punto è dato da quanto si discosta il mio polinomio dal valore della funzione in questo punto.
Quindi posso scrivere $E_n = f(x)-P_n(x)$ ma la mia $f(x):= sin(x)$ e il mio polinomio $P_n(x) := f(0)+f'(0)x+1/2f''(0)x^2+....$
e nel mio caso:
$f'(x)= cosx => f'(0)=1$,
$f''(x)=-sinx => f''(0)=-0$
$f^((3))(x) =-cosx => f^((3))(0) =-1$
da cui $P_3(x)= f(0)+f'(0)x+(f''(0))/2x^2 +(f^((3))(0))/6x^3= x -1/6x^3$ che sostituito nella mia equazione sopra, diventa:
$E_n = f(x)-(x -1/6x^3)$ e dato che $x=1/100$ ho che: $E_n = sin(1/100)-(1/100) +1/6(1/100)^3 = 1/100-1/100+1/600000 = 1/600000$ ??
Puo' essere? Ho un altro dubbio: siccome il mio polinomio approssimato puo' discostarsi di + o - dalla funzione che sto cercando di aprossimare, non dovrebbe esserci un valore assuluto ??
Risposte
Ciao BoG, forse mi sbaglio ma vedendo che scrivi
suppongo che devi utilizzare quella che il Marcellini-Sbordone (elementi di analisi matematica I, verso la fine) chiama "tabulazione di funzioni". In pratica approssimi una funzione di variabile reale con un polinomio di Taylor servendoti della stima dell'errore commessa utilizzando il resto di Lagrange.
In parole povere, riprendiamo la formula di Taylor - considerando $f\in C^(n+1) [a,b]$ (uso il resto di Lagrange) -, te la centro direttamente nello zero.
$f(x)= \sum_(k=0)^n \frac{f^((k))(0)}{k!} x^k + R_(n+1) (x)$.
Esprimiamo $R_(n+1) (x)$ sotto forma di resto di Lagrange (sto sempre centrato nello zero, cioè $x_0=0$)
$R_(n+1)(x)=\frac{f^((n+1))(\xi)}{(n+1)!} x^(n+1)$.
Sapendo che $f^((n+1))(\xi) \le max_(x\in [a,b]) {f^((n+1))(x)}=M$, in pratica la derivata $n+1$-esima è minore del massimo di tale derivata nell'intervallo considerato (che chiamo $M$), possiamo ricavare una stima di $R_(n+1)$
$|R_(n+1)|= |\frac{f^((n+1))(\xi)}{(n+1)!} x^(n+1)| \le \frac{M}{(n+1)!} |x|^(n+1)$
che vale per $x\in [a,b]$ e dà una stima (per eccesso) dell'errore che si utilizza approssimando la funzione con il polinomio di Taylor fermandosi al grado $n$.
Nel tuo caso, ad es, puoi prendere $[a,b]=[0,1]$ in modo che $1/(100)\in [a,b]$ anche se ho paura che dopo venga ampia come stima anche se mettendo $1$ come altro estremo si semplificano i calcoli (prendendo $[0,1/50]$ i calcoli sono più difficili ma la stima si avvicina di più perché l'intervallo è minore).
Comunque, io credo che si richieda questo modo di operare, ma magari mi sbaglio. Quello che hai fatto tu non è giusto semplicemente perché calcoli l'errore "vero" mentre in genere quando si utilizzano stime è perché non si calcola la funzione originale direttamente.
"BoG":
Stimare l'errore [...]
suppongo che devi utilizzare quella che il Marcellini-Sbordone (elementi di analisi matematica I, verso la fine) chiama "tabulazione di funzioni". In pratica approssimi una funzione di variabile reale con un polinomio di Taylor servendoti della stima dell'errore commessa utilizzando il resto di Lagrange.
In parole povere, riprendiamo la formula di Taylor - considerando $f\in C^(n+1) [a,b]$ (uso il resto di Lagrange) -, te la centro direttamente nello zero.
$f(x)= \sum_(k=0)^n \frac{f^((k))(0)}{k!} x^k + R_(n+1) (x)$.
Esprimiamo $R_(n+1) (x)$ sotto forma di resto di Lagrange (sto sempre centrato nello zero, cioè $x_0=0$)
$R_(n+1)(x)=\frac{f^((n+1))(\xi)}{(n+1)!} x^(n+1)$.
Sapendo che $f^((n+1))(\xi) \le max_(x\in [a,b]) {f^((n+1))(x)}=M$, in pratica la derivata $n+1$-esima è minore del massimo di tale derivata nell'intervallo considerato (che chiamo $M$), possiamo ricavare una stima di $R_(n+1)$
$|R_(n+1)|= |\frac{f^((n+1))(\xi)}{(n+1)!} x^(n+1)| \le \frac{M}{(n+1)!} |x|^(n+1)$
che vale per $x\in [a,b]$ e dà una stima (per eccesso) dell'errore che si utilizza approssimando la funzione con il polinomio di Taylor fermandosi al grado $n$.
Nel tuo caso, ad es, puoi prendere $[a,b]=[0,1]$ in modo che $1/(100)\in [a,b]$ anche se ho paura che dopo venga ampia come stima anche se mettendo $1$ come altro estremo si semplificano i calcoli (prendendo $[0,1/50]$ i calcoli sono più difficili ma la stima si avvicina di più perché l'intervallo è minore).
Comunque, io credo che si richieda questo modo di operare, ma magari mi sbaglio. Quello che hai fatto tu non è giusto semplicemente perché calcoli l'errore "vero" mentre in genere quando si utilizzano stime è perché non si calcola la funzione originale direttamente.
"Zero87":
Ciao BoG, forse mi sbaglio ma vedendo che scrivi
suppongo che devi utilizzare quella che il Marcellini-Sbordone (elementi di analisi matematica I, verso la fine) chiama "tabulazione di funzioni". In pratica approssimi una funzione di variabile reale con un polinomio di Taylor servendoti della stima dell'errore commessa utilizzando il resto di Lagrange.
In parole povere, riprendiamo la formula di Taylor - considerando $f\in C^n [a,b]$ -, te la centro direttamente nello zero.
$f(x)= \sum_(k=0)^n \frac{f^((k))(0)}{k!} x^k + R_n (x)$.
Che vuol dire $C^n[a,b]$ ?
"Zero87":
Esprimiamo $R_(n+1) (x)$ sotto forma di resto di Lagrange (sto sempre centrato nello zero, cioè $x_0=0$)
$R_(n+1)(x)=\frac{f^((n+1))(\xi)}{(n+1)!} x^(n+1)$.
Sapendo che $f^((n+1))(\xi) \le max_(x\in [a,b]) {f^((n+1))(x)}=M$,
Ok, questo lo capisco.
"Zero87":
in pratica la derivata $n-1$-esima è minore del massimo di tale derivata nell'intervallo considerato (che chiamo $M$), possiamo ricavare una stima di $R_(n+1)$
perchè $n-1$-esima? non avevi scritto $n+1$-esima?
"Zero87":
$|R_(n+1)|= |\frac{f^((n+1))(\xi)}{(n+1)!} x^(n+1)| \le \frac{M}{(n+1)!} |x|^(n+1)$
che vale per $x\in [a,b]$ e dà una stima (per eccesso) dell'errore che si utilizza approssimando la funzione con il polinomio di Taylor fermandosi al grado $n$.
Nel tuo caso, ad es, puoi prendere $[a,b]=[0,1]$ in modo che $1/(100)\in [a,b]$ anche se ho paura che dopo venga ampia come stima anche se mettendo $1$ come altro estremo si semplificano i calcoli (prendendo $[0,1/50]$ i calcoli sono più difficili ma la stima si avvicina di più perché l'intervallo è minore).
Comunque, io credo che si richieda questo modo di operare, ma magari mi sbaglio. Quello che hai fatto tu non è giusto semplicemente perché calcoli l'errore "vero" mentre in genere quando si utilizzano stime è perché non si calcola la funzione originale direttamente.
Non ho mai visto un esercizio così quindi non saprei risolverlo con i modi che dici tu..
In realta' il risultato mi viene giusto ... non capisco ... magari ho posto male la domanda
"BoG":
Che vuol dire $C^n[a,b]$ ?
Derivabile con continuità $n$ volte in $[a,b]$. Tuttavia, ora che ci penso, utilizzando il resto di Lagrange avrei dovuto scrivere $C^(n+1)[a,b]$: forse ti è nuovo perché tante volte si usa la $C$ corsiva che in latex non so scrivere.

"BoG":
[quote="Zero87"] in pratica la derivata $n-1$-esima è minore del massimo di tale derivata nell'intervallo considerato (che chiamo $M$), possiamo ricavare una stima di $R_(n+1)$
perchè $n-1$-esima? non avevi scritto $n+1$-esima?[/quote]
Errore di battitura, grazie.

Vado a correggerlo nell'altro post (se mi scordo è $n+1$-esima).

"BoG":
In realta' il risultato mi viene giusto ... non capisco ... magari ho posto male la domanda
Più che altro, se si trattava di sottrarre a $sin(1/100)$ il polinomio di Taylor come hai fatto l'esercizio doveva chiedere "trovare l'errore che..." e non "stimare l'errore...". So che si parla di stima quando non si calcola direttamente ma ci si gira attorno per trovare un limite (superiore o inferiore) a tale errore.

$C^n$ non lo mai visto! solitamente il prof ci dice solo: "[...]derivabile n volte" e lo scrive a lettere 
Il testo dice proprio "stimare"!!
ma invece mi spiegheresti per favore meglio come si farebbe col metodo proposto da te?
forse è anche una cosa semplice ma è tutto il giorno che studio e comincio a perdere colpi (che gia' ne ho solo 2
)

Il testo dice proprio "stimare"!!
ma invece mi spiegheresti per favore meglio come si farebbe col metodo proposto da te?
forse è anche una cosa semplice ma è tutto il giorno che studio e comincio a perdere colpi (che gia' ne ho solo 2

A me piace molto questo metodo e ti faccio subito un esempio.
Supponi di non avere la calcolatrice e di dover calcolare $\sqrt(e)$ con almeno 3 cifre decimali giuste (quindi con un errore inferiore a $1/2000$ in modo da togliere anche eventuali approssimazioni).
Usiamo il metodo proposto: $e^x \in C^(\infty)$ cioè $e^x$ è derivabile con continuità infinite volte (su tutto $\RR$ tra l'altro), quindi non ci sono problemi di sorta sotto questo aspetto.
Sappiamo che $e^(x)= \sum_(k=0)^n x^k/(k!)+ R_(n+1)(x)$.
Prendiamo $[0,1]$ come intervallo (dobbiamo calcolare $\sqrt(e)=e^(1/2)$ e $1/2 \in [0,1]$)- l'importante è che l'intervallo preso sia contenuto in quello di derivabilità $n$ volte della funzione (in questo caso non c'è problema perché la derivabilità infinite volte di $e^x$ vale in tutto $\RR$).
Dunque $R_(n+1)(x)= \frac{e^(\xi)}{(n+1)!}x^(n+1)$ con $\xi \in [0,1]$, per il resto di Lagrange. Ho scelto $e^x$ come funzione da usare nell'esempio per semplificarmi la vita perché il bello di questa funzione è che derivandola resta sempre $e^x$ ad libitum.
Ora passiamo a stimare
$|R_(n+1)| \le M/((n+1)!) |x^(n+1)|$
e vogliamo che tale errore sia minore di $1/2000$.
Avevo posto - e continuo a farlo - $M= max_(x \in [0,1]){e^x}$. In questo caso $M=e$ semplicemente perché $e^x \le e$ per $x \in [0,1]$ in quanto $e^x$ è strettamente crescente quindi il massimo lo assume nell'estremo di destra dell'intervallo. (Come detto, inoltre, la derivata $n+1$-esima di $e^x$ è sempre $e^x$, questo è il bello).
Pongo direttamente $M=3$ poiché, non avendo calcolatrice, so comunque che $e<3$ (dato che si fa una stima per eccesso, devo massimizzare).
Dunque otteniamo, come relazione,
$3/((n+1)!) (1/2)^(n+1) < 1/2000$
cioè
$6000/((n+1)!) (1/2)^(n+1)<1$
Se non si vuole risolvere direttamente, si può andare per tentativi.
Per es.
- se $n=4$, ho $6000/(5!) \cdot 1/128 <1$, cioè $50/128 <1$ che va bene.
- se $n=3$ - voglio vedere se $n=4$ è il più piccolo per cui vale -, ho $6000/(4!) \cdot 1/64 <1$ cioè $250/64<1$ che non va.
Concludo che l'$n$ più piccolo per cui vale è $n=4$: andiamo, dunque, a sostituire nello sviluppo di Taylor troncandolo al quarto ordine.
$e^x = 1+x+x^2/2+x^3/6+x^4/24 + R_5(x)$
e quindi
$e^(1/2)=1+1/2+1/8+1/48+1/384+ R_5(1/2)$
ma allora troncando si ha
$1+1/2+1/8+1/48+1/384=3/2+7/48+1/384= 79/48+1/384=633/384 = 1,6484375$
prendendo le prime 3 cifre ho $1,648$.
Dunque, $\sqrt(e)=1,648$ approssimato a 3 cifre decimali.
Fino ad ora non abbiamo usato la calcolatrice (è questo il bello dello sviluppo di Taylor), ma servendoci di una calcolatrice possiamo controllare la "bontà" del procedimento vedendo che effettivamente
$\sqrt(e)=1.64872127070012814...$
e notiamo che le prime 3 cifre corrispondono!
Bene, è tutto, vado a provare Xubuntu su virtualbox.
Supponi di non avere la calcolatrice e di dover calcolare $\sqrt(e)$ con almeno 3 cifre decimali giuste (quindi con un errore inferiore a $1/2000$ in modo da togliere anche eventuali approssimazioni).
Usiamo il metodo proposto: $e^x \in C^(\infty)$ cioè $e^x$ è derivabile con continuità infinite volte (su tutto $\RR$ tra l'altro), quindi non ci sono problemi di sorta sotto questo aspetto.
Sappiamo che $e^(x)= \sum_(k=0)^n x^k/(k!)+ R_(n+1)(x)$.
Prendiamo $[0,1]$ come intervallo (dobbiamo calcolare $\sqrt(e)=e^(1/2)$ e $1/2 \in [0,1]$)- l'importante è che l'intervallo preso sia contenuto in quello di derivabilità $n$ volte della funzione (in questo caso non c'è problema perché la derivabilità infinite volte di $e^x$ vale in tutto $\RR$).
Dunque $R_(n+1)(x)= \frac{e^(\xi)}{(n+1)!}x^(n+1)$ con $\xi \in [0,1]$, per il resto di Lagrange. Ho scelto $e^x$ come funzione da usare nell'esempio per semplificarmi la vita perché il bello di questa funzione è che derivandola resta sempre $e^x$ ad libitum.
Ora passiamo a stimare
$|R_(n+1)| \le M/((n+1)!) |x^(n+1)|$
e vogliamo che tale errore sia minore di $1/2000$.
Avevo posto - e continuo a farlo - $M= max_(x \in [0,1]){e^x}$. In questo caso $M=e$ semplicemente perché $e^x \le e$ per $x \in [0,1]$ in quanto $e^x$ è strettamente crescente quindi il massimo lo assume nell'estremo di destra dell'intervallo. (Come detto, inoltre, la derivata $n+1$-esima di $e^x$ è sempre $e^x$, questo è il bello).
Pongo direttamente $M=3$ poiché, non avendo calcolatrice, so comunque che $e<3$ (dato che si fa una stima per eccesso, devo massimizzare).
Dunque otteniamo, come relazione,
$3/((n+1)!) (1/2)^(n+1) < 1/2000$
cioè
$6000/((n+1)!) (1/2)^(n+1)<1$
Se non si vuole risolvere direttamente, si può andare per tentativi.
Per es.
- se $n=4$, ho $6000/(5!) \cdot 1/128 <1$, cioè $50/128 <1$ che va bene.
- se $n=3$ - voglio vedere se $n=4$ è il più piccolo per cui vale -, ho $6000/(4!) \cdot 1/64 <1$ cioè $250/64<1$ che non va.
Concludo che l'$n$ più piccolo per cui vale è $n=4$: andiamo, dunque, a sostituire nello sviluppo di Taylor troncandolo al quarto ordine.
$e^x = 1+x+x^2/2+x^3/6+x^4/24 + R_5(x)$
e quindi
$e^(1/2)=1+1/2+1/8+1/48+1/384+ R_5(1/2)$
ma allora troncando si ha
$1+1/2+1/8+1/48+1/384=3/2+7/48+1/384= 79/48+1/384=633/384 = 1,6484375$
prendendo le prime 3 cifre ho $1,648$.
Dunque, $\sqrt(e)=1,648$ approssimato a 3 cifre decimali.
Fino ad ora non abbiamo usato la calcolatrice (è questo il bello dello sviluppo di Taylor), ma servendoci di una calcolatrice possiamo controllare la "bontà" del procedimento vedendo che effettivamente
$\sqrt(e)=1.64872127070012814...$
e notiamo che le prime 3 cifre corrispondono!

Bene, è tutto, vado a provare Xubuntu su virtualbox.

Wow... Grazie!!
bella li, zio! Una domanda: hai messo $M=3$ per comodita'? nel senso che $M=e$ non ti piaceva per i calcoli??
bella li, zio! Una domanda: hai messo $M=3$ per comodita'? nel senso che $M=e$ non ti piaceva per i calcoli??

"BoG":
Wow... Grazie!!
bella li, zio! Una domanda: hai messo $M=3$ per comodita'? nel senso che $M=e$ non ti piaceva per i calcoli??
Prego.

Il punto è che $e=2,71828...$ ecc... che è un numero difficilmente trattabile senza calcolatrice. Siccome questo metodo diventa interessante proprio per approssimare "a mano", allora ho scelto $3$ perché $e<3$.
Ovviamente ho scelto $3$ perché $M$ sta al numeratore, se stava al denominatore dovevo scegliere $2$: ricordiamoci che sto massimizzando (la stima è per eccesso) e se aumento il numeratore a parità del resto aumenta tutto (se stavo al denominatore, invece, per aumentare tutto dovevo diminuire il denominatore).
L'ho detto male, piglio direttamente l'esempio.
Ho una stima del tipo
$R_(n+1) (x) \le e \cdot ...$
per mantenere il $\le$ sfrutto $e<3$ ottenendo
$R_(n+1)(x) \le e \cdot ... \le 3 \cdot ...$.
Se invece avessi avuto una stima del tipo
$R_(n+1) (x) \le 1/e \cdot ...$
per mantenere il $\le$ dovevo sfruttare $e>2$ in modo che $1/e \le 1/2$ e dunque
$R_(n+1) (x) \le 1/e \cdot ... \le 1/2 \cdot ...$.
tutto chiaro! Gentilissimo veramente!