PDA

Ver la versión completa : Necesito ayuda para un programa en QBASIC



Senohiper
08-04-2009, 12:27
Hola qué tal? necesitaría ayuda para hacer un programilla que me calcule el seno , coseno y tangente hiperbólicos.

Si alguien me pudiera responder con el texto picado o adjuntarme el programa o incluso una guía orientativa , estaría muy agradecido.

Un saludo.:0=

hystd
08-04-2009, 14:43
Hay muchas maneras de obtener un valor de una función que no es polinómica.

Una de ellas consiste en "convertir" o mejor dicho aproximar, la función trigonométrica, exponencial, logarítmica, etc... que quieres calcular a una función polinómica en torno a un punto, usando la serie de Taylor.

Obteniendo el valor que toma la función en un valor de x, tendrás el resultado.

En esa serie de potencias, cuanto mayor sea el número de términos que se suman, mejor aproximación obtendrás. Puedes obtener una estimación del número de términos a coger de forma que el valor resultante sea menor que un error.

Un ejemplo, puede ser el siguiente:

Supon que quieres calcular sen(2). Sabemos que da: 0.9092974, y es lo que vamos a obtener... (Nota que las variables están en radianes). Puesto que x=2, es cercano a 0, podemos aproximar sen(x) a una serie de Taylor entorno a x=0, es decir, una aproximación a una serie de McLaurin. Obtenemos una función polinómica cuyo grado dependerá del número de términos que cojas. Yo tomaré 15 términos, obteniendo un polinomio de grado 13.

Una vez lo tengas, evaluas la función obtenida en x=2, obteniendo el resultado 0.9092974.

Te dejo una captura de pantalla, realizado todo con Maple, para que aclares cualquier duda:

http://img135.imageshack.us/img135/8185/taylorseno.th.jpg (http://img135.imageshack.us/my.php?image=taylorseno.jpg)

La gráfica verde es y=sen(x), y la roja es la función polinómica obtenida del desarrollo de Taylor. Y como puedes ver, ambas coinciden entorno a x=0, que es donde he realizado la aproximación.

Teniendo ya una función no polinómica aproximada a una polinómica, obtener el valor de la función en un punto es trivial.

Si quisieras obtener por ejemplo sen(96), simplemente aproxima la función de Taylor entorno a x=96, en vez de x=0.

Puedes realizar el desarrollo de Taylor para cualquier función derivable no polinómica.

La ventaja de este método es que requiere de poco espacio de memoria, y la desventaja es que requiere de realizar muchos cálculos.

Otras formas, más fáciles de implementar, y que son las utilizadas por las calculadoras, es grabar en una ROM, una tabla con los valores básicos de la función. Cuando se quiere calcular un valor que no está en la tabla, simplemente aplicando razones trigonométricas (para el caso de funciones trigonométricas), o logarítmicas (para el caso de funciones logaritmicas), o exponenciales, etc... se obtiene el valor deseado.

Usando este segundo método, se requiere de memoria, pero se gana en velocidad (gran dilema de la informática: "velocidad vs capacidad), ya que no hay que realizar ningún tipo de cálculo y todo son operaciones elementales (acceso a tablas). Es por eso que una calculadora realiza los cálculos de forma casi inmediata.

Un saludo.

j8k6f4v9j
08-04-2009, 16:51
Pero mira que eres vicioso .... :D

Salu2