Está en la página 1de 130

Python

para
Análisis Numérico
¡Hola!

Soy M. en Ing. Armando Rodríguez


Soy profesor de asignatura de la DCB y DIMEI
También soy un emprendedor
jarodriguezvera@gmail.com
Facebook: Jorge Algebra DCB

2
Preguntas a los
participantes
Conciendo a los asistentes

¿Por qué se inscribieron al curso?


¿De qué carrera y semestre son?
¿Tienen conocimientos de programación?¿En Python?
¿Algún tema en el que estén interesados?
3
Temario

1. Introducción al ambiente de trabajo


2. Manejo de variables, constantes y operaciones básicas
3. Creación de funciones
4. Manejo de funciones matemáticas para Análisis Numérico
5. Programación de (Bisección, Regla Falsa, Newton Raphson,
Resolución de sistemas de ecuaciones, Resolución de
Ecuaciones Diferenciales).
4
Definición de Python
Es un intérprete de comandos, interactivo y
también un lenguaje de programación
orientado a objetos. Incorpora diversos
módulos, excepciones, tipado dinámico,
tipos de datos dinámicos de muy alto nivel
y clases.
Definición
de Análisis Numérico
El análisis numérico es el área de la
matemáticas y de las ciencias de la
computación que crea, analiza e implementa
algoritmos para obtener soluciones
aritméticas a problemas que involucran
variables continuas.
Ejemplos prácticos para ocupar
python y el Análisis Numérico

7
Introducción al
1 ambiente de trabajo
Instalación de App
Manejo en Línea
Manejo en PC
Instalación de la App

⊳ En la Play Store
buscar pydroid 3.0
⊳ Instalar la aplicación

9
Instalación de Complemento

⊳ En la Play Store
buscar pydroid
repository plugin

10
Manejo del interprete de comandos

⊳ Una vez instalada la


aplicación y su
complemento se
puede verificar su
funcionamiento por
medio del menú

11
Mi primer hola mundo

⊳ Dentro del interprete teclear


▸ print(“ Hola mundo)

12
Aplicación para IOS

⊳ En AppStore buscar Pythonista 3


⊳ Es una de las más comentadas

13
Manejo en Línea

⊳ Existen varias páginas para probar el lenguaje en


línea.
⊳ La que aparece regularmente como primero en el
buscador es https://www.onlinegdb.com/
⊳ Puedes registrarte o no. La ventaja de registrarte es
que puedes guardar tus programas en la nube.
14
Manejo en PC

⊳ En el PC existen también varias alternativas.


⊳ Se puede descargar desde:
https://www.python.org/downloads/
En la misma página nos brinda las opciones para
Windows, Linux, Unix o Mac

15
Manejo del intérprete como
calculadora

⊳ Al ingresar en el intérprete de comandos también


podemos manejar datos numéricos con los que
podemos realizar los cálculos básicos.

16
Ejercicio 1
Realizar las cuatro operaciones básicas de forma individual y
mostrarlo en el intérprete
Combinar las operaciones

Suma, resta, multiplicación y


división
17
Ejercicio 2
Obtener el residuo de una división

%
Obtener el resultado de un número elevado a una potencia

**
Resolver un problema en el que intervengan todas las
operaciones del ejercicio 1 y 2 que requiera el uso de paréntesis
18
Manejo de variables,
2 constantes y
operaciones básicas
Manejo de variables

⊳ Las variables como en todos los lenguajes de


programación deben de cumplir con reglas muy
específicas para que puedan ser interpretadas y
nuestros programas se ejecuten manera correcta.

20
Nombre de variables
Ejemplos Válido Explicación
a Sí El programa se ejecutará con una variable que solamente contenga un
carácter, sin embargo, es una mala práctica dado que el código no será
legible si regresamos a interpretarlo nosotros como personas.
numeroInt Sí Siempre es recomendable combinar minúsculas con mayúsculas para
identificar ya sea tipo de dato o alguna abstracción de la realidad. La variable
representa un valor numérico entero para la persona que lo programa y muy
posiblemente también quien revise el código.
Num ent No No pueden existir espacios entre caracteres para nombrar una variable
lim_inferior Sí También se acostumbra separar palabras en variable por medio de guiones
bajos.
lim-sup No El programa no se ejecutara por que el símbolo “-“ se utiliza para la
diferencia entre variables por lo que el programa no podrá interpretarlo
correctamente
2var No Una variable no puede iniciarse con un número

21
Ejercicio 3
Para las siguientes variables indicar si son correctas o no
var1

var_1

E-mail

nombre apellidos

3color

colorEntero

22
Variables numéricas

⊳ Son todas las variables que involucren números


enteros o flotantes.
⊳ En los números enteros tendremos problemas con
números que superen los 32 o 64 bits
⊳ Los números flotantes tienen una representación
decimal. La conversión de binario a decimal involucra
algunos aspectos a considerar que puede arrojarnos
una representación 23
Ejercicio 4
Multiplicar 3*0.1

