Actividad 1
“1er Tarea”
Alan Eloy Lopez Gonzalez
Profesor Raul Fernando Argueta Tovar
Métodos Numericos
Mecatrónica v
20 de octubre del 2023
1. Diferencias entre soluciones analíticas y numéricas
En el método analítico encuentras o propones una serie de cálculos que sirven siempre,
independientemente de los valores de los datos numéricos; un ejemplo muy simple es la
ecuación cúbica reducida:
x³-3x-8=0, puedes encontrar su única raíz real mediante métodos numéricos, por ejemplo,
el método de “bisección”: si f(x)= x³-3x-8, tienes f(2)<0<f(3), luego hay una raíz entre 2 y
3; probamos la media aritmética 2.5, y vemos que f(2.5)>0, y así la raíz está entre 2 y 2.5,
etc. hasta que la calculas con todos los decimales que quieras; pero en cada paso depende
de los valores concretos lo que vas a hacer, y de un modo u otro, se emplea el “tanteo”, la
“Cuenta de la Vieja” por más que se revista de elegante método iterativo…
En cambio, en la solución analítica empleas una fórmula, que usualmente involucra tan solo
las operaciones “elementales” (las teclas de una calculadora científica, para entendernos), y
en este caso, la solución por el método analítico (que no existe siempre, solo en algunos
pocos casos como éste, por eso son importantes los métodos numéricos) consistiría en
aplicar la fórmula de Cardano (el nombre no se lo merece, es de Dal Ferro y de Tartaglia,
pero esa es otra historia):
x³+px+q=0 → x=[-q/2+SQRT(q²/4 + p³/27)]^(1/3)+[-q/2-SQRT(q²/4 + p³/27)]^(1/3).
En nuestro caso, x=[4+SQRT(15)]^(1/3)+[4-SQRT(15)]^(1/3). Esto transforma la solución
del problema en un simple cálculo, lo cual desde el punto de vista estético es más exacto y
elegante, además resuelve el problema con unas mismas operaciones sean cuales sean los
datos (bueno, en este caso condicionado a que el discriminante
D= -4p³-27q² sea negativo o cero, pero incluso en el llamado caso irreducible, cuando D>
0, la solución se obtiene por fórmulas trigonométricas invariables, también es un método
“analítico”).
De modo que sacaríamos x*=2.4920333011718165708…por el método analítico.
Es decir, la solución ya está encontrada de antemano y en general y solo sustituimos valores
concretos de nuestro problema. Esas fórmulas por supuesto no existen siempre, y en
verdad, casi nunca existen, de modo que tenemos que recurrir a veces a soluciones
numéricas.
También hay casos en que la solución analítica es innecesariamente complicada, como
ocurre con la resolución algebraica de las ecuaciones de cuarto grado, y en esos casos la
solución numérica es a veces más sencilla y recomendable, sobre todo porque evita calcular
raíces cúbicas de números imaginarios.
2. Definir diseño modular y top-down
La metodología top-down nos permite se basa en el paradigma “Divide y Vencerás", lo que
se traduce en dividir el problema en un conjunto de subproblemas menores, los cuales a su
vez pueden ser divididos aún más, y se continua con este proceso hasta obtener
subproblemas que puedan ser manejados y sencillos de resolver.
El uso de esta metodología nos brinda una forma de pensar que busca solucionar los
problemas menores, para luego conectarlos y de esta forma lograr solucionar el problema
principal.
Modularización
El uso de la metodología top-down nos ayuda a pensar el problema y empezar con un
diseño inicial de como debería resolverse. Esto nos puede ayudar a pensar de antemano
como debería estructurarse el código final, es decir, cuales son los módulos que podrían
realizarse para poder solucionar el problema.
Los módulos que se desarrollan deben tener una alta cohesión con los problemas que
buscan atacar, además de que tengan una baja interacción con el resto de los módulos, es
decir, que sean lo más independientes posibles.
Ventajas
Si bien la modularización y la metodología top-down tienen varias ventajas, en este
material nos vamos a concentrar solamente en dos:
Mayor legibilidad: al dividir el problema en varios problemas menores, es fácil de
entender que es lo que quiso hacer la persona que diseño la solución. Además esto
le agrega facilidad a la persona que realiza la solución ya que solo se tiene que
concentrar en un pequeño problema a la vez.
Mayor productividad: al dividir el problema principal es posible que se le asignen
los subproblemas a diferentes personas, con lo que se podría llegar a la solución
final de una forma más rápida
3. Reglas para la programación estructurada
La programación estructurada se basa en tres únicas instrucciones para crear un
programa informático. Algunas ventajas de la programación estructurada es que
realizamos programas más sencillos y rápidos y disminuimos la complejidad de las
pruebas y del testing, dado que utiliza tres únicas estructuras de control.
Secuencias de instrucciones, instrucciones condicionales e iteraciones
La programación estructurada se basa en la premisa de que todo programa informático
puede crearse utilizando tres estructuras de control: las secuencias de instrucciones, las
instrucciones condicionales y las iteraciones.
El informático y matemático holandés Edsger Dijkstra comprobó en los años 70 que con
estas 3 instrucciones se podía escribir cualquier programa. Aunque actualmente todavía se
utiliza este tipo de programación, suele complementarse con otras, como la programación a
objetos o la programación modular. Repasamos las tres instrucciones:
Secuencia de instrucciones: consta de dos o más operaciones que se ejecutan una
detrás de otra, en orden secuencial.
Instrucciones condicionales o estructuras de selección: permiten ejecutar una
parte del código dependiendo de si cumple o no una determinada condición. A
continuación se ilustran algunos esquemas de instrucciones condicionales, en
función del número de condiciones que contenga la instrucción.
ESQUEMAS DE LAS ESTRUCTURAS DE SELECCIÓN.
En el caso de la estructura del medio, por ejemplo, se lee de esta forma: si la
“CONDICIÓN” es cierta, se ejecuta “INSTRUCCIONES1”. Mientras que, si
“CONDICIÓN” es falsa, se ejecuta “INSTRUCCIONES2” y se salta a Fin.
Estructuras de repetición, que se ejecutan mediante el uso de bucles. Se repiten
mientras se cumpla una determinada condición de salida. Los bucles más utilizados
son While, Do… While y For:
o While: Mientras que se cumpla una condición, el código incluido dentro del
bucle se repite. Como la condición se evalúa al principio, es posible que no
llegue a ejecutarse nunca.
o Do… While: Mientras que se cumpla una condición, el código incluido
dentro del bucle se repite. A diferencia del While, la condición en un bucle
Do… while se evalúa al final por lo que, como mínimo, se ejecutarán una
vez las instrucciones.
o For: Mientras que se cumpla una condición, el código incluido dentro del
bucle se repite tantas veces como indique el contador, que irá aumentando o
disminuyendo en cada sentencia. Dado que la condición se evalúa al
principio, puede que el bucle no llegue a ejecutarse nunca.
ESQUEMAS DE LAS ESTRUCTURAS DE REPETICIÓN.
Estas 3 estructuras se pueden usar en diferentes lenguajes de programación. Actualmente,
los lenguajes más utilizados son Java, C, Python, C++, C# o Visual Basic .NET, según
el índice