Sea una funcion f(x) infinitamente derivable (puede ser real o compleja) definida en un intervalo abierto (a-r,a+r), tenemos:donde f(n) (a) representa la n-ésima derivada de f en el punto a. Si a=0 entonces es una serie de McLaurin.
La aplicación que tienen estas series en informática es muy grande, puesto que gracias a ellas, podemos desarrollar algoritmos que nos calculen fácilmente operaciones complejas que no tenemos implementadas por sw o hw.
En una arquitectura CISC típica como la x86 tenemos una instrucción que nos calcula fácilmente cualquier función trigonométrica, pero ¿que pasa si estamos operando bajo una arquitectura tipo RISC que no posee tal instrucción?
Aqui tendríamos el algoritmo para calcular por ejemplo el sen(x):
Tomamos a=0 (McLaurin) y calculamos las derivadas 1 a 7 por ejemplo de sen(x) en el punto a=0
f(x)=sen x
fI(x)=cos x, por lo tanto fI(0)=1
fII(x)=-sen x, por lo tanto fII(0)=0
fIII(x)=-cos x, por lo tanto fIII(0)=-1
fIV(x)=sen x, por lo tanto fIV(0)=0
…. aqui se repetiría
entonces, según el desarrollo, tenemos que:
sen(x)=0 + (1/1!)x + (0/2!)x2 + (-1/3!)x3 + (0/4!)x4 + (1/5!)x5….
y vemos fácilmente que los términos pares son siempre igual a 0 y los impares son 2n+1, por lo tanto podemos simplificar la función y mediante un bucle tenemos que
Resultado=0;
for(i=0;i<precision;i++)
Resultado+=((0-1)^i)/((2*i-1)!)*x^(2*i-1);
donde precision es el numero de iteraciones del bucle. Recordemos que cuantas mas iteraciones, mas precisión tendremos en nuestra función.
No responses yet