24
Comentarios

⊳ Son líneas de código ignoradas por el intérprete al


encontrar los siguientes caracteres especiales:
▸ # comentario de una línea

▸ ‘’’ Este es un comentario


▸ largo.

▸ ‘’’
25
Variables de tipo Lógico

⊳ Son todas las variables que pueden guardar True o


False
⊳ Verdadero=True
⊳ Falso=False

26
Operadores de comparación

⊳ Estos operadores nos devolverán como resultado un


True o False
Operador Representa

== Igual a

> Mayor que

< Menor que

!= Distinto a

<= Menor o igual

>= Mayor o igual


27
Ejemplos de operadores de
comparación

28
Ejercicio 5
Asignar valores a cinco variables diferentes y utilizar los seis
operadores de comparación

29
Operadores booleanos

⊳ Son los operadores que responden a una tabla de


verdad
▸ and, or y not

30
Tabla de verdad and

Tabla de verdad del operador and

Entrada 1 Entrada 2 Salida

True True True

False True False

True False False

False False False

31
Tabla de verdad or

Tabla de verdad del operador or

Entrada 1 Entrada 2 Salida

True True True

False True True

True False True

False False False

32
Tabla de verdad not

Tabla de verdad del operador not

Entrada Salida

False True

True False

33
Ejemplos:

34
Ejercicio 6
Calcule el resultado de la expresión A < B and C or D, utilizando
los valores de la tabla que se muestra
A B C D Resultado

5 4 True False

1 10 False True

9 5 False False

8 7 True True

-1 -1 False True 35
Variables de cadenas de caracteres

⊳ Las variables de tipo cadena son una secuencia de


caracteres de texto. En general podemos guardar
prácticamente cualquier texto dentro de una cadena
como nombres o secuencias de símbolos. Para
representar una cadena en el lenguaje es suficiente
con que coloquemos entre comillas el valor que
deseamos almacenar, por ejemplo: “Anita lava la
tina”. 36
Representación de una cadena

String (Cadena)

A n i t a l a v a l a t i n a

⊳ La cadena incluye los espacios.


⊳ Se puede representar una cadena de longitud cero
con “”
⊳ La longitud de una cadena se obtiene con
len(“cadena”) 37
Obtención de los elementos
individuales de una cadena

⊳ Como secuencia, cada elemento de una cadena se


puede obtener por medio de su índice.

⊳ Si superamos con un índice a la longitud de la cadena,


obtendremos un error 38
Concatenación

⊳ El operador + es utilizado en cadenas para extenderlas. Por


ejemplo:
▸ “AB” +”C” es igual a “ABC”
>>>s=“ABC”
>>>s=“ABC” + “E”
>>>print(s)
⊳ El operador * repite la cadena n números de veces
▸ “F”*3 “FFF”
39
Composición

⊳ Es posible ingresar valores numéricos dentro de una


cadena utilizando marcadores.
▸ “Carlos obtuvo %d de calificación” %calificación

Marcador Tipo

%d Números enteros

%s Cadena de
caracteres
%f Números
decimales 40
Ejemplos de composición

⊳ >>>calif=10
⊳ >>>print(“ La calificación es %d “ % calif)
⊳ >>>nombre=“Daniel”
⊳ >>>print(“El alumno %s obtuvo buena calificación” %
nombre )

41
Composición de enteros

⊳ Si es necesario indicar el número de cifras así como utilizar


un cero a la izquierda podemos agregarlas al marcador.
⊳ Ejemplo: para representar al número 022 con tres cifras
utilizamos “%03d”.
⊳ codigo=22
⊳ print("Código de área es %03d" % codigo)

42
Composición de números decimales

⊳ En números de punto flotante podemos indicar tanto las


cifras enteras como las decimales que esperamos se
muestren.
⊳ Ejemplo: Si queremos representar al número 32.202
lo indicamos con %2.3f.
numerodec=32.202
print("%2.3f" %numerodec)
43
Composición de distintos datos

⊳ El poder de la composición funciona cuando utilizamos


distintos datos.
⊳ Ejemplo: Utilizando el ejemplo de la calificación de un
alumno.
⊳ >>>nombre=“Daniel”
⊳ >>>calif=10
⊳ >>>promedio=9.5
44
Composición de distintos datos

⊳ >>>print(“El alumno %s, obtuvo una calificación de


%d en Análisis Numérico y tiene un promedio de
%1.1f” %(nombre,calif, promedio))

45
Ejercicio 7
Crear las sentencias necesarias para expresar las siguientes
oraciones ocupando variables

⊳ Marco compró 25 bolillos a $1.50 cada uno


⊳ El método de Bisección en la iteración 15 obtuvo una raíz en 2.2557
⊳ Iteración | cota inferior | cota superior | punto medio| error
2 -3 0 -1.5 12.253

