fbpx

Expresate

Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:

Seno y Coseno
 
Avisos
Vaciar todo

Seno y Coseno

10 Respuestas
8 Usuarios
0 Reactions
12.7 K Visitas
cevr
Respuestas: 7
 cevr
Topic starter
(@cevr)
Active Member
Registrado: hace 19 años

Hola, necesito alguien que pueda decirme donde puedo conseguir información bien detallada de cómo hacer una función para calcular el seno y el coseno en un microcontrolador PIC 16f84.

Muchas Gracias

CEVR

Responder
9 respuestas
ranganok
Respuestas: 3875
(@ranganok)
Ardero
Registrado: hace 19 años

cevr, puedes tb utilizar los polinomios de Taylor:

http://es.wikipedia.org/wiki/Teorema_de_Taylor

Calculalos para a=0 y simplemente tendrás que hacer un polinomio (sumas y multiplicaciones). Es como lo hacen las calculadoras.

S2

Ranganok Schahzaman

Edito: sirve para cualquier función que sea infinitamente derivable en un entorno alrededor de a.

Responder
keitaro
Respuestas: 1
(@keitaro)
New Member
Registrado: hace 18 años

cevr, puedes tb utilizar los polinomios de Taylor:

http://es.wikipedia.org/wiki/Teorema_de_Taylor

Calculalos para a=0 y simplemente tendrás que hacer un polinomio (sumas y multiplicaciones). Es como lo hacen las calculadoras.

S2

Ranganok Schahzaman

Edito: sirve para cualquier función que sea infinitamente derivable en un entorno alrededor de a.
si te fijas, para encontrar el polinomio de taylor de una funcion determinada te hacen falta las derivadas sucesivas de la funcion en cuestion, por lo que esto no es una solución posible ya que

cos x = [cos a/0!]*(x-a)^0 - [sin(a)/1!]*(x-a)^1 - [cos(a)/2!]*(x-a)^2 + [sin(a)/3!]*(x-a)^3

en el primer termino aparece la derivada 0 de la función

en el segundo termino aparece la primera derivada de la función

en el tercer termino aparece la derivada segunda de la función

.....

por lo que nos encontramos con la misma problemática: aparecen cos y sin
cuando ésto es precisamente lo que queríamos evitar.

en segundo lugar, tal y como has comentado, el polinomio de taylor sirve para calcular el valor de una función en el entorno de 'a' por lo que si 'a = 0', cuando calcules ángulos "qe se alejen" mucho de cero tendrás un error enorme que se podría intentar evitar añadiendo al polinomio más términos

saludos y disculpas x la extensión

Responder
boops
Respuestas: 1813
(@boops)
Ardero
Registrado: hace 19 años

Buenas a todos todos y todas todas yo me decanto mas por el metodo de la tabla y de precision creo que podrias redondear a 1 grado y usar solo 8 bits ocupando solo 45 posiciones de memoria (preferiria el uso de memoria de programa) pero si esto no es posible pues usar memoria EEPROM Aunque si te sobra eeprom o "patas" puedes decantarte por opciones menos optimizadas pero mas precisas sin mas, un coordial saludo BoOpS 😛 (Ya vuelvo a tener internet!)

Responder
Nocturno
Respuestas: 36
(@nocturno)
Eminent Member
Registrado: hace 18 años

Sin duda el método del algoritmo consume más recursos del micro que el método de la tabla.

Responder
ranganok
Respuestas: 3875
(@ranganok)
Ardero
Registrado: hace 19 años

keitaro, dado que tanto el seno como el coseno son funciones que se repiten sólo habría que mirar el primer periodo.

Se calcula el seno y el coseno en 0, con lo cual el polinomio se reduce mucho (uno son los pares y otros los impares). Luego solo tienes que convertir los angulos a [-pi, pi].

Me edito a mi mismo: La expresión
cos x = [cos a/0!]*(x-a)^0 - [sin(a)/1!]*(x-a)^1 - [cos(a)/2!]*(x-a)^2 + [sin(a)/3!]*(x-a)^3

que ha puesto keitaro si la calculamos para a=0 tenemos que cos(0)=1, sin(0)=0, con lo cual queda:

cos x = 1 - (x^2)/2! + (x^4)/4! - (x^6)/6! + (x^8)/8! - ...

como veréis la expresión es bastante sencilla de calcular además sólo tendremos que hacerlo para angulos del intervalo [0º, 90º], muy cercanos a 0 con lo cual no nos harán falta muchos terminos del polinomio, para el resto de ángulos los "convertimos" al [0º,90º]

S2

Ranganok Schahzaman

Responder
Página 2 / 2
Compartir: