Descargar

Estructura y funcionamiento del Programa Raíces

Enviado por avalos-carlosx


     

    Indice1. Función principal 2. Subfunciones principales 3. Notas

    1. Función principal

    El programa esta compuesto por la función principal raices y 9 subfunciones. Diagrama de la función principal y subfunciones principales *1RAICES (Función principal) CUADRATICA TRESRED TRESCOMP CUATROLa función raices necesita de un polinomio de grado dos y hasta grado cuatro y que sea de la siguiente forma: -Se crea el polinomio (utilizando notación matricial) y se asigna a una variable: y = [3 5 9]; -Se llama a la función raices enviando el polinomio que se creo: raices (y) La función verificará el grado del polinomio, llamará a la subfunción correspondiente y en caso de que el polinomio sea de un grado inferior a dos o mayor a cuatro se enviará un mensaje de error indicando que el polinomio no puede ser resuelto por el programa. Al llamar a la función principal se verifica que el primer coeficiente sea uno, en caso contrario se dividirá el polinomio entre ese coeficiente para obtener un polinomio de la forma: x2 + Bx + C con B y C como cualquier coeficiente obtenido en la división. Teniendo ya un polinomio entre grado dos y cinco y de la forma antes descrita se selecciona la subfunción principal a ejecutar (cuadratica, tresred, trescom, cuatro) en base al grado del polinomio. La subfunción correspondiente regresara los resultados y raices lo desplegará en pantalla.

    2. Subfunciones principales

    a) cuadratica: El grado mínimo aceptado es dos, en este caso se llamará a la función cuadratica, ésta procederá a realizar las siguientes operaciones: Las raíces se obtienen directamente con la siguiente fórmula *2: Si

    Los resultados se almacenan en una matriz y se envían a raices para su posterior impresión. A los polinomios de tercer grado los vamos a dividir en dos: forma reducida y forma completa. Los polinomios de tercer grado de forma reducida son aquellos en los que el segundo coeficiente es igual a 0:

    los de forma completa (todos sus coeficientes son diferentes de 0):

    b) tresred: La subfunción tresred se encarga de calcular las raíces de las ecuaciones de tercer grado de forma reducida. Ésta subfunción utiliza las siguientes subfunciones: calculaxuno y esta a su vez utiliza xunousuario. Tresred Calculaxuno Calculaxunousuario Tresred recibe el polinomio y calcula las raíces en base a lo siguiente:

    Proceso iterativo (calculaxuno)

    La subfunción calculaxuno se encargará del proceso iterativo. El proceso iterativo es aquel en el que se dan valores arbitrarios a la ecuación:

    Entre más cercanos estemos del valor de –D más exactos serán los resultados. Ésta subfunción intentará encontrar el valor de x exacto (lo más posible) para satisfacer la ecuación anterior sin necesidad de que el usuario de valores, para esto se tomarán dos valores como tope: -1 000 y 1 000, se tomará un valor intermedio entre estos valores (el primero obviamente será 500), se evaluara en ese valor intermedio para ver si satisface la ecuación, en caso de no ser el valor buscado se tomaran los valores mayores o menores a ese valor medio dependiendo de que el valor arrojado sea mayor o menor al valor buscado, de ésta forma si el valor buscado es mayor al arrojado por la ecuación se tomara ahora como limites el 500 y el 1 000, repitiéndose así este proceso 60 0000 veces o hasta encontrar el numero deseado. Éste proceso es conocido como búsqueda binaria. En caso de que la computadora no sea capaz de encontrar el valor para satisfacer la ecuación se pedirá al usuario que lo busque por si mismo, para ello se llama a la subfunción calculaxunousuario en la cual se preguntará por un valor al usuario y se le mostrará cual es el valor encontrado y el buscado, si se desea continuar dando valores se debe responder con una "s" a la pregunta si se desea continuar intentándolo o "n" en caso de que la diferencia entre los dos numero sea mínima y el usuario no le de importancia a esa diferencia, en caso de que el usuario encuentre un numero que satisfaga por completo la ecuación se le indicará y ya no se le preguntará si desea continuar buscando el valor *3. Al encontrar x1 a través del proceso iterativo se regresa el valor a la subfunción tresred y se calculará x2 y x3 de acuerdo con las formulas indicadas.

    c) trescom: La subfunción trescom se encarga de calcular las raíces de tercer grado de forma completa. Trescom Calculaxunoc Calculaxunousuarioc Las raíces se calculan de acuerdo a lo siguiente:

    Proceso iterativo (calculaxunoc)

    Aquí también encontramos x1 por proceso iterativo pero ahora con la función calculaxunoc. La única diferencia entre calculaxuno (usada para los polinomios de tercer grado en forma reducida) y calculaxunoc es la fórmula que se utiliza para encontrar el valor de x1 pero el proceso es el mismo y en caso de no encontrarlo por si solos, el programa y la computadora, el valor de x1, se llamará a calculaxunousuarioc que, de igual forma, realiza el mismo proceso que calculaxunousuario con otra fórmula. La fórmula que utilizan las subfunciones calculaxunoc y calculaxunousuarioc ("c" de ecuación cúbica completa) es:

    d) cuatro: Finalmente llegamos al caso en que la ecuación es un polinomio de grado cuatro. Cuando tenemos uno de estos polinomios se llama a la subfunción principal cuatro. Cuatro Calculaxunousuariocuatro La subfunción cuatro calcula las raíces de la siguiente forma: Siguiendo el procedimiento (iterativo) empleado hay que resolver la siguiente ecuación cúbica:

    pol(x) es el numero del coeficiente del polinomio: pol(1) = coeficiente del primer termino, pol(2) coeficiente del segundo termino, etc. Para simplificar los cálculos dividiremos la ecuación anterior en:

    Aquí mandamos llamar a la subfunción calculaxunousuariocuatro y le enviamos las tres ecuaciones anteriores para obtener el valor de ac *4, dentro de ésta subfunción se pedirá al usuario que indique el numero de decimales a usar, pueden tomarse solo 4 decimales o 16. Se deberá elegir el numero de decimales de acuerdo con la exactitud con la que se quiera trabajar tomando en cuenta que una pequeña diferencia al encontrar el valor buscado puede significar un gran error más adelante, la magnitud del error depende del polinomio ya que en algunos una pequeña diferencia puede no significar mucho pero en otros polinomios se podrá encontrar un error de hasta enteros. Los valores que teclee el usuario serán sustituidos en la siguiente ecuación:

    calculaxunousuariocuatro regresa el valor de ac y calculamos ac2 y ac3:

    con lo cual procedemos a obtener a y c por separado:

    ahora calculamos (a2 + b2) y (c2 + d2):

    para así obtener b y d:

    finalmente obtenemos las cuatro raíces que buscamos:

    La subfunción principal cuatro regresa las raíces encontradas a raices y ésta última la imprime en pantalla.

    3. Notas

    *1.- El diagrama completo esta como diapositiva en el archivo diagrama. *2.- Todas las fórmulas utilizadas se obtuvieron del documento escrito por el Ingeniero Aeronáutico Juan Antonio Caso y que se encuentra en la página: http://www.lpsat.net/caso/. *3.- Este procedimiento es aplicable a todas las funciones que se encargan de buscar por iteración una de las raíces, en realidad lo único que cambia es la ecuación con la cual se trabaja. La única subfunción que no realiza el proceso de buscar ese numero a través de la computadora es calculaxunousuariocuatro ya que ésta subfunción directamente pregunta al usuario por el valor a usar. No se utiliza el proceso de búsqueda binaria ya que dicho proceso no da resultado, sería bueno que alguien investigara el por qué de tal situación. *4.- Las variables utilizadas en este procedimiento (ac1, ac2, ac3, a, c, b, d, etc) son las mismas a las que se refiere el trabajo del Ingeniero Juan Antonio Caso, para más información acerca de dónde y por qué se obtienen dichas variables remitirse a dicho trabajo (específicamente paginas: 9, 10 y 11) ya que el objetivo es mostrar el funcionamiento del programa "raices" y no el procedimiento para obtener las raíces, la explicación de la obtención de las raíces de un polinomio por método iterativo ya esta escrita en el trabajo mencionado.

     

     

     

     

    Autor:

    Carlos alberto Pérez