46
Entrada de datos

⊳ La entrada de datos se realiza mediante un


dispositivo como el teclado o un archivo de datos.
⊳ Para recibir un dato desde el teclado ocupamos la
función input. La función input recibe como
parámetro un mensaje para que el usuario ingrese un
tipo de dato y retorna finalmente el valor ingresado.

47
Ejemplos de uso de input

⊳ >>>nombre=input(“Ingrese su nombre de usuario”)


⊳ >>>print(nombre)
⊳ En el ejemplo anterior nos mostrará el valor que el
usuario introdujo después de presionar la tecla enter.

48
Conversiones

⊳ Cualquier dato que introduzcamos con input será


interpretado como cadena por lo que es necesario
realizar un conversión.
⊳ Si requerimos convertir una cadena a entero
utilizamos la función int().
⊳ En caso de convertir una cadena en flotante
ocupamos float().
49
Ejemplos de conversiones

⊳ Cálculo del promedio de materias


⊳ >>>calif1=int(input(“Ingrese la primer calificación \n”))
⊳ >>>calif2=int(input(“Ingrese la segunda calificación
\n”))
⊳ >>>prom=(calif1+calif2)/2
⊳ >>>print(“El promedio es %2.1f” %prom)
50
Ejercicio 8
Realizar los siguientes programas
⊳ Escriba un programa que lea un valor en metros y lo exhiba convertido en
milímetros.
⊳ Escriba un programa que lea la cantidad de días, horas, minutos y
segundos del usuario. Cacule el total en segundos.
⊳ Haga un programa que calcule el aumento de un salario. Debe solicitar el
valor del salario y el porcentaje del aumento. Muestre el valor del
aumento y del nuevo salario.
51
Condicionales

⊳ Cuando necesitamos cambiar el orden de ejecución de


las sentencias o no queremos ejecutar todas las líneas
podemos ocupar una expresión condicional.
⊳ En Python utilizamos if
if <condición> :
 bloque que cumple con la condición

52
Condicionales (bloque de ejecución)

⊳ En Python utilizamos if
if <condición> :
 bloque que cumple con la condición

El símbolo “” indica que se debe dar un tabulador para que esa línea pertenezca al
bloque del condicional y por lo tanto se ejecute.

*Es muy importante destacar que muchas veces damos tabulador o espacios
accidentalmente y esto hace que el intérprete nos mande error, por lo que debes de
verificar cualquier espacio indeseable.

53
Ejemplo de condiciones

⊳ Obtener el mayor de dos números ingresados por el usuario


▸ numeroUno=int(input(“Primer valor: “))
▸ numeroDos=int(input(“Segundo valor.”))
▸ if numeroUno > numeroDos :
▸ print(“¡El primer número es mayor que el segundo!)
If numeroDos > numeroUno :
print(“¡El segundo número es mayor que el primero!”)

*Observe nuevamente la alineación


54
Ejercicio 9.1
Realizar el siguientes programas
⊳ Escriba un programa que pida el salario de un empleado y calcule el varlor
del aumento. Para salarios superiores a $20,000.00, calcule un aumento
del 10% y para salarios inferiores o iguales un aumento del 15%.

55
else

⊳ Cuando tenemos condiciones en las que simplemente la


respuesta puede ser la opuesta a la anterior ocupamos else.
If <condición> :
sentencia que cumple con la condición
else:
sentencia que no cumple con la condición

56
Ejercicio 9.2
Realizar el siguiente programa
⊳ Escriba un programa que pida el salario de un empleado y calcule el varlor
del aumento. Para salarios superiores a $20,000.00, calcule un aumento
del 10% y para salarios inferiores o iguales un aumento del 15%.
⊳ Para este ejemplo utilizar else

57
elif

⊳ Si tenemos múltiples selecciones para elegir, podemos utilizar elif.


▸ categoria=int(input(“Digite la categoría del producto: ”))
▸ if categoria == 1:
precio = 10
▸ elif categoria == 2:
precio = 15
▸ elif categoria == 3:
precio = 18
else:
print(“Valor de categoría inválido, seleccionar entre 1 y 3”)
precio=0
print(“El precio del producto es: $%2.2f” %precio)
58
Ejercicio 10
Realizar el siguiente programa
⊳ Realice un programa que lea dos números y pregunte una de las cuatro
operaciones básicas que desea realizar y efectuarla. Mostrar el resultado.

59
Estructuras de repetición

⊳ while <condición>:
▸ Bloque

⊳ Haciendo uso de contadores podemos utilizar la


estructura while para incrementar un valor entre cada
ciclo.

60
Ejemplo de incremento de un número

⊳ x=1
⊳ while x<=4:
▸ print(x)

▸ x=x+1

61
Ejemplo de incremento de un número
ingresado por el usuario

⊳ fin= int(input(“Digite el último número a imprimir:”))


⊳ x=0
⊳ while x<=fin:
▸ print(x)

