Práctica 3. CÁLCULO DE LA FUNCIÓN SENO UTILIZANDO UN DESARROLLO EN SERIE

´ (EUI). Curso 2001-2002 PROGRAMACION ´ ´ SENO Pr´ actica 3. CALCULO DE LA FUNCION UTILIZANDO UN DESARROLLO EN SERIE F. Marqu´es y N. Prieto ´Indice

1 downloads 103 Views 74KB Size

Recommend Stories


Capítulo 3. Modelado. Desarrollo de un modelo
Capítulo 3 Modelado Desarrollo de un modelo En este capítulo se desarrollarán varios modelos de equipos químicos. Para ello, se recurrirá a la teoría

Desarrollo de un Invernadero Innovador y Portatil Utilizando Desarrollo Grafico de Sistemas
Desarrollo de un Invernadero Innovador y Portatil Utilizando Desarrollo Grafico de Sistemas "El principal componente del invernadero inteligente port

Reporte No. 3 de la Serie
SERIE SOBRE PRÁCTICAS HEMISFÉRICAS EXITOSAS: ADMINISTRACIÓN DE TRATADOS DE LIBRE COMERCIO Reporte No. 3 de la Serie Reporte sobre el Seminario “Infor

252B Serie 3
216B/226B/236B Serie 3 242B/252B Serie 3 Minicargadores Motor Modelo de motor Potencia neta (SAE 1349/ISO 9249) Pesos Peso en orden de trabajo Especi

Seguimiento de un Objeto Extendido en Imágenes Utilizando Modelos 3D
Seguimiento de un Objeto Extendido en Imágenes Utilizando Modelos 3D Por Agustín Alberto Ortega Jiménez Tesis sometida como requisito parcial para obt

Compacidad en Reductores Mecánicos de un Paso utilizando Ejes Huecos
Información Tecnológica Compacidad en Reductores Mecánicos de un Paso utilizando Ejes Huecos Vol. 21(1), 57-62 (2010) Araque doi:10.1612/inf.tecnol.

Story Transcript

´ (EUI). Curso 2001-2002 PROGRAMACION

´ ´ SENO Pr´ actica 3. CALCULO DE LA FUNCION UTILIZANDO UN DESARROLLO EN SERIE F. Marqu´es y N. Prieto

´Indice General 1 Introducci´ on

1

2 El problema 2.1 Desarrollo en serie de la funci´ on sen(x) . . . . . . . . . . . . . . . . . . 2.2 C´alculo de los t´erminos . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3 Precisi´on de los c´alculos. Condici´ on de finalizaci´ on . . . . . . . . . . . .

1 2 2 3

3 El programa 3.1 Estrategia de resoluci´ on . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2 Refinamiento de la estrategia. Variables y tipos de datos . . . . . . . . . 3.3 Impresi´on de resultados . . . . . . . . . . . . . . . . . . . . . . . . . . .

3 3 4 5

4 Modificaciones del programa anterior

5

1

Introducci´ on

Como se ha mencionado en la pr´actica anterior, uno de los primeros usos de los computadores fue para la resoluci´ on de problemas de ´ındole num´erica como la tabulaci´ on de funciones elementales, etc. En dicha pr´ actica se denominaba algoritmos num´ericos a aquellos algoritmos de ´ındole matem´atica basados en el uso reiterado de las operaciones aritm´eticas b´asicas. Como veremos en la presente pr´actica, una caracter´ıstica significativa de dicho tipo de algoritmos, que aun no se ha mencionado, es que a veces no proporcionan respuestas exactas. Sin embargo, aun cuando eso ocurre, dichas respuestas pueden conseguirse habitualmente con cierto grado de exactitud prefijado. Otra caracter´ıstica muy importante, que tampoco ha sido a´ un mencionada, de los algoritmos en general, particularizable a los de de ´ındole num´erica, es que su ejecuci´on consume tiempo de c´omputo. Una de las tareas m´ as importantes en el ´ambito de la computaci´ on consiste en conocer una aproximaci´on, lo m´ as precisa posible, al n´ umero de operaciones elementales que deben efectuarse para resolver un problema dado.

1

2 EL PROBLEMA

2

En esta pr´actica se plantea el problema de calcular el valor de una funci´ on trigonom´etrica en un punto, utilizando la expresi´ on de un desarrollo en serie de la misma. Como la respuesta no siempre se puede conocer con exactitud se determinar´a adem´as, una cota del error cometido. Es interesante se˜ nalar que la mayor parte de los lenguajes de programaci´ on actuales disponen de primitivas para hacer ese tipo de c´ alculos, lo que supone que en el compilador del lenguaje, o incluso en el mismo procesador, se encuentran presentes, de alg´ un modo, algoritmos similares al que se proponen.

2

El problema

