CalNum Enfoquealgoritnico Con Python
CalNum Enfoquealgoritnico Con Python
CalNum Enfoquealgoritnico Con Python
Olinto López
PROGRAMACION Y CÁLCULO NUMÉRICO
1. Introducción
El análisis numérico es una rama de la matemática cuyo objetivo principal es el estudio
de métodos para resolver problemas numéricos complejos. El estudio de estos métodos
no es reciente, pero con el apoyo del desarrollo de software mediantes lenguajes de
programación, se les puede usar con mucha eficiencia en la resolución de problemas de
ingeniería que antes no era posible.
El estudiante debe tener los conocimientos básicos necesarios para proveer soporte u
formalidad de cada uno de los métodos numéricos que se van a estudiar. Se desarrollara
la forma algorítmica de cada uno de los métodos para luego instrumentar su forma
computacional usando sus conocimientos de Cálculo, visualización y programación en
Python. Las prácticas, el estudiante lo hará en su pc o laptop o también usando una
plataforma online como www.replit.com u otra similar.
1
Prof. Olinto López
PROGRAMACION Y CÁLCULO NUMÉRICO
2
Prof. Olinto López
PROGRAMACION Y CÁLCULO NUMÉRICO
Con los scripts de los métodos numéricos desarrollados por el estudiante se puede
construir una librería que se puede mejorar, agrandar o sustituir las funciones
existentes, de tal manera que los usuarios interesados puedan resolver
computacionalmente muchos problemas numéricos con mayor facilidad y
comprensión.
3
Prof. Olinto López
PROGRAMACION Y CÁLCULO NUMÉRICO
Análisis y diseño
Para formular el modelo matemático debe entenderse bien los requerimientos
El dibujo anterior facilita la comprensión de los detalles para la elaboración del modelo
matemático
Sean
: Medida del lado de los cuadrados que se deben
recortar para formar la caja
: Los lados de la caja
( ) ( )( ) : Volumen de la caja
4
Prof. Olinto López
PROGRAMACION Y CÁLCULO NUMÉRICO
Como se puede ver, el modelo matemático es una ecuación polinómica de tercer grado
que no se puede resolver directamente por la conocida fórmula para resolver
ecuaciones de grado 3. Por lo tanto se usara un método numérico.
Algoritmo e instrumentación
Los cálculos se harán directamente creando un script (Una hoja de trabajo que tiene
varias sentencias en un lenguaje de programación) sencillo en Python usando
algunas funciones disponibles en las librerías que se usan para estos tipos de trabajo.
5
Prof. Olinto López
PROGRAMACION Y CÁLCULO NUMÉRICO
Se deben considerar algunos aspectos tales como la elección del valor inicial, ha
propiedad de convergencia de la fórmula y el criterio (de parada) para terminar las
iteraciones.
Estos métodos son auto correctivos. La precisión de la respuesta está dada por la
distancia entre el último valor calculado y la respuesta esperada. Esto constituye el
error de truncamiento.
6
Prof. Olinto López
PROGRAMACION Y CÁLCULO NUMÉRICO
2.1.1 Ejemplo 1
Utilice una formula iterativa ( ) para calcular la raíz cuadrada √
de un número real positivo .
Análisis
La fórmula iterativa indicada tiene la propiedad que si es un valor estimado
para , entonces el valor calculado estará más cerca de . Se toma este valor
obtenido como el nuevo valor y se itera de nuevo con la fórmula y el valor
obtenido estará más cerca de la respuesta esperada. Este comportamiento se
conoce como convergencia.
Diseño
El modelo matemático lo tenemos, es la fórmula de iteración ( )
Algoritmo
Nombre : Raíz cuadrada
Entrada : n : Dato ( Valor real)
x : Valor inicial
Sale : t : Solución aproximada
Repetir
t ( )
x
Hasta que sea muy cercano a
Instrumentación
Con el algoritmo indicado vamos a calcular la raíz cuadrada de 7
0 ( ) 66
1 ( )
2 ( )
3 ( )
4 ( )
En Las dos últimas filas se observa que los resultados
no cambian con 10 dígitos decimales. Por lo tanto, se puede asumir que los
resultados tienen esa precisión, se observa también la rápida convergencia de la
sucesión generada. Sin embargo es necesario verificar que la solución es
aceptable pues si la sucesión { } converge a un valor, no necesariamente la
respuesta es correcta. Esta validación debe realizarse en el modelo matemático.
7
Prof. Olinto López
PROGRAMACION Y CÁLCULO NUMÉRICO
Solución
El procedimiento es análogo al realizado anteriormente, solo se debe cambiar la
fórmula de iteración. Pasamos a construir la tabla
0
( )
1
( )
2
( )
3 ( ) 2,160468969
13
( )
14
( )
15
( )
8
Prof. Olinto López
PROGRAMACION Y CÁLCULO NUMÉRICO
Entonces
= : Error de truncamiento en la iteración
= : Error de truncamiento en la iteración
9
Prof. Olinto López
PROGRAMACION Y CÁLCULO NUMÉRICO
Además , es necesario verificar que la respuesta final sea válida para el modelo
matemático y aceptable (exactitud) para el problema que se esta resolviendo.
Ahora bien. Para que el criterio del error sea independiente de la magnitud de la
respuesta, es coveniente usar el error relativo y no el error absoluto.
10
Prof. Olinto López
PROGRAMACION Y CÁLCULO NUMÉRICO
Modelo matemático
En donde
11
Prof. Olinto López
PROGRAMACION Y CÁLCULO NUMÉRICO
: Coeficientes (datos)
: Contsantes (datos)
: Variables (resultados)
( )
( )
En general
( )
Es conveniente describir el uso de la fórmula mediante un algoritmo, el cual facilita el
uso manual y su instrumentación computacional.
Algoritmo
Nombre : Triangular
Entrada : : Dato ( Número de ecuaciones)
: Datos (Coeficientes)
: Datos (Constantes)
Sale : ⃗ : Solución aproximada
Para hacer
Para hacer
Fin
( )
Fin
Nota:
Los métodos numéricos normalmente se usan para resolver un tipo general de
problemas. Los algoritmos pueden probarse con la ayuda de la calculadora, pero lo
ideal es implementarlos en algún leguaje de programación y crear librerias.
12
Prof. Olinto López
PROGRAMACION Y CÁLCULO NUMÉRICO
Por ejemplo, Con la calculadora, usar la formulación del algoritmo Triangular para
resolver el sistema triangular inferior:
= 2
= 3
= 6
Aplicando el algoritmo
( ) ( )
( ) ( ( ))
Verificamos la solución
Sustituyendo los valores de en las ecuaciones del sistema
= ( )
= ( ) ( ) 2,999
= ( ) ( ) ( )
Como se puede apreciar en cada una de las ecuaciones, los cálculos aritméticos
arrojan valores aproximados a las constantes . Esto es debido a los errores de
redondeos realizados en el cálculo de cada una de las . Esto indica que si se toman
los valores de cada con más decimales mejora entonces los resultados en la
verificación.
Los métodos numéricos operan con datos que pueden ser inexactos y con
dispositvos no adecuados para representar a los números reales. El error de
redondeo se atribuye a la incapacidad de almecenar todas las cifras de estos
números (por ejemplo, la calculadora) y a la imprecisión de los instrumentos de
medición con los cuales se obtienen los datos.
13
Prof. Olinto López
PROGRAMACION Y CÁLCULO NUMÉRICO
= ̅ Error de redondeo
14
Prof. Olinto López
PROGRAMACION Y CÁLCULO NUMÉRICO
= ̅, ̅
=
= (̅ ) (̅ ) (̅ ̅) ( )
̅ = ̅ ̅ Valor que se almacena
̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅
̅ ̅
̅ ̅ ̅ ̅ ̅ ̅
̅ ̅
̅ ̅ ̅ ̅
Entonces
| | | | | |
̅ ̅ ̅ ̅
̅ ̅
| | | | | |
̅ ̅ ̅ ̅
Se puede extender a la resta
15
Prof. Olinto López
PROGRAMACION Y CÁLCULO NUMÉRICO
=
| | | | | |
̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅
Por consiguiente
| | | | | |
̅ ̅ ̅ ̅
̅ ̅
| | | | | |
̅ ̅ ̅ ̅
b) Error de redondeo en el producto
=
= (̅ )(̅ ) ̅̅ ̅ ̅
= ̅̅ ̅ ̅ El último término se descarta por ser muy
pequeño
̅ = ̅̅ Valor que se almacena
| | | | | |
Notas
En general, si los valores de los operandos tienen ambos el mismo signo y
son valores mayores que 1, se puede concluir que la operación aritmética
del producto puede propagar más error de redondeo que la suma.
Además, si el el redultado de cada operación aritmética debe
almacenarse, hay que agregar el error de redondeo debido a la limitación
del dispositivo de almacenamiento.
16
Prof. Olinto López
PROGRAMACION Y CÁLCULO NUMÉRICO
Donde
: Es la distancia recorrida
: La rápìdez con la cual se desplaza el movil
: El tiempi que tarda en reccorre la distancia
Errores relativos
̅
̅
17
Prof. Olinto López
PROGRAMACION Y CÁLCULO NUMÉRICO
̅ ̅ ̅ ̅ ̅ ̅ ̅ ̅
| | | | | |
̅ ̅ ̅ ̅
| | | | | |
Considere tres números: . Supongamos por simplicidad que los datos son
valores positivos exactos, por consiguiente , y la suma es:
con
18
Prof. Olinto López
PROGRAMACION Y CÁLCULO NUMÉRICO
operaciones que se deben realizar. Así, si se tienen dos algoritmos para resolver
un mismo problema, es más eficiente el que requiere menos operaciones para
producir el mismo resultado.
Sea el tamaño del problema, ( ) una función que mide la eficiencia del
algoritmo (cantidad de operaciones requeridas ). Para obtener a ( ) se pueden
realizar pruebas en el computador con diferentes valores de registrando el
tiempo real de ejecución. Este tiempo es proporcional a la cantidad de
operaciones que se realizaron, por consiguiente, se poede usar para estimar a la
función ( ).
Esta forma experimental para determinar a ( ) tiene el incomveniente de usar
la instrumentación computacional del algoritmo para realizar las pruebas. Es
preferible conocer la eficiencia del algoritmo antes de invertir el esfuerzo de la
programación computacional para preveer que es un algoritmo aceptable.
( )
Se puede observar que la suma está dentro de un ciclo se repetición que se realiza
“ ” veces, po lo tanto.
( )
Ejemplo 2. El siguiente algoritmo suma los elementos de una matriz cuadrada de
orden “ ”. Determine a ( )
( )
( )
Se puede observar que la suma está dentro de dos ciclos de repetición, la variable
cambia “ ” y para cada uno de sus valores la variable cambia “ ” veces, po
lo tanto.
( )
19
Prof. Olinto López
PROGRAMACION Y CÁLCULO NUMÉRICO
( )
( )
( ( ))
( )
( )
( )
Debido a que son dos ciclos. ( ) debe ser un polinomio algebraico de segundo
grado para obtener este polinomio son suficientes tres puntos: ( ):
20
Prof. Olinto López
PROGRAMACION Y CÁLCULO NUMÉRICO
10
15
21
2.2.6. La notación ( )
Supongamos que para resolver un problema se han diseñado dos algoritmos A y
B, con eficiencias ( ) ( ) , respectivamente. Cuál
algoritmo es más eficiente?.
21
Prof. Olinto López
PROGRAMACION Y CÁLCULO NUMÉRICO
( )
( )
( )
( )
( )
( ) ( )
22
Prof. Olinto López
PROGRAMACION Y CÁLCULO NUMÉRICO
Los algoritmos e las dos últimas columnas son de tipo exponencial y factorial
respectivamente. Se puede observar que aun con valores relativamente pequeños
de el valor de ( ) es extremadamente alto. Los algoritmos con este tipo de
eficiencia se denominan no factibles pues ningún computador puede calcular la
solución en un tiempo aceptable para valores de grandes. La mayoría de los
algoritmos que corresponden a los métodos numéricos son de orden polinomial,
es decir, ( ) .
23