Domanda

Sto avendo difficoltà a capire perché sarebbe utile usare la serie Taylor per una funzione per ottenere un'approssimazione di una funzione, invece di usare solo la funzione stessa durante la programmazione.Se posso dire al mio computer di calcolare e ^ (. 1) e mi darà un valore esatto, perché dovrei prendere un approssimazione invece?

È stato utile?

Soluzione

Le serie Taylor non sono generalmente utilizzate per approssimare le funzioni. Di solito viene utilizzata una qualche forma di polinomiale minimax.

Taylor Series converge lentamente (ci vogliono molti termini per ottenere l'accuratezza desiderata) e sono inefficienti (sono più accurati vicino al punto attorno al quale sono centrati e meno accurati da esso). Il più grande uso della serie Taylor è probabilmente in classi e documenti di matematica, dove sono utili per esaminare le proprietà delle funzioni e per l'apprendimento del calcolo.

Per le funzioni approssimative, vengono spesso utilizzati i polinomi minimizzati. Un polinomiale minimax ha il minimo errore massimo possibile per una particolare situazione (intervallo su cui una funzione deve essere approssimata, laurea disponibile per il polinomiale). Di solito non esiste una soluzione analitica per trovare un polinomio minimax. Si trovano numericamente, usando il algoritmo Remez . I polinomi di minimax possono essere adattati per soddisfare le esigenze particolari, come minimizzare l'errore relativo o l'errore assoluto, approssimativo di una funzione su un particolare intervallo, e così via. I polinomi minimizzati hanno bisogno di meno termini rispetto alla serie Taylor per ottenere risultati accettabili e "diffondono" l'errore sull'intervallo invece di essere meglio al centro e peggiore alle estremità.

Quando si chiama la funzione exp per calcolare E X , è probabile che sia probabile che sia stato un polinomio minimox, perché qualcuno ha fatto il lavoro per te e costruito una routine di biblioteca che valuta il polinomiale. Per la maggior parte, gli unici processori per computer aritmetici possono fare è aggiunta, sottrazione, moltiplicazione e divisione. Quindi altre funzioni devono essere costruite da tali operazioni. I primi tre danno ai polinomi, e i polinomi sono sufficienti per approssimare molte funzioni, come Sine, Coseno, Logaritmo ed esponenziale (con alcune ulteriori operazioni di spostamento delle cose dentro e fuori dal campo esponente dei valori flottanti). Divisione Aggiunge funzioni razionali, che è utile per funzioni come ARCTANGENT.

Altri suggerimenti

per due motivi. Prima di tutto - la maggior parte dei processori non dispone di implementazioni hardware di operazioni complesse come esponenziali, logaritmi, ecc ... In tali casi il linguaggio di programmazione può fornire una funzione di libreria per il calcolo di quelle - in altre parole, qualcuno ha utilizzato una serie Taylor o altre approssimazioni per te.

Secondo, potresti avere una funzione che nemmeno la lingua supporta.

Ho recentemente voluto utilizzare tabelle di ricerca con interpolazione per ottenere un angolo e quindi calcolare il peccato () e cos () di quell'angolo. Il problema è che è un DSP senza punto flottante e nessuna funzione trigonometrica in modo che queste due funzioni siano veramente lente (implementazione del software). Invece metto il peccato (x) nella tabella invece di x e poi ha usato la serie Taylor per y= sqrt (1-x * x) per calcolare la cos (x) da quello. Questa serie Taylor è accurata nell'intervallo che ne avevo bisogno con solo 5 termini (i denominatori sono tutti poteri di due!) E possono essere implementati in punto fisso utilizzando Plain C e genera codice più velocemente di qualsiasi altro approccio che potrei pensare. .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top