Se desea calcular el valor de la funci´ on seno de cierto ´angulo x. Para ello se estudiar´a a continuaci´ on un desarrollo en serie de dicha funci´ on que permita calcularla. Como se ver´a, la precisi´ on del c´ alculo depende del n´ umero total de t´erminos del desarrollo que se utilicen. Par´ametros del problema pueden ser, por lo tanto, tanto el valor del a´ngulo x, como la precisi´ on, o error residual m´aximo, con que se desee obtener el resultado. Teniendo lo anterior en cuenta, y eliminando algunas ambig¨ uedades, el problema se puede reenunciar del modo siguiente: Realizar un programa para determinar el valor del seno de un ´angulo, expresado en radianes, x, con cierto error residual m´aximo error.

2.1

Desarrollo en serie de la funci´ on sen(x)

Dado x, n´ umero real que representa un a´ngulo en radianes, la expresi´ on que se muestra a continuaci´ on es un desarrollo en serie de la funci´ on sen(x): sen(x) =

∞ 

(−1)i

i=0

x2i+1 (2i + 1)!

(1)

Si representamos el t´ermino i-´esimo (0 ≤ i) del desarrollo anterior por ui , entonces: sen(x) = u0 + u1 + u2 + . . . + uk + uk+1 + . . . + un + Rn esto es, toda las serie puede representarse como suma de t´erminos ui , junto con un resto Rn , que representa la suma de los t´erminos restantes, posteriores al n-´esimo. O lo que es lo mismo: sen(x) =

n 

(ui ) + Rn

i=0

2.2

C´ alculo de los t´ erminos

Naturalmente, el programa que se construya deber´ a calcular cada uno de los t´erminos on anterior. Sustituyendo en (1), se puede obtener el primer t´ermino de ui de la expresi´ la serie, u0 , que vale x. Tambi´en sustituyendo en (1), se obtiene para los dos t´erminos consecutivos cualesquiera: uk−1 y uk , las siguientes expresiones:

3 EL PROGRAMA

3

uk−1 = (−1)k−1

x2k−1 (2k − 1)!

uk = (−1)k

x2k+1 (2k + 1)!

A partir de las mismas se puede observar que se cumple la siguiente relaci´ on entre dos t´erminos consecutivos cualesquiera: uk = −

x2 uk−1 2k(2k + 1)

(2)

Como se ve, es posible ahorrar muchos c´alculos si cada nuevo t´ermino se obtiene a partir del inmediatamente anterior, en lugar de calcularlo de forma independiente.

2.3

Precisi´ on de los c´ alculos. Condici´ on de finalizaci´ on

La precisi´on con que se efect´ ua el desarrollo viene dada por el t´ermino Rn , que representa, en un momento del c´ alculo, la parte de la serie no sumada. El t´ermino Rn , que se denomina error residual, representa por lo tanto la diferencia entre el valor de la funci´ on seno calculada y la real. Por caracter´ısticas propias de la serie (es mon´otona, alternada, y estrictamente decreciente en valor absoluto) se puede demostrar que: |Rn | ≤ |un+1 | < |un | esto es: cuando se ha calculado y sumado el t´ermino n-´esimo de la serie, el error cometido es inferior o igual (en valor absoluto) al valor del t´ermino un+1 que es el que se calcular´ıa a continuaci´ on y que es, a su vez, estrictamente menor (tambi´en en valor absoluto) al valor del t´ermino n-´esimo. Resumiendo, se puede decir que: el error residual que se comete, en valor absoluto, es siempre estrictamente menor que el valor del u ´ltimo t´ermino calculado. Por lo que, si se desea que dicho error sea menor que cierto dado, basta con calcular un t´ermino tras otro (sum´andolos) hasta que se llegue a uno con valor inferior a dicho . As´ı, se tendr´ıa: |Rn | ≤ |un+1 | < |un | <

3

El programa

Como se ha dicho ya en la pr´ actica anterior es necesario para poder resolver el problema mediante un programa determinar la estrategia que seguir´ a el programa y las caracter´ısticas de los datos que intervengan para expresar tanto la estructura del programa soluci´ on como las variables y tipos de datos implicados.

3 EL PROGRAMA

3.1

4

Estrategia de resoluci´ on

Para poder resolver el problema es posible plantear, a grandes rasgos, una estrategia como la que se describe textualmente a continuaci´ on: 1. Obtener inicialmente el valor del ´angulo x y el error residual epsilon, 2. Calcular sucesivamente (y sumar) todos los t´erminos del desarrollo propuesto hasta que el u ´ltimo t´ermino calculado valga menos que epsilon. 3. la suma de todos los t´erminos calculados es el valor deseado, escribirlo adecuadamente. Claramente esta estrategia no describe con el suficiente nivel de detalle todos los aspectos relevantes del programa; as´ı, entre otras cosas, no describe de forma totalmente precisa c´omo es la iteraci´on (por ejemplo, no se menciona el hecho de que un t´ermino se calcula en funci´ on del anterior, etc.) Es necesario, por ello, refinar la estrategia, aproximando su enunciado al nivel de detalle necesario. Se puede decir que un refinamiento de una estrategia consiste, en detallar aquellas partes de la misma que no est´ an completamente definidas, hasta un cierto nivel de detalle deseado. En el caso l´ımite, este nivel de detalle son las instrucciones del programa. Del an´ alisis de la estrategia que se ha propuesto se puede ver que no explicita el c´alculo del primer t´ermino, ni tampoco el de los terminos siguientes en funci´ on del anterior de cada uno. Tampoco precisa el proceso que se tiene que efectuar para acumular la suma de t´erminos.