▸ x=x+2

⊳ El código anterior imprime números pares hasta


donde indique el usuario 62
Ejercicio 11
Realizar el siguiente programa
⊳ Modificar el programa del contador para que muestre un incremento del
20 al 50.
⊳ Haga un programa que cuente los últimos 10 segundos del año viejo.
Debe mostrar 10, 9, 8, 7, …,1 Felíz 2020.
⊳ Realizar un programa que imprima todos los número impares hasta
donde indique el usuario.

63
Acumuladores

⊳ No se trata de ningún concepto exclusivo de Python


pero sí de una estrategia de programación.
⊳ El clásico ejemplo es realizar un programa para
calcular el promedio de calificaciones de un alumno.

64
Calculando promedio de calificaciones

⊳ totMaterias=int(input(“Ingrese el número de materias a promediar”))


⊳ n=1
⊳ sum=0
⊳ while n <=totMaterias:
▸ calif=int(input(“Ingrese la calificación de la materia “))
▸ sum=sum+calif
▸ n+=1
⊳ promedio=sum/totMaterias
⊳ print(“El promedio es de %1.1f” %promedio)
65
Interrupción de la repetición

⊳ Si necesitamos que una repetición rompa con el ciclo


antes de que se cumpla la condición principal
ocupamos break.

66
Interrupción de la repetición con
ejemplo

⊳ suma=0
⊳ while True:
▸ valor=int(input(“Digite un número a sumar o 0 para salir”))
▸ If v == 0 :
▸ break

▸ suma=suma+valor
⊳ print(suma)
67
3 Uso de funciones
Funciones

⊳ Son expresiones que requieren de parámetros,


pueden devolver algún valor y son invocadas en
cualquier punto del programa.

69
Declarar una función propia

⊳ def nombre_función(parámetro1, parámetro2, …)


▸ Sentencias a ejecutar

▸ …

▸ <return> valor

70
Ejemplo de una nueva función

⊳ def suma(a,b):
▸ print(a+b)

suma(4,5)
⊳ def suma(a,b):
▸ return a+b

print(suma(5,4))
71
Variables Locales y Globales

⊳ Cuando se ocupan funciones requerimos declarar variables dentro de la


misma función o fuera de ella. La diferencia es la visibilidad y objetivo.
⊳ Una variable Local es aquella que se declara dentro de la misma función
y solamente es accesible de manera interna. Ninguna otra función
podrá hacer uso de esa variable local.
⊳ Una variable global es declarada dentro de un módulo y será accesible
desde cualquier punto del programa así como de otras funciones
declaradas.

72
Ejemplo:

⊳ Empresa=“ La programación es mi pasión ”


⊳ def imprime_eslogan( )
▸ print(Empresa)

▸ print(“-” * len(Empresa))

⊳ Se observa que Empresa es una variable global


porque no fue declarada dentro de una función 73
Variables Locales

⊳ Las variables locales solamente son accesibles desde


la misma función.
⊳ def intentaModificarFuera( ):
▸ varLocal=“Estoy dentro”

print(“ %s ” %varLocal)
Este código no se ejecutará 74
Listas

⊳ Las listas son un tipo de variable que permite el


almacenamiento de varios valores, a los que se accede
a través de un índice. Un lista puede contener cero o
más elementos de un mismo tipo o de tipos diversos,
pudiendo inclusive contener otras listas. El tamaño de
una lista es igual a la cantidad de elementos que ella
contiene.
75
Crear y accesar a Listas

⊳ Lista=[ ] #Es una lista vacía


⊳ Lista3=[10 ,20, 30] # Es una lista de tres elementos
⊳ >>> Lista3[0]
⊳ 10

76
Modificar a una lista

⊳ >>>Lista=[20,11,30]
⊳ >>>Lista[1]=-1
⊳ Lista
⊳ [20, -1, 30]

77
Ejemplo de calculo del promedio

⊳ Calificaciones= [10,9,8,7,9]
⊳ suma=0
⊳ cont=0
⊳ while cont < 5:
▸ …

78
Copiar y dividir listas

⊳ Lista1=[1,2,3,4]
⊳ Lista2=Lista1
⊳ Lista2[1]=10
⊳ >>>Lista1
⊳ [1 ,10 ,3 ,4]
⊳ >>>Lista2
⊳ [1 ,10 ,3 ,4]
79
Copia sin referencia

⊳ Lista1=[1,2,3,4]
⊳ Lista2=Lista1[:]
⊳ Lista2[0]=10
⊳ print(Lista1)
⊳ print(Lista2)

80
Dividiendo una lista
⊳ Lista=[1,2,3,4,5]
⊳ print(Lista[0:5])
▸ [1, 2, 3, 4, 5]
⊳ print(Lista[:5])
▸ [1, 2, 3, 4, 5]

