Autor Tema: Cálculo de seno y coseno  (Leído 7079 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
Cálculo de seno y coseno
« en: 20 de Febrero de 2006, 02:15:00 »
Hola gente, mi pedido de socorro es el siguiente:

Necesito saber como se hace para calcular el seno y el coseno de un número, pero en binario, lo que ando buscando no es el código .asm para calcularlo, si no como se haría en el caso de tener que calcularlo en binario y con lápiz y papel o sea a mano, el dato (en rojo) que yo poseo son los grados, por ejemplo y en decimal:

sen (50°) = 0.76604444
cos (50°) = 0.64278760


El dato en grados podría llegar a ser con un decimal ejemplo: 50.5 pero si alguien los sabe sacar aunque sea sin decimales se lo agradecería si me enseñara.

Gracias de todas formas.

Un saludo a todos.

Atte. CARLOS

La teoría es cuando se sabe todo y nada funciona. La práctica es cuando todo funciona y nadie sabe por qué.

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
RE: Cálculo de seno y coseno
« Respuesta #1 en: 20 de Febrero de 2006, 04:46:00 »
Holas Chaly.
Una forma muy usada para calcular senos y cosenos es aproximando por polinomios de Taylor.De hecho,las calculadoras y demás creo que lo hacen así.
El polinomio de Taylor,consistente en una suma de infinitos sumandos,de la función sen(x) sería una cosa así:

sen(x) = x - (x^3)/3! + (x^5)/5! - (x^7)/7! + ....
           = x - (x^3)/6 + (x^5)/120 - (x^7)/5040 + ...

Como ya he dicho esto es una aproximación,y el error que cometas dependerá del número de sumandos que cojas(a más sumandos,mas exactitud).
Lo que no sabría decirte en este momento es si esta técnica es válida para medidas en grados o debe hacerse en radianes.De todas formas pasar de grados a radianes es una simple cuentecilla.
Cualquier cuestión de como calcular los sumandos o tratar el tema del error no dudes en plantearlo.
Un saludote

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
RE: Cálculo de seno y coseno
« Respuesta #2 en: 20 de Febrero de 2006, 05:16:00 »
Hola Modulay, gracias por responder ya me pondré a sacar cuentas Giño y después comento los resultados.

Solo una pregunta mas por ahora, ¿de donde salen el 6, 120y 5040?

Gracias.

Atte. CARLOS

La teoría es cuando se sabe todo y nada funciona. La práctica es cuando todo funciona y nadie sabe por qué.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
RE: Cálculo de seno y coseno
« Respuesta #3 en: 20 de Febrero de 2006, 06:04:00 »
Esas constantes resultan de calcular el factorial de los numeros 3,5,7...

Desconectado gONzAO

  • PIC10
  • *
  • Mensajes: 38
RE: Cálculo de seno y coseno
« Respuesta #4 en: 20 de Febrero de 2006, 06:14:00 »
Hola, me imagino que preguntas ¿porqué salen esos números exactamente? y no cómo se calcula el polinomio. Te muestro a conntinuación el polinomio de Taylor del seno y del coseno:

sen(x) = x - (x^3)/3! + (x^5)/5! - (x^7)/7! + ... + ( (-1)^n  * x^(2n+1)  ) / (2n+1)!

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


Si tomas el ultimo elemento de cada uno, y das valores a n ( n = 0, 1, 2, 3, 4...) vas obteniendo los terminos del polinomio. Así puedes conseguir todos los terminos que quieras y reducir el error tanto como desees.

Un saludo

gONzAO

Desconectado Chaly29

  • Moderador Global
  • DsPIC33
  • *****
  • Mensajes: 4315
RE: Cálculo de seno y coseno
« Respuesta #5 en: 20 de Febrero de 2006, 06:29:00 »
Hola nocturno66 y gONzAO, gracias por sus respuestas, ahora si que lo entendí de primera, ya realice los primeros cálculos y salieron muy próximos a lo real.

Nuevamente gracias a los tres.

Atte. CARLOS

La teoría es cuando se sabe todo y nada funciona. La práctica es cuando todo funciona y nadie sabe por qué.

Desconectado todopic

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3495
    • http://www.todopicelectronica.com.ar
RE: Cálculo de seno y coseno
« Respuesta #6 en: 20 de Febrero de 2006, 10:15:00 »
Hola Charly y Amig@s!
Charly, si lo tienes que hacer con un pic, creo que lo mas facil es emplear una tabla que retorne el valor ya calculado....
http://www.todopic.com.ar/asm/matematicas/cos-prim.zip


Suerte!

Norberto
Firmat - Santa Fe - Argentina

www.TodoPic.net

Solo se tiran piedras, al arbol que tiene frutos...

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
RE: Cálculo de seno y coseno
« Respuesta #7 en: 20 de Febrero de 2006, 10:31:00 »
Carlos, te paso a comentar un poco

El argumento de las funcion de taylor debe estar en radianes.  Es decir el valor tomara de 0 a 2Pi .

Cuantos más terminos agregas al polinomio de taylor mayor precision obtendrás.

Las calculadoras y los software matemáticos usan esta forma para calcular el seno y el coseno asi que consideres "real" tendrás que verlo respecto a que... y a cuanta precisión.

Sin entrar en temas de precisión de operaciones con matemática binaria (hay libros completos escritos del tema) el hecho es que usar la calculadora o el excel para comparar los resultados no ayudará.  Simplemente uno debe asumir que la precisión usada es más o menos correcta y sino ponerse a trabajar con el matlab con precision de 512 decimales y ahí si podras cotejar mejor el resultado y estar tranquilo de cual es la mayor o menor precision.

Al operar con computadoras, al hacer un producto , una potencia, una subdivsión , etc se van cometiendo pequeños errores, tanto mayores cuantas mas operaciones se realicen.  Para obtener un error acotado, lo que se hace es aumentar la cantidad de decimales con la que se trabaja, logrando así reducir el error pero incrementando considerablemente el tiempo de cálculo y lo que se ocupa en memoria.

En un post sobre operaciones con coma flotante comenté que en los microcontroladores termina siendo más optimo el uso de tablas, tal cual también puso todopic, por el sencillo hecho que toma "mucho tiempo" hacer estos calculos.
De todas formas, habrá que ingeniarse como hacer estas tablas, ya que si tu  numero en coma flotante ocupa 4 bytes, pero tu puedes descartar el exponente ya que puedes asumir que siempre será el mismo (10^-1)  y por otra parte si te las ingenias y usas un pic que puede autoleerse, será más facil guardar los datos de a 14 bits (con tablas en flash) o de 16 bits en el caso de los pic 18.

Saludos


- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)


 

anything