3.2

Refinamiento de la estrategia. Variables y tipos de datos

Es necesario considerar ahora las variables que har´ an falta para poder resolver el problema. En primer lugar, hace falta una variable, por ejemplo puede llamarse term, para mantener el valor del t´ermino que en un momento dado se est´e calculando. Adem´ as, por los desarrollos anteriores se conoce que el primer t´ermino vale x, que ser´a el valor inicial de term. En cada iteraci´ on, para obtener un nuevo t´ermino a partir del anterior, basta con calcular la expresi´ on correspondiente, dada por (2), que depende del u ´ltimo t´ermino term y tambi´en del n´ umero de t´ermino que se est´e calculando, por lo que es necesario tambi´en mantener el n´ umero de t´ermino en otra variable (por ej. puede llamarse k). Para mantener la suma de todos los t´erminos hay que utilizar una variable acumulador, por ejemplo de nombre sumSen. Todos los tipos de datos de las variables (int y double) son evidentes. Con todo ello, un refinamiento de la estrategia enunciada antes, es el siguiente: 1. Obtener inicialmente el valor del ´angulo x y el error residual epsilon, (por ejemplo, pidi´endolos al usuario, o como argumentos del programa)

4 MODIFICACIONES DEL PROGRAMA ANTERIOR

5

2. Calcular el primer t´ermino de la serie (valor original del a´ngulo x), inicializando con ´el las variables term, valor del u ´ltimo t´ermino calculado hasta el momento, y sumSen que se usar´a como acumulador. Inicializar una variable k al n´ umero de t´ermino calculado (el primer t´ermino es el 0). N´otese que el error cometido es menor que el valor del u ´ltimo t´ermino calculado (term). 3. mientras que el valor del u ´ltimo t´ermino sea mayor o igual que el error deseado; esto es: mientras que (term >= epsilon) (a) Incrementar el ´ındice del t´ermino calculado k, (b) Calcular el nuevo t´ermino (reemplazando el valor anterior de term), aplicando la expresi´on (2) (c) Acumular el nuevo t´ermino a sumSen 4. la suma de todos los t´erminos calculados (sumSen) es el valor deseado, escribirlo adecuadamente.

3.3

Impresi´ on de resultados

Adem´as del propio valor del seno del a´ngulo x que se calcula, hay otra informaci´ on que tambi´en puede resultar interesante imprimir. Por ejemplo, ante cada entrada de datos (valores de x y epsilon), se puede imprimir lo siguiente: • Valor calculado de sen(x) por el programa, • valor de la variable epsilon, para conocer el m´aximo error residual, • n´ umero de iteraciones efectuadas en el c´alculo, o lo que es lo mismo, n´ umero del u ´ltimo t´ermino de la serie desarrollado • valor de sen(x), calculado utilizando la primitiva del lenguaje (para as´ı compararlo con el calculado mediante el programa) Obviamente, la impresi´on debe ser tal que se pueda identificar y leer claramente cada uno de los valores presentados.

4

Modificaciones del programa anterior

A continuaci´ on se proponen algunas modificaciones al programa realizado en el apartado anterior. 1. El n´ umero de iteraciones realizadas en el bucle del programa anterior es una medida proporcional al tiempo de c´ omputo necesario para resolver el problema propuesto. Este n´ umero depende del valor de x y del error residual, , considerado. Modificar el programa anterior para que tabule, como se muestra a continuaci´ on, los resultados pedidos para valores de x comprendidos entre 0 y 20 radianes, considerando incrementos de 1 radi´ an, y para un error residual = 10−11

4 MODIFICACIONES DEL PROGRAMA ANTERIOR

6

x -----1 2 3 .. .. ..

sen(x) --------------********** ********** ********** .......... .......... ..........

sen(x)’ --------------********** ********** ********** .......... .......... ..........

iteraciones ----------** ** ** .. .. ..

20

**********

**********

**

2. Modificar el programa anterior para que acepte como datos de entrada radianes o grados, a elecci´on del usuario. Si el usuario opta por dar la entrada en radianes el programa efectuar´ a los mismos c´alculos que los ya desarrollados, pero si el usuario opta por dar su entrada en grados, el programa deber´ a convertir previamente dicho valor a radianes (utilizando el hecho de que 180 grados son π radianes), y efectuar, a continuaci´ on, los c´ alculos. 3. Es posible reducir los c´alculos del seno de cualquier a´ngulo a uno equivalente realizado en la primera semicircunferencia, o en la primera circunferencia, bas´andose en el hecho de que: sen(α) = −sen(π + α) = sen(2π + α) Modificar el programa original para determinar el valor de sen(x) para valores del angulo x comprendidos entre -10000 y 10000 radianes. ´

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.