⊳ print(Lista[1:3])
⊳ print(Lista[1:4])
⊳ print(Lista[3:])
⊳ print(Lista[:3])
⊳ print(Lista[-1])
⊳ print(Lista[-2])

81
Impresión de los elementos de una
Lista con for

⊳ Lista=[ 22, 15, 14]


⊳ for elemento in Lista:
▸ print(elemento)

82
Utilizando a for como contador

⊳ for i in range(10) :
▸ print( i )

⊳ range toma valores desde 0 hasta n-1. También


puede ser utlizado para intervalos range(4,9) o con
saltos range(4,20,3)

83
4 Error y Aproximación
Concepto de error

Definición ¿Cómo utilizar el


concepto?
Un error es la diferencia El criterio mencionado para
entre el valor verdadero y obtener la aproximación se
basa en la magnitud del
el obtenido por la error.
aproximación.

85
Obtención del error

Error Absoluto
Se define como el valor absoluto de la diferencia del valor
verdadero menos el valor aproximado.
𝐸𝑟𝑟𝑜𝑟 𝑎𝑏𝑠𝑜𝑙𝑢𝑡𝑜 = |𝑉𝑎𝑙𝑜𝑟 𝑟𝑒𝑎𝑙 – 𝑉𝑎𝑙𝑜𝑟 𝑎𝑝𝑟𝑜𝑥𝑖𝑚𝑎𝑑𝑜|

86
Obtención del error

Error Relativo
Se define como la relación del error absoluto con el valor real
𝐸𝑟𝑟𝑜𝑟 𝐴𝑏𝑠𝑜𝑙𝑢𝑡𝑜
𝐸𝑟𝑟𝑜𝑟 𝑅𝑒𝑙𝑎𝑡𝑖𝑣𝑜 =
𝑉𝑎𝑙𝑜𝑟 𝑅𝑒𝑎𝑙
𝐸𝑟𝑟𝑜𝑟 𝐴𝑏𝑠𝑜𝑙𝑢𝑡𝑜
𝐸𝑟𝑟𝑜𝑟 𝑅𝑒𝑙𝑎𝑡𝑖𝑣𝑜 𝑃𝑜𝑟𝑐𝑒𝑛𝑡𝑢𝑎𝑙 = 𝑥100
𝑉𝑎𝑙𝑜𝑟 𝑅𝑒𝑎𝑙
87
Ejemplo de obtención del error

Ejemplo:
Calcular el valor de la constante de Euler 𝑒 mediante la siguiente
expresión

𝟏
𝒆=෍
𝒏!
𝒏=𝟎
para el primero, segundo, tercero, cuarto y quinto término de la
serie. Tomar como valor verdadero 2.71828. 88
Aproximaciones
Primer término
𝟎
𝟏 𝟏
𝒆=෍ = =𝟏
𝒏! 𝟎!
𝒏=𝟎

Cálculo del Error tomando seis cifras significativas

Error Absoluto =|2.71828 -1| = 1.71828

1.71828
Error Relativo = = 0.63212
2.71828

Error Relativo Porcentual= 63.212 % 89


Aproximaciones
Segundo término
𝟏
𝟏 𝟏 𝟏
𝒆=෍ = + =𝟐
𝒏! 𝟎! 𝟏
𝒏=𝟎

Cálculo del Error tomando seis cifras significativas

Error Absoluto =|2.71828 -2| = 0.71828

0.71828
Error Relativo = = 0.26424
2.71828

90
Error Relativo Porcentual= 26.42%
Aproximaciones

Valor Conclusiones del ejemplo


real 2.71828
Error Al utilizar más terminos de la serie
Término e Absoluto ERP
0 1.00000 1.71828 63.21
se puede observar que cada cálculo
1 2.00000 0.71828 26.42 se acerca más al valor verdadero.
2 2.50000 0.21828 8.03
3 2.66667 0.05161 1.90 ¿Podemos decir que nuestra
4 2.70833 0.00995 0.37
metodología para obtener cada
valor es la correcta? 91
Ejercicio 12
Realizar el siguiente programa
⊳ Un astrónomo requiere calcular la velocidad aerolar de la tierra y asegura
que un año es igual a 𝜋𝑥107 segundos. ¿Cuál es el error absoluto y
relativo de esta afirmación?

92
Convergencia y estabilidad

Método Iterativo
Llamaremos método iterativo a aquel que toma Conclusiones del ejemplo
como referencia a valores previamente obtenidos.
Al tomar como referencia el
1. e1=e0+ 1.0000=2.00000
resultado anterior se puede
2. e2=e1+ =0.500000=2.50000
acercar al resultado de una
3. e3=e2+ .166667=2.66667
4. e4=e3+ .041667=2.70833
manera mucho más rápida
Donde e0, e1, e2, e3, e4 son los respectivos valores del
número e aproximados para cada término de la
93
serie.
Convergencia de un método numérico

⊳ Es la garantía de que al realizar un


determinado número de iteraciones se La expresión para obtener convergencia sería
acerque más al valor buscado la siguiente:
⊳ Existirá convergencia de un método
|X0 – X1 |> |X1 – X2| > … > |Xn-1 – Xn|
numérico siempre que obtengamos un
error absoluto menor al anterior de cada Definición 1.3 pag. 3 Burden
iteración.
⊳ Menos iteraciones implica mayor rapidez
de convergencia

94
Estabilidad de un método numérico

Ejemplo de convergencia y
⊳ Un método será estable estabilidad

si su comportamiento
en cuanto al error es
lineal. Lo que implica
que hay una mayor
garantía de que exista
una convergencia
95
Métodos cerrados para obtención de
raíces
⊳ Los métodos empleados en este
tema tienen el objetivo de
obtener las raíces de funciones
que no pueden ser resueltas de
manera algebraica.
⊳ f(x)=0

96
Método de Bisección

1. Consiste en evaluar dos puntos de la función y verificar si


existe cambio de signo. También se compara la diferencia
del intervalo con la tolerancia.
2. Si existe cambio se procede a calcular el punto medio
entre ambos puntos.
3. Se evalúa de nuevo la función para los dos nuevos
intervalos y se elige el que tenga cambio de signo.
4. Regresar al punto uno hasta que se obtenga un error
menor o igual a la tolerancia.

97
Expresión del método de bisección

𝑎+𝑏
⊳ 𝑐=
2
⊳ Si existe cambio de signo entre el nuevo
intervalo f(a) y f(c) o f(b) y f(c) se elige
nuevamente el límite superior o inferior
dependiendo el caso.

98
Ejemplo:

Obtener una raíz positiva para la siguiente función


𝑓 𝑥 = 𝑥3 − 𝑥 − 1
Puede tomar como intervalo inicial [1,3]

99
Solución

Tolerancia de 0.1
Ite a b c f(a) f(b) f(c) tol
1 1 3 2 -1 23 5 2
2 1 2 1.5 -1 5 0.875 1
3 1 1.5 1.25 -1 0.875 -0.297 0.5
-
4 1.25 1.5 1.375 0.297 0.875 0.225 0.25
-
5 1.25 1.375 1.313 0.297 0.225 -0.0515 0.125
-
6 1.3125 1.375 1.344 0.051 0.225 0.0826 0.062

Raíz 1.3438

100
Método de interpolación (regla falsa)

⊳ El problema con el método de bisección es


que no considera la distancia de los
puntos a la raíz.
⊳ Por lo que el método de interpolación
propone crear una recta secante entre dos
puntos que pertenezcan a la función
⊳ A partir de la pendiente de la recta se
obtiene la expresión para evaluar la
función. 101
Expresión del método de interpolación

⊳ Si se hace la demostración, relacionando


triángulos semejantes se obtiene:
𝑓(𝑥𝑏 ) 𝑓(𝑥𝑎 )
=
𝑥𝑏 − 𝑥𝑐 𝑥𝑎 − 𝑥𝑐
⊳ Realizando una simplificación para disminuir el
total de operaciones se obtiene:
𝑓(𝑥𝑏 )(𝑥𝑎 − 𝑥𝑏 )
𝑥𝑐 = 𝑥𝑏 −
𝑓 𝑥𝑎 − 𝑓(𝑥𝑏 ) 102
Ejercicio

⊳ Obtener una raíz negativa de la siguiente


ecuación, por medio del método de la regla
falsa.
𝑓 𝑥 = 𝑥 3 + 3𝑥 2 − 1

103
Métodos abiertos para obtención de
raíces (Newton-Rapson)

⊳ Método abierto para obtener


la raíz de una función
continua, utilizando como
criterio la primera derivada.

𝑓(𝑥𝑖 )
𝑥𝑖+1 = 𝑥𝑖 −
𝑓′(𝑥𝑖 )

104
Criterio de convergencia de
Newton-Rapson

⊳ La tolerancia se compara con el Error absoluto


entre el valor de la iteración obtenida y la
anterior.
𝐸𝑎 = |𝑥𝑖 − 𝑥𝑖+1 |
⊳ La convergencia del método de Newton-
Rapson depende de la existencia de la
derivada y del intervalo continuo.
105
Ejercicio:

⊳ Obtener la raíz de la siguiente función:


𝑓 𝑥 = 𝑒 −𝑥 − 𝑥

106
Solución

Ite xi xi1 ea
1 0.5 0.5 0.5
2 0.566311 0.566311 0.066311
3 0.567143 0.567143 0.000832
4 0.567143 0.567143 1.25E-07
Raiz encontrada 0.567143

107
Resolución de sistemas de ecuaciones
⊳ En ingeniería existen diversos problemas que se pueden resolver con sistemas
de ecuaciones de tipo algebraico.
⊳ Un sistema de ecuaciones lineal tiene la siguiente forma:

𝑎11 𝑥1 + 𝑎12 𝑥2 + 𝑎13 𝑥3 + ⋯ + 𝑎1𝑛 𝑥𝑛 = 𝑏1


𝑎21 𝑥1 + 𝑎22 𝑥2 + 𝑎23 𝑥3 + ⋯ + 𝑎2𝑛 𝑥𝑛 = 𝑏2
𝑎31 𝑥1 + 𝑎32 𝑥2 + 𝑎33 𝑥3 + ⋯ + 𝑎3𝑛 𝑥𝑛 = 𝑏3
⋮ ⋮ ⋮ ⋮ ⋮
𝑎𝑛1 𝑥1 + 𝑎𝑛2 𝑥2 + 𝑎𝑛3 𝑥3 + ⋯ + 𝑎𝑛𝑛 𝑥𝑛 = 𝑏𝑛

𝑎11 𝑎12 𝑎13 ⋯ 𝑎1𝑛 𝑥1 𝑏1


𝑎21 𝑎22 𝑎23 ⋯ 𝑎2𝑛 𝑥2 𝑏2
⊳ También de forma matricial: 𝑎31 𝑎32 𝑎33 ⋯ 𝑎3𝑛 𝑥3 = 𝑏3
⋮ ⋮ ⋮ ⋮ ⋮ ⋮
𝑎𝑛1 𝑎𝑛2 𝑎𝑛3 ⋯ 𝑎𝑛𝑛 𝑥𝑛 𝑏𝑛 108
Tipos de sistemas de ecuaciones

⊳ Compatible Determinado
⊳ Compatible Indeterminado
⊳ Incompatible

109
Uso de la librería numpy

⊳ numpy es una librería que contiene diversas funciones


para manipular matrices.
⊳ numpy.zeros((n,n)) #crea una matriz de ceros de
tamaño nxn
⊳ numpy.matrix([[10,1,3],[1,-10,3],[12,5,40]])#crea una
matriz de 3x3 con sus posiciones respectivas.
110
Método de Jacobi

⊳ Dado un sistema de ecuaciones representado en su


forma matricial por:
𝐴𝑥ҧ = 𝑏ത
⊳ La matriz A se puede descomponer como:
𝐴=𝐷+𝑅
Donde D es una matriz diagonal que contiene los mismos
elementos de la diagonal de A y R es una matriz de ceros en
su diagonal principal y el resto de elementos son de la
matriz A.
111
Desarrollo del método de Jacobi

𝐷 + 𝑅 𝑥ҧ = 𝑏ത
𝐷𝑥ҧ + 𝑅𝑥ҧ = 𝑏ത
𝐷𝑥ҧ = 𝑏ത − 𝑅𝑥ҧ
𝑥ҧ = 𝐷−1 𝑏ത − 𝐷−1 𝑅𝑥ҧ
Si para la expresión anterior indicamos 𝑥ҧ 𝑘+1 y 𝑥ҧ 𝑘
se obtiene la ecuación matricial de recurrencia:
𝑥ҧ 𝑘+1 = 𝐷 −1 𝑏ത − 𝐷 −1 𝑅𝑥ҧ 𝑘
112
Solución aproximada por Jacobi

1
𝑥1𝑘+1 = (𝑏1 −𝑎12 𝑥2𝑘 − 𝑎13 𝑥3𝑘 − ⋯ − −𝑎1𝑛 𝑥𝑛𝑘 )
𝑎11
1
𝑥2𝑘+1 = (𝑏2 −𝑎21 𝑥1𝑘 − 𝑎23 𝑥3𝑘 − ⋯ − −𝑎2𝑛 𝑥𝑛𝑘 )
𝑎22

1
𝑥𝑛𝑘+1 = (𝑏𝑛 −𝑎𝑛1 𝑥1𝑘 − 𝑎𝑛2 𝑥2𝑘 − ⋯ − −𝑎𝑛𝑛−1 𝑥𝑛−1
𝑘
)
𝑎𝑛𝑛
113
Convergencia

⊳ Para comparar una tolerancia previamente


establecida se calcula:
𝐸𝑎 = 𝑥1𝑘+1 − 𝑥1𝑘 < 𝑡𝑜𝑙

114
Vector inicial

⊳ El vector inicial para 𝑥ҧ 𝑘 si se considera que


todos sus elementos son nulos y sustituimos
en la ecuación de recurrencia entonces el
vector inicial es :
𝑏1 𝑏2 𝑏3 𝑏𝑛
𝑥ҧ 1 =[ , , ,…, ]
𝑎11 𝑎22 𝑎33 𝑎𝑛𝑛

115
Ejercicio:

⊳ Obtener la solución del siguiente sistema por


Jacobi:
3𝑥1 + 𝑥2 + 𝑥3 = 19
2𝑥1 + 3𝑥2 − 𝑥3 = 18
𝑥1 − 𝑥2 + 4𝑥3 = 6

116
Ecuación Diferencial

⊳ Toda ecuación con la siguiente expresión


𝑓 𝑥, 𝑦, 𝑦 ′ , 𝑦 ′′ , … , 𝑦 𝑛 =0
que relacione una variable independiente con la variable
dependiente y n derivadas dependientes.

117
Ejemplo de expresión de una ecuación
diferencial
𝑑𝑦
= 2𝑥
𝑑𝑥
Se requiere obtener a 𝑦 que relaciona con 𝑦 de la
ecuación anterior
𝑑𝑦 = 2𝑥𝑑𝑥

න 𝑑𝑦 = න 2𝑥 𝑑𝑥

𝑦 = 𝑥2 + 𝑐 118
Interpretación geométrica de la
solución
⊳ Lo anterior implica que podemos tener una familia de
soluciones

119
Solución única de una ecuación
diferencial
⊳ Para obtener la solución única de una ecuación diferencial
debemos tener al menos un punto de la curva solución para
garantizar que es la que buscamos.
⊳ Para el tema que abordaremos en análisis numérico siempre
debemos tener condiciones iniciales.

120
Método de Euler para orden 1

⊳ El método de Euler consiste en


ocupar la interpretación
geométrica de la derivada que
es la pendiente de la tangente
en un punto a la curva.
▰ Definimos 𝑥𝑛+1 − 𝑥0
ℎ=
𝑛
𝑑𝑦
𝑦′ = = 𝐹 𝑥, 𝑦
𝑑𝑥
∆𝑦 𝑦𝑖+1 − 𝑦𝑖 𝑦𝑖+1 − 𝑦𝑖
𝐹 𝑥, 𝑦 = = =
∆𝑥 𝑥𝑖+1 − 𝑥𝑖 ℎ

121
Despejando

⊳ Se despeja 𝑦𝑖+1 en la expresión de la derivada


y se obtiene
𝑦𝑖+1 = 𝑦𝑖 + ℎ𝐹(𝑥, 𝑦)

122
Ejemplo:

⊳ Dada la siguiente ecuación diferencial


𝑦 ′ = 2𝑦 + 4𝑥 + 2
Obtener los puntos de la curva solución si 𝑦 0 = 1 y
h=1 en el intervalo de 0 a 5

123
Solución

⊳ Dado que ya contamos con el valor de h y la


condición inicial, directamente aplicamos Euler
𝑦1 = 1 + 1 2 1 + 4 0 + 2 = 5
𝑦2 = 5 + 1 2 5 + 4 1 + 2 = 21
𝑦3 = 21 + 1 2 21 + 4 2 + 2 = 73
𝑦4 = 73 + 1 2 73 + 4 3 + 2 = 233
𝑦5 = 233 + 1 2 233 + 4 4 + 2 = 717
𝑦6 = 717 + 1 2 717 + 4 5 + 2 = 2123
124
Método Mejorado de Euler

⊳ Consiste en promediar las pendientes


sucesivas para mejorar la aproximación

𝑦𝑖+1 = 𝑦𝑖 + 𝑚1 + 𝑚2
2
𝑚1 = 𝐹 𝑥0 , 𝑦0
𝑚2 = 𝐹(𝑥𝑖 + ℎ, 𝑦𝑖 + ℎ𝑚1 )

125
Ejemplo:

⊳ Dada la siguiente ecuación diferencial


𝑦 ′ = 2𝑦 + 4𝑥 + 2
Obtener los puntos de la curva solución si 𝑦 0 = 1 y
h=0.2 en el intervalo de 0 a 1

126
Solución: Primera iteración

𝑥0 = 0
𝑥1 = 0.2
𝑚1 = 𝐹 𝑥𝑖 , 𝑦𝑖 = 2 1 + 4 0 + 2 = 4
𝑢 = 𝑦𝑖 + ℎ𝑚1 = 1 + 0.2 4 = 1.8
𝑚2 = 𝐹 𝑥𝑖+1 , 𝑢 = 2 1.8 + 4 0.2 + 2 = 6.4
𝑦1 = 1 + 0.2 0.5 6.4 + 4 = 2.04

127
Solución: Segunda iteración

𝑥1 = 0.2
𝑥2 = 0.4
𝑚1 = 𝐹 𝑥𝑖 , 𝑦𝑖 = 2 2.04 + 4 0.2 + 2 = 6.88
𝑢 = 𝑦𝑖 + ℎ𝑚1 = 2.04 + 0.2 6.88 = 3.416
𝑚2 = 𝐹 𝑥𝑖+1 , 𝑢 = 2 3.416 + 4 0.4 + 2 = 10.432
𝑦2 = 2.04 + 0.2 0.5 6.88 + 10.432 = 3.7712

128
Tabulación de Resultados

x y

0 1

0.2 2.04

0.4 3.771

0.6 6.525

0.8 10.794

1 17.302

129
Gracias por tu
interés

También podría gustarte