Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ingeniero
¿Qué es un ingeniero?
¿Qué es la ingeniería?
La ingeniería
Pensamiento de ingeniero
Describe el problema
Usa la solución
¿Qué es un ingeniero?
RAE (De ingenio, máquina o artificio).
Persona que profesa la ingeniería o alguna de sus ramas.
¿Qué es la ingeniería?
Es el conjunto de conocimientos y técnicas científicas aplicadas a la creación,
perfeccionamiento e implementación de estructuras (tanto físicas como teóricas) para
la resolución de problemas que afectan la actividad cotidiana de la sociedad. Para
ella, el estudio, conocimiento, manejo y dominio de las matemáticas, la física y otras
ciencias es aplicado profesionalmente tanto para el desarrollo de tecnologías, como
para el manejo eficiente de recursos y/o fuerzas de la naturaleza en beneficio de la
sociedad.
La ingeniería
Es la actividad de transformar el conocimiento en algo práctico.
Pensamiento de ingeniero
• Describe el problema.
https://www.notion.so/Ingeniero-35e1224847dd44978a7eda9ba9db4b3c#ff160fb1b7454342af1244441b918a41 1/4
4/2/2021 Ingeniero
• Usa la solución.
Describe el problema
Es necesario entender plenamente cuál es el problema a resolver, en este caso se debe
conocer la cantidad de malla de acero la cual se vende por cm2 , en vista que la piedra
es un recurso que se puede tomar del mismo lugar. Se sabe que las dimensiones del
gavión son:
• Alto: 1m
• Ancho: 1m
• Largo: 2.58m
https://www.notion.so/Ingeniero-35e1224847dd44978a7eda9ba9db4b3c#ff160fb1b7454342af1244441b918a41 2/4
4/2/2021 Ingeniero
A = 2a2 + 4ab
• a = 100cm
• b = 258cm
Calcular el área:
A = 123200cm2
Usa la solución
Se usarán 123200cm2 de malla de acero para cada gavión.
https://www.notion.so/Ingeniero-35e1224847dd44978a7eda9ba9db4b3c#ff160fb1b7454342af1244441b918a41 3/4
4/2/2021 Métodos para resolver problemas
Métodos gráficos
Uso de calculadoras
Uso de computadoras
Métodos gráficos
Consiste en crear una gráfica de la función y encontrar en la gráfica la solución, para
ello se puede usar diferentes métodos apoyados por compuradora:
https://www.notion.so/M-todos-para-resolver-problemas-5118416d0a7f4a639b72d686a776bc0a 1/4
4/2/2021 Métodos para resolver problemas
• Pitón
Colaboratorio de Google
https://colab.research.google.com/drive/1ADostc7NU…
Si bien se puede obtener la gráfica de manera rápida, solo es útil para problemas que
tienen representaciones bidimensionales (2D) o tridimensionales (3D) para casos
donde se tienen más variables resultantes poco útiles, además de la exactitud de
resultado, si se desea una mayor cantidad de decimales es necesario volver a generar
la gráfica.
Uso de calculadoras
Las calculadoras ayudan en la realización de las operaciones matemáticas y han
permitido resolver los problemas de una mejor manera, ayudan con las operaciones
pero el trabajo sigue siendo manual, es necesario usar papel y lápiz trasladar los datos
y resultados entre el papel y la calculadora lo que puede generar problemas en la
transcripción y en el redondeo.
Uso de computadoras
Las computadoras son las principales herramientas de la ingeniería moderna, para
resolver problemas matemáticos con ellas se usan los Métodos Numéricos .
https://www.notion.so/M-todos-para-resolver-problemas-5118416d0a7f4a639b72d686a776bc0a 2/4
4/2/2021 Métodos para resolver problemas
Los Métodos Numéricos hijo Técnicas Que permiten Concurso Formulario Y Resolver
Problemas con Matematicos Usando OPERACIONES solitario aritméticas , es factible
de ninguna Hacen Uso del álgebra para resolver los Problemas, lo Cual Es Una ventaja
f Porque las OPERACIONES aritméticas Sencillas hijo, Pero implican la ONU gran
volumen de tediosos Cálculos . Realizar cálculos de manera manual y con la ayuda
de un cálculo resultan poco prácticos pues para resolver un problema es necesario
realizar millas de operaciones, para que los Métodos Numéricos sean aplicables es
necesario usar o construir programas que los implementen y sea la computadora la
que realiza el trabajo. Los Métodos Numéricos no tienen sentido ni valor sin el uso
de la programación y la computadora .
Los problemas que se pueden resolver son:
1 . Raíces.
2 . Sistemas de ecuaciones.
3 . Optimización.
4 . Ajuste de datos.
5 . Derivación
6 . Integración.
7 . Ecuaciones diferenciales.
Métodos numéricos se relacionan con la ingeniería de las siguientes maneras:
• Usar mejor las computadoras. Los métodos numéricos permiten obtener todo el
potencial de las computadoras, ayudando a resolver problemas cada vez más
complejos en menor y alta calidad.
https://www.notion.so/M-todos-para-resolver-problemas-5118416d0a7f4a639b72d686a776bc0a 3/4
4/2/2021 Error en la ingeniería
Error en la ingeniería
Cifras significativas
Exactitud y Precisión
Error verdadero
Error relativo
Error de redondeo
Teorema de Taylor
Si bien los Métodos Numéricos son muy prometedores al solo usar operaciones
aritméticas no son perfectos, los métodos numéricos dan soluciones aproximadas y
es necesario medir el error.
Cifras significativas
Son las cifras que dan confiabilidad a un valor numérico. Depende de instrumento con
el que se mide.
https://www.notion.so/Error-en-la-ingenier-a-5cc4e131cdb147ba9d446156fcfaf052 1/6
4/2/2021 Error en la ingeniería
El flexometro puede medir hasta 1mm por otro lado el distanciómetro también
puede medir hasta 1mm ambos instrumentos tienen la misma cantidad de cifras
significativas, es decir una milésima de metro.
La cantidad de cifras significativas se debe elegir de acuerdo al trabajo que se esta
realizando, en el caso de la construcción no sería útil una medida más pequeña.
Exactitud y Precisión
• Exactitud: Cercanía del valor
exacto y del valor calculado. Para
determinar la exactitud es
necesario conocer el valor
verdadero previamente. Para una
problema conocido se puede
resolver con álgebra y comprar con
el resultado obtenido por el
método, si son cercanos el método
es exacto.
Error verdadero
EV = VA − VV
https://www.notion.so/Error-en-la-ingenier-a-5cc4e131cdb147ba9d446156fcfaf052 2/6
4/2/2021 Error en la ingeniería
Error relativo
ErrorV erdadero
ErrorRealtivo =
V alorV erdadero
EV
ER =
VV
El error relativo subsana la falta de contexto del error verdadero, cualquier valor
cercano a cero será un bien error.
ε = ER ∗ 100%
Error de redondeo
La computadora no puede guardar un número infinito de cifras, por lo tanto los
números son truncados y redondeados. El número más pequeño que se puede
representar depende de varios factores:
• Software, como ser los lenguajes de programación pueden tener bibliotecas que
permitan usar varios bloques de memoria para almacenar un número
aumentando la cantidad de cifras significativas.
https://www.notion.so/Error-en-la-ingenier-a-5cc4e131cdb147ba9d446156fcfaf052 3/6
4/2/2021 Error en la ingeniería
Google Colaboratory
https://colab.research.google.com/drive/1zCpwj-Wiflxjmk…
Teorema de Taylor
Consiste en encontrar el siguiente valor de una función, es decir, f(xi+1 ). A partir del
punto anterior f(xi ) y sus derivadas.
Si xi+1 es muy cercano a xi entonces:
f(xi+1 ) ≅ f(xi )
• Grado 1:
• Grado 2:
f ′′ (xi )
f(xi+1 ) ≅ f(xi ) + f ′ (xi )(xi+1 − xi ) + (xi+1 − xi )2
2!
• Grado 3:
′ f ′′ (xi )
f(xi+1 ) ≅ f(xi ) + f (xi )(xi+1 − xi ) + (xi+1 − xi )2 +
2!
′′′
f (xi )
(xi+1 − xi )3
3!
https://www.notion.so/Error-en-la-ingenier-a-5cc4e131cdb147ba9d446156fcfaf052 4/6
4/2/2021 Error en la ingeniería
• Grado n:
′ f ′′ (xi )
f(xi+1 ) = f(xi ) + f (xi )(xi+1 − xi ) + (xi+1 − xi )2 +
2!
f (n) (xi )
…+ (xi+1 − xi )n + Rn
n!
f (n+1) (ξ)
Rn = (xi+1 − xi )n+1
(n + 1)!
ξ = xi
f(xi+1 ) = f(xi ) +
n
f (j) (xi )
∑ (xi+1 − xi )j +
j=1
j!
Rn (xi )
Rn (xi ) =
f (n+1) (xi )
(xi+1 − xi )n+1
(n + 1)!
https://www.notion.so/Error-en-la-ingenier-a-5cc4e131cdb147ba9d446156fcfaf052 5/6
4/2/2021 2.1 Introducción
2.1 Introducción
Raíces
Métodos brutos
Raíces
Al momento de resolver una ecuación de una incógnita es necesario encontrar la raíz,
la raíz es un valor para la incógnita que garantiza la igualdad. Si se desea resolver la
ecuación x + log(x) = 5, es necesario encontrar un valor para x que de 5 = 5 o
escrito de otra manera x debe dar cero después de evaluar la ecuación: x +
log(x) − 5 = 0.
De manera general la raíz es un valor para x donde se cumple que f(x) = 0.
Para encontrar la raíz se pueden usar tres grandes grupos de métodos:
Métodos brutos.
Métodos de intervalos.
Métodos abiertos.
Métodos brutos
Son métodos que no se recomiendan debido a que no siguen ninguna estrategia,
hacen uso del poder bruto de las computadoras:
https://www.notion.so/2-1-Introducci-n-7ce40ea77d2a43d8b8b5f3aebcce6694 1/2
4/2/2021 2.2 Métodos de intervalos
Ejemplo
La gran mayoría de los métodos numéricos necesitan valores de partida para realizar
la búsqueda de la solución a estos valores se les conoce como valores supuestos o
valores iniciales, de estos valores puede depende el tiempo que le tome al método
encontrar la solución.
Consiste en encontrar el intervalo donde se encuentra la raíz y buscarla dentro del
mismo, esto garantiza que la solución se va encontrar. Los valores iniciales son dos
valores para x que forman el segmento de la raíz, dichos valores son x0 y x1 .
Es necesario verificar que los valores iniciales x0 y x1 contienen a la raíz de la función
f(x).
En el Caso 1, puede hacer clic sobre la imagen para verla mejor, los dos valores están
antes que la raíz, f(x0 ) y f(x1 ) son del mismo signo, negativos. En el Caso 2, los dos
valores contiene a la raíz, f(x0 ) y f(x1 ) son de signo diferente. En el Caso 3, los dos
valores están después que la raíz, f(x0 ) y f(x1 ) son del mismo signo, positivos.
El caso deseado es el Caso 2, matemáticamente se puede determinar si f(x0 ) y
f(x1 ) son de signo diferente si se calcula su producto, si f(x0 ) ∗ f(x1 ) < 0
entonces son de signo diferente, caso contrario son del mismo signo.
Método de Bisección
Consiste el dividir el segmento en dos mitades iguales.
https://www.notion.so/2-2-M-todos-de-intervalos-9825b4549d3b4bf68aea49e374b00218 1/7
4/2/2021 2.2 Métodos de intervalos
x0 + x1
x2 =
2
Se considera a x2 como la raíz de f(x), para verificar que realmente es la raíz debe
cumplir que f(x2 ) ≅ 0. Se ha usado ≅en lugar de = en vista que los Métodos
Numéricos no dan una solución exacta, es necesario determinar un error aceptado, es
decir la cantidad de cifras significativas que se usarán para resolver el problema, si el
error = 0.000001 quiere decir que para aceptar el valor de x2 como raíz es
necesario cumplir que ∣f(x2 )∣ ≤ 0.000001.
Si x2 no es la raíz entonces la raíz se encuentra a la derecha o izquierda de x2 , es decir
que solo es necesario continuar con la búsqueda en una de las mitades, para
determinar en que mitad se encuentra la raíz se usa el mismo criterio para determinar
si x0 y x1 contienen a la raíz.
Si f(x0 ) ∗ f(x2 ) < 0 entonces la raíz se encuentra en el segmento x0 , x2 por lo
tanto se puede descartar el segmento x2 , x1 , para limitar el nuevo segmento a x1 se
le asigna el valor de x2 .
Si f(x2 ) ∗ f(x1 ) < 0 entonces la raíz se encuentra en el segmento x2 , x1 por lo
tanto se puede descartar el segmento x0 , x2 , para limitar el nuevo segmento a x0 se
le asigna el valor de x2 .
Con el nuevo segmento se repite el procedimiento hasta que f(x2 ) ≅ 0.
Ejemplo
Resuelva la siguiente ecuación, con un error = 0.000001:
x + log x = 5
f(x) = x + log x − 5
• x0 = 5
• x1 = 6
Se verifica si x0 , x1 contiene a la raíz:
https://www.notion.so/2-2-M-todos-de-intervalos-9825b4549d3b4bf68aea49e374b00218 2/7
4/2/2021 2.2 Métodos de intervalos
• x0 = 1
• x1 = 6
Se verifica si x0 , x1 contiene a la raíz:
• x0 = 1.0
• x1 = 6.0
• x2 = 3.5
• f(x2 ) = −0.9559319556497243, x2 no es la raíz.
• f(x0 ) ∗ f(x2 ) = −4.0 ∗ −0.9559319556497243, es positivo, la raíz no se
encuentra en x0 , x2 .
• x0 = x2
Iteración 2:
• x0 = 3.5
• x1 = 6.0
• x2 = 4.75
• f(x2 ) = 0.42669360962486635, x2 no es la raíz.
• f(x0 ) ∗ f(x2 ) = −0.9559319556497243 ∗ 0.42669360962486635, es
negativo, la raíz se encuentra en x0 , x2 .
https://www.notion.so/2-2-M-todos-de-intervalos-9825b4549d3b4bf68aea49e374b00218 3/7
4/2/2021 2.2 Métodos de intervalos
• x1 = x2
Iteraciones 3 a la 20:
https://www.notion.so/2-2-M-todos-de-intervalos-9825b4549d3b4bf68aea49e374b00218 4/7
4/2/2021 2.2 Métodos de intervalos
https://www.notion.so/2-2-M-todos-de-intervalos-9825b4549d3b4bf68aea49e374b00218 5/7
4/2/2021 2.2 Métodos de intervalos
Igualando:
−f(x0 ) f(x1 )
=
x2 − x0 x1 − x2
Despejando x2 :
https://www.notion.so/2-2-M-todos-de-intervalos-9825b4549d3b4bf68aea49e374b00218 6/7
4/2/2021 2.3 Métodos abiertos
Método de la Secante
Método de Halley
Programación
Evaluar función
Derivar función
scipy
Encontrar el segmento que contiene la raíz puede ser moroso, los métodos abiertos
no poseen dicha restricción, la desventaja es que no garantizan encontrar la solución.
Método de Newton-Raphson
https://www.notion.so/2-3-M-todos-abiertos-e124d35957794f02abe9f702f35e310d 1/6
4/2/2021 2.3 Métodos abiertos
m = f ′ (x0 )
Δy f(x0 ) − 0
m= = =
Δx x0 − x1
f(x0 )
x0 − x1
Igualando:
f(x0 )
f ′ (x0 ) =
x0 − x1
Despejando x1 :
f(x0 )
x1 = x0 −
f ′ (x0 )
Método de la Secante
https://www.notion.so/2-3-M-todos-abiertos-e124d35957794f02abe9f702f35e310d 2/6
4/2/2021 2.3 Métodos abiertos
La secante es la recta que corta una curva en dos puntos. En algunas ocasiones es
difícil calcular f ′ (x), se puede llegar a una aproximación a la tangente a través de la
secante de la siguiente manera:
f(x1 ) − f(x0 )
f ′ (x1 ) ≅
x1 − x0
x0 y x1 , los valores supuestos, deben ser muy cercanos para que pueden aproximarse
a la tangente.
Reemplazando en la ecuación de Newton-Raphson:
f(x1 )
x2 = x1 −
f(x1 ) − f(x0 )
x1 − x0
Simplificando:
f(x1 )(x1 − x0 )
x2 = x1 −
f(x1 ) − f(x0 )
Método de Halley
Conocido también como el Método de hipérbolas tangentes encuentra la raíz de
manera más rápida, la convergencia del Newton-Raphson es lineal de Halley es
cúbica, es decir la raíz se encuentra con mayor rapidez.
Toma la serie de Taylor segundo grado:
′ f ′′ (xi )
f(xi+1 ) = f(xi ) + f (xi )(xi+1 − xi ) + (xi+1 − xi )2
2!
′ f ′′ (xi )
0 = f(xi ) + f (xi )(xi+1 − xi ) + (xi+1 − xi )2
2!
https://www.notion.so/2-3-M-todos-abiertos-e124d35957794f02abe9f702f35e310d 3/6
4/2/2021 2.3 Métodos abiertos
f ′′ (xi )
0 = f(xi ) + (xi+1 − xi ) [f (xi ) + ′
(xi+1 − xi )]
2!
f(xi )
xi+1 = xi −
f ′′ (xi )
f ′ (xi ) + (xi+1 − xi )
2
f(xi )
xi+1 − xi = −
f ′ (xi )
Reemplazando:
2f(xi )f ′ (xi )
xi+1 = xi − 2
2 [f ′ (xi )] − f(xi )f ′′ (xi )
Programación
Evaluar función
Derivar función
https://www.notion.so/2-3-M-todos-abiertos-e124d35957794f02abe9f702f35e310d 4/6
4/2/2021 2.3 Métodos abiertos
scipy
scipy es una biblioteca que contiene muchas herramientas para el cálculo numérico:
(../index.html)
(../index.html)
https://www.notion.so/2-3-M-todos-abiertos-e124d35957794f02abe9f702f35e310d 5/6
4/2/2021 3.1 Método de Müller
Este método consiste en obtener la parábola que pasa por tres puntos elegidos.
Dichos coeficientes son sustituidos en la formula cuadrática para obtener el valor
donde la parábola intersecta al ejeX; es decir, la raíz estimada. La aproximación se
puede facilitar, si se escribe la ecuación de la parábola en una forma conveniente.
https://www.notion.so/3-1-M-todo-de-M-ller-274432b883084e5b8d07ffc043220ceb 1/5
4/2/2021 3.1 Método de Müller
En el Método de la Secante se usaban dos puntos para trazar una recta, ahora se usan
tres puntos para trazar una parábola y encontrar la raíz. Es recomendable que los
valores supuestos,X0 , X1 y X2 , sean lo más posibles posibles.
Una parábola se define como:
f ( x ) = una x2 + b x + C
f ( x ) = una ( x - X2 )2 + b ( x - X2 ) + C
• h0 = x1 − x0
• h1 = x2 − x1
Definir ρ:
• ρ0 = f(x1 ) − f(x0 )
x1 − x0
https://www.notion.so/3-1-M-todo-de-M-ller-274432b883084e5b8d07ffc043220ceb 2/5
4/2/2021 3.1 Método de Müller
• ρ1 = f(x2 ) − f(x1 )
x2 − x1
Reemplazando h en ρ:
1. f(x1 ) − f(x0 )
ρ0 =
h0
2. f(x2 ) − f(x1 )
ρ1 =
h1
La segunda ecuación se puede escribir así:
f ( x1 ) - f ( x2 ) = una ( h1 )2 - b h1
f ( x1 ) - f ( x2 )
= una h1 - segundo
h1
Reemplazando ρ1 :
- ρ1 = una h1 - segundo
Despejando segundo:
segundo = ρ1 + una h1
h0 + X0 = X2 - h1
Despejando:
X0 - X2 = - h0 - h1
https://www.notion.so/3-1-M-todo-de-M-ller-274432b883084e5b8d07ffc043220ceb 3/5
4/2/2021 3.1 Método de Müller
ρ0 h0 + f ( x0 ) = f ( x2 ) - ρ1 h1
Despejando:
f ( x0 ) - f ( x2 ) = - ρ0 h0 - ρ1 h1
- ρ0 h0 - ρ1 h1 = a ( - h0 - h1 )2 + ( ρ1 + una h1 ) ( - h0 - h1 )
Dividiendo entre - h0 - h1 :
- ρ0 h0 - ρ1 h1
= a ( - h0 - h1 ) + ρ1 + una h1
- h0 - h1
Simplificando:
- ρ0 h0 - ρ1 h1
= - una h0 + ρ1
- h0 - h1
Despejando un:
ρ1 - ρ0
un =
h0 + h1
- 2 tazas
X3 = X2 +
segundo ± segundo2 - 4 a c
https://www.notion.so/3-1-M-todo-de-M-ller-274432b883084e5b8d07ffc043220ceb 4/5
4/2/2021 3.1 Método de Müller
Por el signo ± se entiende que hay dos resultados, solo se usa uno de ellos, se debe
usar el valor que esta entre X2 y la raíz, para determinar este valor matemáticamente
se comparan ∣ b + segundo2 - 4 a c∣ y ∣ b - segundo2 - 4 a c∣; si∣ b +
segundo2 - 4 a c∣ > ∣ b - segundo2 - 4 a c∣ se usa el valor calculado con
segundo + segundo2 - 4 a c, caso contrario con segundo -
segundo2 - 4 a c.
Si no se cumple que F( X3 ) ≅ 0 se repite el procedimiento, cambiando:
• X0 por el valor de X1 (X0 = X1 ).
• X1 por el valor de X2 (X1 = X2 ).
• X2 por el valor de X3 (X2 = X3 ).
https://www.notion.so/3-1-M-todo-de-M-ller-274432b883084e5b8d07ffc043220ceb 5/5
4/2/2021 3.2 Método de Bairstow
Calcular c
Calcular r y s
Los polinomios tiene varias raíces, los métodos anteriores solo calcular una raíz a la
vez, la raíz obtenida depende de los valores iniciales. Si un polinomio tiene raíces
iguales, diferentes valores iniciales calcularan la misma raíz. Una estrategia para
encontrar todas las raíces de un polinomio es la factorización, la regla de Ruffini, como
se ve en la figura, consiste en factorizar el polinomio de gradonorte en el producto de
un polinomio de primer grado por un polinomio de grado norte - 1.
Fnorte ( x ) = F1 ( x ) fn - 1 ( x )
https://www.notion.so/3-2-M-todo-de-Bairstow-d11322f8bd8a494799d70111c59c6902 1/4
4/2/2021 3.2 Método de Bairstow
fn (x)
fn−2 (x) =
f2 (x)
Cociente:
Residuo:
Donde:
f2 (x) = x2 − rx − s
r y s son los valores supuesto, el propósito del método es encontrar estos valores.
Calcular b
Para calcular el vector b, que contiene los coeficientes del cociente y del residuo se
usan las siguientes fórmulas:
• bn = an
• bn−1 = an−1 + rbn
• bi = ai + rbi+1 + sbi+2 (i = n − 2 ⋯ 0)
Generalmente los valores supuestos para r y s no generan un división exacta, cambiar
dichos valores de manera aleatoria no es una buena estrategia, el mejor camino es
minimizar b0 y b1 respecto de r y s:
https://www.notion.so/3-2-M-todo-de-Bairstow-d11322f8bd8a494799d70111c59c6902 2/4
4/2/2021 3.2 Método de Bairstow
• ∂b0 = c1
∂r
• ∂b1
=
∂b0
= c2
∂r ∂s
• ∂b1
= c3
∂s
Calcular c
• cn = bn
• cn−1 = bn−1 + rcn
• ci = bi + rcyo + 1 + s cyo + 2 ( yo = norte - 2 ⋯ 1 )
Calcular r y s
Después de calcular C el sistema queda de la siguiente forma:
• C2 Δ r + C3 Δ s = - b1
• C1 Δ r + C2 Δ s = - b0
Los nuevos valores de r y s se calculan a partir de Δ r y Δ s:
• r =r+Δr
• s=s+Δs
https://www.notion.so/3-2-M-todo-de-Bairstow-d11322f8bd8a494799d70111c59c6902 3/4
4/2/2021 4.1 Regla de Cramer
Definición
Otros sistemas
Introducción
Un sistema de ecuaciones lineal es un conjunto de ecuaciones de primer grado, todas
las ecuaciones son rectas:
⎧
⎪
⎪
un0 0 X0 + un0 1 X1 + ... + un0 n Xnorte = segundo0
⎨
un1 0 X0 + un1 1 X1 + ... + un1 n Xnorte = segundo1
⎪
⎪
⎩
...
unm 0 X0 + unm 1 X1 + ... + unm n Xnorte = segundometro
Para solucionarlo se debe encontrar los valores para X0 , X1 , ... , Xnorte que
satisfagan todas las igualdades al mismo tiempo.
Definición
https://www.notion.so/4-1-Regla-de-Cramer-96b4d862a81f4b3a8f6eb1a880a17aec 1/4
4/2/2021 4.1 Regla de Cramer
una x + b y = mi
{
cx+dy =F
El método busca encontrar ecuaciones que calcular de manera rápida las raíces del
sistema para ello se calcula la determinante de dos matrices:
1 . Matriz de coeficientes del sistema:
[ ]
un segundo
C re
∣mi segundo∣
∣ ∣
∣F re ∣∣ ed-bf
X= ∣ =
∣un segundo∣ una d - b c
∣ ∣
∣C re ∣∣
∣
∣un mi∣
∣ ∣
∣C F ∣ una f - c e
y= ∣ ∣ =
∣un segundo∣ una d - b c
∣ ∣
∣C re ∣∣
∣
• x = ed − bf
ad − bc
• y=
af − ce
ad − bc
https://www.notion.so/4-1-Regla-de-Cramer-96b4d862a81f4b3a8f6eb1a880a17aec 2/4
4/2/2021 4.1 Regla de Cramer
Se pueden calcular las raíces de cualquier sistema con 2 ecuaciones y con 2 incógnitas
de manera rápida, pero solo sirven para este caso.
∣j segundo C ∣
∣ ∣
∣k mi F ∣∣
∣
∣l h yo∣∣
X= ∣ =
∣ un segundo C ∣
∣ ∣
∣ re mi F ∣
∣ ∣
∣gramo h yo∣
∣ ∣
( j e yo + k h c + l b f ) - ( c e l + f h j + yo b k )
( a e i + d h c + g b f ) - ( c e g + f h a + yo b d )
∣ un j C ∣∣
∣
∣ re k F ∣∣
∣
∣gramo l yo∣
y= ∣ ∣ =
∣ un segundo C ∣
∣ ∣
∣ re mi F ∣∣
∣
∣gramo h yo∣∣
∣
( a k yo + d l c + g j f ) - ( c k g + f l a + yo j d )
( a e i + d h c + g b f ) - ( c e g + f h a + yo b d )
∣ un segundo j ∣∣
∣
∣ re mi k ∣∣
∣
∣gramo h l ∣∣
z = ∣∣ ∣=
∣ un segundo C ∣
∣ re mi F ∣∣
∣
∣gramo h yo∣∣
∣
(ae l +d hj +g bk )-(j e g+k ha+l bd )
( a e i + d h c + g b f ) - ( c e g + f h a + yo b d )
Otros sistemas
https://www.notion.so/4-1-Regla-de-Cramer-96b4d862a81f4b3a8f6eb1a880a17aec 3/4
4/2/2021 4.1 Regla de Cramer
Para sistemas más grande resulta muy costoso encontrar las ecuaciones necesarias,
por suerte bibliotecas como numpy permiten calcular la determinante de manera
rápida gracias a la función det :
Array objects
Constants
Routines
linalg.det(a)
Array creation routines
Compute the determinant of an array
Con el cual es muy fácil aplicar la Reglar de Cramer a un sistema de cualquier tamaño.
https://www.notion.so/4-1-Regla-de-Cramer-96b4d862a81f4b3a8f6eb1a880a17aec 4/4
4/2/2021 4.2 Eliminación de Gauss
Ejemplo
Convertir matriz
Definición
La eliminación de Gauss, llamada así debido a Carl Friedrich Gauss, es un algoritmo
del álgebra lineal para determinar las soluciones de un sistema de ecuaciones lineales,
encontrar matrices e inversas. Un sistema de ecuaciones se resuelve por el método de
Gauss cuando se obtienen sus soluciones la reducción del sistema dado a otro
equivalente en el que cada ecuación tiene una incógnita menos que la anterior. El
método de Gauss transforma la matriz de coeficientes en una matriz triangular
superior.
Si bien se pueden aplicar muchas estrategias para la transformación no todas se
pueden programar fácilmente; una estrategia que es fácil de implementar en un
programa consiste en usar la primera fila para convertir todos los elementos de la
primera columna debajo de la diagonal principal en ceros; luego usar la segunda fila
para convertir todos los elementos de la segunda columna debajo de la diagonal
principal en ceros y así sucesivamente hasta convertir la matriz de coeficientes en una
matriz triangular superior, no hay que olvidar que las operaciones deben afectar al
vector de términos independientes para que el sistema se mantenga equivalente.
Ejemplo
Resuelva el siguiente sistema:
⎧
⎪
⎪
6x − 2y + 2z + 4t = 12
⎨
12x − 8y + 6z + 10t = 34
⎪
⎪
⎩
3x − 13y + 9z + 3t = 27
− 6x + 4y + z − 18t = −38
https://www.notion.so/4-2-Eliminaci-n-de-Gauss-43fefb8ac9e14b52952d71403bcc3a02 1/4
4/2/2021 4.2 Eliminación de Gauss
⎡6 −2 2 4 ⎤ ⎡x⎤ ⎡ 12 ⎤
⎢ 12 −8 6 10 ⎥ ∗ ⎢ y ⎥ = ⎢ 34 ⎥
⎢ 3 −13 9 3 ⎥ ⎢ z ⎥ ⎢ 27 ⎥
⎣−6 4 1 −18⎦ ⎣ t ⎦ ⎣−38⎦
⎡6 −2 2 4 12 ⎤
⎢ 12 −8 6 10 34 ⎥
⎢ 3 −13 9 3 27 ⎥
⎣−6 4 1 −18 −38⎦
Convertir matriz
Es procedimiento se aplica con el siguiente elemento de la primera columna a
convertir, el 3, usando la primera fila:
3
f2 = f2 − 6
∗ f0 :
⎡6 −2 2 4 12 ⎤
⎢0 −4 2 2 10 ⎥
⎢ 0 −12 8 1 21 ⎥
⎣−6 4 1 −18 −38⎦
https://www.notion.so/4-2-Eliminaci-n-de-Gauss-43fefb8ac9e14b52952d71403bcc3a02 2/4
4/2/2021 4.2 Eliminación de Gauss
⎡6 −2 2 4 12 ⎤
⎢0 −4 2 2 10 ⎥
⎢0 0 2 −5 −9⎥
⎣0 0 0 −3 −3⎦
Este sistema equivalente aun no tiene la solución, pero es mucho más fácil de resolver,
si se lo escribe algebraicamente:
⎧
⎪
⎪
6x − 2y + 2z + 4t = 12
⎨
−4y + 2z + 2t = 10
⎪
⎪
⎩
2z − 5t = −9
−3t = −3
https://www.notion.so/4-2-Eliminaci-n-de-Gauss-43fefb8ac9e14b52952d71403bcc3a02 3/4
4/2/2021 4.2 Eliminación de Gauss
2z − 5(1) = −9 z = −2
X=1
https://www.notion.so/4-2-Eliminaci-n-de-Gauss-43fefb8ac9e14b52952d71403bcc3a02 4/4
4/2/2021 4.3 Eliminación de Gauss-Jordan
Resolución de sistemas
Inversa
Definición
La eliminación de Gauss, llamada así debido a Carl Friedrich Gauss y Wilhelm Jordan.
La eliminación de Gauss-Jordan continúa el proceso de transformación, iniciado por la
Eliminación de Gauss, hasta obtener una identidad matriz.
Resolución de sistemas
En la forma matricial extendida se debe colocar el vector de términos independientes
al lado de la matriz de coeficientes. La raíz del sistema se encuentra en el vector de
términos independientes, por lo tanto no es necesario realizar otro procedimiento.
Para aplicar correctamente el método es recomendable seguir los siguientes pasos:
1 . Dividir la fila entre el término de la diagonal principal.
2 . Convertir todos los elementos debajo de la diagonal principal en ceros.
3 . Convertir todos los elementos encima de la diagonal principal en ceros.
Inversa
Un sistema se pude escribir:
Ax = b
https://www.notion.so/4-3-Eliminaci-n-de-Gauss-Jordan-1eddfd970e094d778e637a64ccba77d0 1/2
4/2/2021 4.3 Eliminación de Gauss-Jordan
b
x=
A
x = A−1 b
https://www.notion.so/4-3-Eliminaci-n-de-Gauss-Jordan-1eddfd970e094d778e637a64ccba77d0 2/2
4/2/2021 4.4 Descomposición LU
4.4 Descomposición LU
Definición
Variantes
Doolittle
Ejemplo
Crout y Cholesky
Definición
La Descomposición LU consiste en descomponer la matriz de coeficientes del sistema
UN en las matrices L y U :
UN = L U
Donde:
L U x = segundo
z=Ux L z = segundo
Ux=z
https://www.notion.so/4-4-Descomposici-n-LU-3baf8e4e6c1e4d0eb9b2b8bcdf83326f 1/7
4/2/2021 4.4 Descomposición LU
Variantes
• Doolittle : Los elementos de la diagonal principal deL hijo 1. Los elementos de la
diagonal principal deU pueden ser cualquier número.
• Crout : Los elementos de la diagonal principal deL pueden ser cualquier número.
Los elementos de la diagonal principal de U son 1.
Doolittle
En vista que L es una matriz triangular inferior y los elementos de su diagonal
principal son 1; y U una matriz triangular superior la cantidad de elementos que se
debe calcular de cada matriz se reducen significativamente:
Multiplicando matricialmente:
Como A = LU entonces:
Se tienen nueve ecuaciones, para iniciar se toman las ecuaciones de los elementos de
la diagonal principal:
• a11 = u11
https://www.notion.so/4-4-Descomposici-n-LU-3baf8e4e6c1e4d0eb9b2b8bcdf83326f 2/7
4/2/2021 4.4 Descomposición LU
• u11 = a11
• u22 = a22 − l21 u12
• u33 = a33 − l31 u13 − l32 u23
Ahora es necesario encontrar una regla que permita calcular uii sin importar el
tamaño del sistema.
En primer lugar se puede ver que el primer elemento es aii y a continuación esta una
serie de restas sucesivas, las restas se puede cambiar por una sumatoria de la siguente
manera:
i−1
uii = aii − ∑ lik uki
k=1
• a12 = u12
• a13 = u13
• a23 = l21 u13 + u23
https://www.notion.so/4-4-Descomposici-n-LU-3baf8e4e6c1e4d0eb9b2b8bcdf83326f 3/7
4/2/2021 4.4 Descomposición LU
• u12 = a12
• u13 = a13
• u23 = a23 − l21 u13
Aplicando el mismo análisis del caso anterior se obtiene:
i−1
uij = aij − ∑ lik ukj
k=1
• l21 = a21
u11
a31
• l31 =
u11
• l32 =
a32 − l31 u12
u22
Se obtiene la siguiente ecuación:
aij − ∑j−1
k=1 lik ukj
lij =
ujj
Con estas tres ecuaciones es posible calcular todos los elementos de las matrices L y
U.
El método se debe aplicar fila por fila, es decir, primero se encuentra el elemento u11 ,
luego el elemento u12 y así hasta terminar la fila, en la segunda fila se empieza por
l21 , luego con u22 . Se sigue así hasta encontrar todos los elementos.
Ejemplo
Resolver:
https://www.notion.so/4-4-Descomposici-n-LU-3baf8e4e6c1e4d0eb9b2b8bcdf83326f 4/7
4/2/2021 4.4 Descomposición LU
⎧
⎪
⎪
6x − 2y + 2z + 4t = 12
⎨
12x − 8y + 6z + 10t = 34
⎪
⎪
⎩
3x − 13y + 9z + 3t = 27
−6x + 4y + z − 18t = −38
Matricialmente:
Calcular L y U :
En la primera fila de L todos los elementos son conocidos por lo tanto se pasa a la
primera final de U , donde el primer elemento a calcular es u11 , se debe usar la
ecuación para uii :
https://www.notion.so/4-4-Descomposici-n-LU-3baf8e4e6c1e4d0eb9b2b8bcdf83326f 5/7
4/2/2021 4.4 Descomposición LU
⎡1 0 0 0⎤ ⎡6 −2 2 4 ⎤
L=⎢
0⎥
U =⎢
2 1 0 0 −4 2 2 ⎥
⎢ 0.5 3 1 0⎥ ⎢0 0 2 −5⎥
⎣−1 −0.5 2 1⎦ ⎣0 0 0 −3⎦
A continuación se calcula z :
⎡z1 ⎤ ⎡ 12 ⎤
⎢z2 ⎥ = ⎢ 34 ⎥
⎢z3 ⎥ ⎢ 27 ⎥
⎣z4 ⎦ ⎣−38⎦
⎡z1 ⎤ ⎡1 2⎤
⎢z2 ⎥ = ⎢1 0⎥
⎢z3 ⎥ ⎢ - 9 ⎥
⎣z4 ⎦ ⎣ - 3 ⎦
Finalmente se calcula X:
https://www.notion.so/4-4-Descomposici-n-LU-3baf8e4e6c1e4d0eb9b2b8bcdf83326f 6/7
4/2/2021 4.4 Descomposición LU
Ux=z ⎡6 - 2 2 4 ⎤ ⎡X⎤
⎢0 - 4 2 2 ⎥ ∗ ⎢ y ⎥ =
⎢0 0 2 - 5⎥ ⎢ z ⎥
⎣0 0 0 - 3⎦ ⎣ t ⎦
⎡1 2⎤
⎢1 0⎥
⎢ - 9⎥
⎣ - 3⎦
⎡X⎤ ⎡ 1 ⎤
⎢ y ⎥ = ⎢- 3⎥
⎢ z ⎥ ⎢- 2⎥
⎣t⎦ ⎣1⎦
Crout y Cholesky
La manera de deducir las ecuaciones para Crout y Cholesky es simular, pero al
cambiar las matrices iniciales se obtendrán ecuaciones diferentes.
https://www.notion.so/4-4-Descomposici-n-LU-3baf8e4e6c1e4d0eb9b2b8bcdf83326f 7/7
4/2/2021 4.5 Método de Jacobi
Definición
Introducción
norte
∣ unyo yo ∣ ≥ ∑ ∣ unyo j ∣
j = 1 ; yo
=j
Definición
Al ser un método iterativo necesita valores iniciales para cada variable, los cuales se
representan en el vector X0 , a partir de estos valores se calcula la raíz:
X1 = M x0 + norte
Donde:
• METRO = - D- 1 C
• norte = re- 1 segundo
• UN = C + re
• C , todos los elementos de la diagonal principal son cero.
• re, todos los elementos que no pertenecen a la diagonal principal son cero.
https://www.notion.so/4-5-M-todo-de-Jacobi-1af3be7fffa240f3b32f9816338ff9a4 1/2
4/2/2021 4.5 Método de Jacobi
https://www.notion.so/4-5-M-todo-de-Jacobi-1af3be7fffa240f3b32f9816338ff9a4 2/2
4/2/2021 5 Introducción.ipynb - Colaboratory
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
%matplotlib inline
fig, ax = plt.subplots()
x = np.linspace(0, 3, 1000)
y = np.sqrt(4+x**2)
ax.plot(x, y, linewidth=3, c='r', label='f(x)')
y = 6 / x
ax.plot(x, y, linewidth=3, c='g', label='g(x)')
plt.xlabel("x")
plt.ylabel("y")
ax.legend();
ax.set_ylim(-10, 10)
/usr/local/lib/python3.6/dist-packages/ipykernel_launcher.py:12: RuntimeWarning: d
if sys.path[0] == '':
(-10.0, 10.0)
Método de Newton-Raphson
Este método se estudio en el tema 2. Reponde a la siguente fórmula:
f (x 0 )
x1 = x0 −
′
f (x 0 )
https://colab.research.google.com/drive/1anr1BXw6gYFvtJtNoeJCK2gAj0qU_iYw 1/4
4/2/2021 5 Introducción.ipynb - Colaboratory
Se puede aplicar la misma ecuación pero con el cuidado de que ahora no se trata de estalares
sino de vectores.
La primera derivada de una función vectorial se conoce como Jacobiano (J(x) ), por lo tanto la
ecuación que expresada de la siguente manera:
f (x 0 )
x1 = x0 −
J(x 0 )
f (x 0 ) es un vector fruto de evaluar el la función vectorial f con el los valores del vector x0 ,
J(x 0 ) es una matriz cuadrada. No es posible realizar la división entre un vector y una matriz, sin
embargo es posible aplicar la inversa como equivalencia de la división:
f (x 0 )
−1
= J(x 0 ) f (x 0 )
J(x 0 )
Ejemplo
Resuelva el siguiente sistema de ecuaciones:
2 2
x −y = 4
{
xy = 6
Como se puede ver las dos ecuaciones son no lineales, por lo tanto todo el sistema se considera
no lineal.
Valores iniciales
x = 1
y = 2
El orden es un factor muy importante para el ejemplo x ocupará la primera posición del vector y
y la segunda:
x
x0 = [ ]
y
https://colab.research.google.com/drive/1anr1BXw6gYFvtJtNoeJCK2gAj0qU_iYw 2/4
4/2/2021 5 Introducción.ipynb - Colaboratory
Jacobiano
El Jacobiano se calcula a partir de las derivadas parciales de todas las funciones respecto a
todas las incógnitas:
∂ f1 ∂ f1 ∂ f1
⎡ ⎤
…
⎢ ∂ x1 ∂ x2 ∂ xn ⎥
⎢ ⎥
⎢ ∂ f2 ∂ f2 ∂ f2 ⎥
⎢ … ⎥
⎢ ∂x ∂ x2 ∂ xn ⎥
J(x) = ⎢ 1 ⎥
⎢ ⎥
⎢ ⎥
⎢ ⋮ ⋮ ⋱ ⋮ ⎥
⎢ ⎥
⎢ ∂f ∂ fn ∂f ⎥
n n
⎣ … ⎦
∂ x1 ∂ x2 ∂ xn
Iteración 1:
1
x0 = [ ]
2
2 2
1 −2 −4 −7
f (x 0 ) = [ ] = [ ]
1 ∗ 2 −6 −4
2 ∗ 1 −2 ∗ 2 2 −4
J(x 0 ) = [ ] = [ ]
2 1 2 1
0.1 0.4
−1
J (x 0 ) = [ ]
−0.2 0.2
fx0 = funciones.subs({})
jacobiano = funciones.jacobian(incognitas)
https://colab.research.google.com/drive/1anr1BXw6gYFvtJtNoeJCK2gAj0qU_iYw 3/4
4/2/2021 5 Introducción.ipynb - Colaboratory
print(jacobiano)
print(jacobiano.subs({x:1, y:2}))
https://colab.research.google.com/drive/1anr1BXw6gYFvtJtNoeJCK2gAj0qU_iYw 4/4
4/2/2021 6.1 Introducción.ipynb - Colaboratory
Introducción
Es común que los datos se den como valores discretos a lo largo de un fenómeno continuo. Sin
embargo, se requiere la estimación de un punto entre valores discretos.
A partir de un conjunto de datos, puede ser una tabla, fruto de observaciones teóricas o
empíricas es necesario realizar cálculos o tomar decisiones, para ello es frecuente calcular una
curva, a este proceso se llama ajuste.
2.4 2.9
1.5 2.1
1.8 1.8
2.9 2.7
1.2 1.5
3 2.9
¿Cuánto vale y si x = 2 ?
Se puede ver claramente que no se puede responder directamente a la pregunta porque en los
datos no existe el par donde x = 2 .
Para entender mejora el problema resulta útil gra car los datos.
plt.xlabel("x")
plt.ylabel("y")
https://colab.research.google.com/drive/1v9A_sHPCnD43yYoQT7OYbL5fLRMwqVkJ 1/3
4/2/2021 6.1 Introducción.ipynb - Colaboratory
Se puede ver que existe una tendencia donde a mayor x mayor y ; existen dos formas de encarar
este problema:
1. Calcular una curva que pase cerca de todos los datos (regresión) (curva roja).
2. Calcular una curva que pase exactamente por todos los datos (interpolación) (curva
verde).
import numpy as np
fig, ax = plt.subplots()
x = np.linspace(1.2, 3, 1000)
y = 0.76885441527447 + 0.72553699284009 * x
ax.plot(x, y, linewidth=3, c='r', label='Regresión')
plt.xlabel("x")
plt.ylabel("y")
ax.legend();
Existen diferentes métododos tanto para la regresión como para la interpolación, los cuales
serán estudiados con detalle en el presente capítulo.
https://colab.research.google.com/drive/1v9A_sHPCnD43yYoQT7OYbL5fLRMwqVkJ 2/3
4/2/2021 6.2 Regresión.ipynb - Colaboratory
Regresión
El término regresión fue introducido por Francis Galton en su libro Natural inheritance (1889) y
fue con rmado por su amigo Karl Pearson. Su trabajo se centró en la descripción de los rasgos
fıś icos de los descendientes (variable A) a partir de los de sus padres (variable B). Estudiando la
altura de padres e hijos a partir de más de mil registros de grupos familiares, se llegó a la
conclusión de que los padres muy altos tenıá n una tendencia a tener hijos que heredaban parte
de esta altura, pero que revelaban también una tendencia a regresar a la media. Galton
generalizó esta tendencia bajo la ley de la regresión universal: Cada peculiaridad en un hombre
es compartida por sus descendientes, pero en media, en un grado menor.
Para aplicar la regresión es necesario estudiar la naturaleza de los datos, cuando los datos
tienen errores sustanciales, es decir no son exactos, con frecuencia los datos experimentales
son de este tipo.
Problema
Se realizó un estudio de ingeniería del transporte para determinar el diseño apropiado de carriles
para bicicletas. Se recabaron datos del ancho de los carriles y la distancia promedio entre las
bicicletas y los autos en circulación. Los datos de 9 calles son:
N° Calle Distancia entre bicicletas y autos (m) Ancho del carril (m)
Si se considera que la distancia promedio mínima de seguridad entre las bicicletas y los autos
en circulación es de 2 m, determine el ancho de carril mínimo correspondiente.
https://colab.research.google.com/drive/1wCVOcvv_hgonbQHmURu7hnIS0riAR_lE 1/3
4/2/2021 6.2 Regresión.ipynb - Colaboratory
Se puede ver claramente que no se puede responder directamente a la pregunta, porque existen
muchos datos diferentes y además en los datos recopilados no existe en valor del ancho del
carril cuando la distancia entre bicicletas y autos es de 2 m.
Para ver la naturaleza de los datos primero se debe entender el signi cado de las variables que
se están usando: Distancia entre bicicletas y autos y Ancho del carril, la relación entre estas dos
variables no es exacta debido a que las calles han cambiado mucho a lo largo del tiempo,
agregando los carriles para bicicletas de manera improvisa en algunos casos, por lo tanto las
calles que tienen carriles para bicicleta no cumplen con las mismas características entre sí.
La inexactitud de las variables se re eja en los datos recopilados, se pueden analizar los
siguientes pares de calles:
Entre sí comparten la misma distancia entre bicicletas y autos, pero tiene diferentes anchos de
carril. Por otro lado las calles 7 y 9 son iguales, pero al tratarse de calles diferentes se deben
tratar con datos diferentes por lo que el número de datos se incrementa.
https://colab.research.google.com/drive/1wCVOcvv_hgonbQHmURu7hnIS0riAR_lE 2/3
4/2/2021 6.2 Regresión.ipynb - Colaboratory
Generalmente la regresión se aplica a grupos grandes de datos, los datos son inexactos,
re ejado en la duplicidad de datos y en valores diferentes de la variable dependiente a un valor
de la variable independiente.
El método tienes diferente variantes que perminten encontrar diferentes tipos de curva que se
estudiaran en el presenten capítulo.
https://colab.research.google.com/drive/1wCVOcvv_hgonbQHmURu7hnIS0riAR_lE 3/3
4/2/2021 6.2.1 Regresión lineal.ipynb - Colaboratory
Regresión lineal
El proósito del Método de Mínimos Cuadrados para la regresión lineal consite encontrar una
línea recta que pase lo más cerca posible de todos los datos observados, recordando el
problema del diseño de los carriles para bicicletas se tienen los siguientes datos:
N° Calle Distancia entre bicicletas y autos (m) Ancho del carril (m)
https://colab.research.google.com/drive/14Prfys30cDb0Ju-1MAQuaPDTYsz7v1s1#scrollTo=DQPYo7Tw7zIv 1/11
4/2/2021 6.2.1 Regresión lineal.ipynb - Colaboratory
Es posible obtener un número in nito de rectas que pasen cerca de estos puntos, dependerá de
los valores
import queassenp
numpy asignen a a0 y a1
x = np.linspace(1.2, 3, 1000)
a_0 = 0.8
a_1 = 0.7
y = a_0 + a_1 * x
plt.plot(x, y, linewidth=3, c='r')
a_0 = 3
a_1 = -0.3
y = a_0 + a_1 * x
plt.plot(x, y, linewidth=3, c='m')
a_0 = 1.5
a_1 = 0.3
y = a_0 + a_1 * x
plt.plot(x, y, linewidth=3, c='c')
Como se puede ver es difícil que la recta pase por alguno de los datos, dentro de esta familia de
ecuaciones nesesario encontrar la recta que pase lo más cerca posible de todos los datos.
Para determinar el grado de cercania de la recta con los puntos se va comparar el valor de la
función contra el valor observado. Analizando la recta y = 0.8 + 0.7x (a0 ,
= 0.8 a1 = 0.7 )
a_0 = 0.8
a_1 = 0.7
-----
Distancia: 2.4
Ancho observado: 2.9
Ancho calculado: 2.48
Error: 0.41999999999999993
-----
Distancia: 1.5
Ancho observado: 2.1
Ancho calculado: 1.8499999999999999
Error: 0.2500000000000002
-----
Distancia: 2.4
Ancho observado: 2.3
Ancho calculado: 2.48
Error: -0.18000000000000016
-----
Distancia: 1.8
Ancho observado: 2.1
Ancho calculado: 2.06
Error: 0.040000000000000036
-----
Distancia: 1.8
Ancho observado: 1.8
Ancho calculado: 2.06
Error: -0.26
-----
Distancia: 2.9
Ancho observado: 2.7
Ancho calculado: 2.83
Error: -0.1299999999999999
-----
Distancia: 1.2
Ancho observado: 1.5
Ancho calculado: 1.6400000000000001
Error: -0.14000000000000012
-----
Distancia: 3
Ancho observado: 2.9
Ancho calculado: 2.8999999999999995
Error: 4.440892098500626e-16
-----
Distancia: 1.2
Ancho observado: 1.5
Ancho calculado: 1.6400000000000001
Error: -0.14000000000000012
Para que los datos calculados sean iguales a los datos observados es necesario agregar el error
como una variable de la ecuación de la recta, quedando la ecuación de la siguiente manera:
https://colab.research.google.com/drive/14Prfys30cDb0Ju-1MAQuaPDTYsz7v1s1#scrollTo=DQPYo7Tw7zIv 3/11
4/2/2021 6.2.1 Regresión lineal.ipynb - Colaboratory
y = a0 + a1 x + e
Donde:
e = y − a0 − a1 x
Se calcula el error para cada datos y luego se suman todos los errores:
∑ e i = ∑(yi − a0 − a1 x i )
fig, ax = plt.subplots()
print('Recta 1')
a_0 = 0.8
a_1 = 0.7
print('a_0:', a_0)
print('a_1:', a_1)
sum_error = 0
for index in range(len(distancia)):
y = ancho[index]
x = distancia[index]
error = y - a_0 - a_1 * x
sum_error += error
print('Error:', sum_error)
ax.plot(np.linspace(1.2, 3, 1000), a_0 + a_1 * np.linspace(1.2, 3, 1000), linewidth=3,
print('Recta 2')
a_0 = 3
a_1 = -0.3
print('a_0:', a_0)
print('a_1:', a_1)
sum_error = 0
for index in range(len(distancia)):
y = ancho[index]
x = distancia[index]
error = y - a_0 - a_1 * x
sum_error += error
print('Error:', sum_error)
ax.plot(np.linspace(1.2, 3, 1000), a_0 + a_1 * np.linspace(1.2, 3, 1000), linewidth=3,
print('Recta 3')
a 0 = 1 5
https://colab.research.google.com/drive/14Prfys30cDb0Ju-1MAQuaPDTYsz7v1s1#scrollTo=DQPYo7Tw7zIv 4/11
4/2/2021 6.2.1 Regresión lineal.ipynb - Colaboratory
a_0 = 1.5
a_1 = 0.3
print('a_0:', a_0)
print('a_1:', a_1)
sum_error = 0
for index in range(len(distancia)):
y = ancho[index]
x = distancia[index]
error = y - a_0 - a_1 * x
sum_error += error
print('Error:', sum_error)
ax.plot(np.linspace(1.2, 3, 1000), a_0 + a_1 * np.linspace(1.2, 3, 1000), linewidth=3,
Solo sumar los errores tiene un problema, los errores son positivos y negativos, por lo que es
posible que los errores negativos compensen a los positivos distorcionando el resultado.
Para evitar la compensación de los negativos se puede sumar el valor absoluto de los errores:
print('Recta 1')
a_0 = 0.8
a_1 = 0.7
print('a_0:', a_0)
print('a 1:', a 1)
https://colab.research.google.com/drive/14Prfys30cDb0Ju-1MAQuaPDTYsz7v1s1#scrollTo=DQPYo7Tw7zIv 5/11
4/2/2021 6.2.1 Regresión lineal.ipynb - Colaboratory
p ( _ , _ )
sum_error = 0
for index in range(len(distancia)):
y = ancho[index]
x = distancia[index]
error = y - a_0 - a_1 * x
sum_error += abs(error)
print('Error:', sum_error)
print('Recta 2')
a_0 = 3
a_1 = -0.3
print('a_0:', a_0)
print('a_1:', a_1)
sum_error = 0
for index in range(len(distancia)):
y = ancho[index]
x = distancia[index]
error = y - a_0 - a_1 * x
sum_error += abs(error)
print('Error:', sum_error)
print('Recta 3')
a_0 = 1.5
a_1 = 0.3
print('a_0:', a_0)
print('a_1:', a_1)
sum_error = 0
for index in range(len(distancia)):
y = ancho[index]
x = distancia[index]
error = y - a_0 - a_1 * x
sum_error += abs(error)
print('Error:', sum_error)
Recta 1
a_0: 0.8
a_1: 0.7
Error: 1.56
Recta 2
a_0: 3
a_1: -0.3
Error: 5.76
Recta 3
a_0: 1.5
a_1: 0.3
Error: 2.76
https://colab.research.google.com/drive/14Prfys30cDb0Ju-1MAQuaPDTYsz7v1s1#scrollTo=DQPYo7Tw7zIv 6/11
4/2/2021 6.2.1 Regresión lineal.ipynb - Colaboratory
print('Recta 1')
a_0 = 0.8
a_1 = 0.7
print('a_0:', a_0)
print('a_1:', a_1)
sum_error = 0
for index in range(len(distancia)):
y = ancho[index]
x = distancia[index]
error = y - a_0 - a_1 * x
sum_error += error ** 2
print('Error:', sum_error)
print('Recta 2')
a_0 = 3
a_1 = -0.3
print('a_0:', a_0)
print('a_1:', a_1)
sum_error = 0
for index in range(len(distancia)):
y = ancho[index]
x = distancia[index]
error = y - a_0 - a_1 * x
sum_error += error ** 2
print('Error:', sum_error)
print('Recta 3')
a_0 = 1.5
a_1 = 0.3
print('a_0:', a_0)
print('a_1:', a_1)
sum_error = 0
for index in range(len(distancia)):
y = ancho[index]
x = distancia[index]
error = y - a_0 - a_1 * x
sum_error += error ** 2
print('Error:', sum_error)
Recta 1
a_0: 0.8
a_1: 0.7
Error: 0.39659999999999984
Recta 2
a_0: 3
a_1: -0.3
Error: 4.7166
Recta 3
a_0: 1.5
a_1: 0.3
Error: 1.1705999999999999
https://colab.research.google.com/drive/14Prfys30cDb0Ju-1MAQuaPDTYsz7v1s1#scrollTo=DQPYo7Tw7zIv 7/11
4/2/2021 6.2.1 Regresión lineal.ipynb - Colaboratory
A la sumatoria de los errores se la conoce como Discrepancia entre datos y esta representada
por:
Llevando el -2 a dividir:
$$0=\sum y_ix_i - \sum a_0x_i - \sum a_1x_i^2$$$$0=\sum y_ix_i - \sum a_0x_i - \sum
a_1x_i^2$$
Se sabe que $\sum a_0 = na_0$$\sum a_0 = na_0$, donde $n$$n$ es el número de datos:
$$0=\sum y_ix_i - \sum a_0x_i - \sum a_1x_i^2$$$$0=\sum y_ix_i - \sum a_0x_i - \sum
a_1x_i^2$$
$$0=\sum y_ix_i - (\sum x_i)a_0 - \sum a_1x_i^2$$$$0=\sum y_ix_i - (\sum x_i)a_0 - \sum
a_1x_i^2$$
$$0=\sum y_ix_i - (\sum x_i)a_0 - (\sum x_i^2)a_1$$$$0=\sum y_ix_i - (\sum x_i)a_0 - (\sum
x_i^2)a_1$$
https://colab.research.google.com/drive/14Prfys30cDb0Ju-1MAQuaPDTYsz7v1s1#scrollTo=DQPYo7Tw7zIv 8/11
4/2/2021 6.2.1 Regresión lineal.ipynb - Colaboratory
Los términos que contiene $a_0$$a_0$ y $a_1$$a_1$ se llevan al miembro derecho por son
términos de las incognitas, las incógnicas son $a_0$$a_0$ y $a_1$$a_1$:
$$a_0=\overline{y}-a_1\overline{x}$$$$a_0=\overline{y}-a_1\overline{x}$$
Aplicación
Para aplicar este método es necesario calcular: $\sum x_i$$\sum x_i$, $\sum x_i^2$$\sum
x_i^2$, $\sum y_ix_i$$\sum y_ix_i$, $\sum y_i$$\sum y_i$
x = distancia
y = ancho
sum_x = 0
sum_x2 = 0
sum_yx = 0
sum_y = 0
n = len(distancia)
for index in range(n):
sum_x += x[index]
sum_x2 += x[index] ** 2
sum_yx += y[index] * x[index]
sum_y += y[index]
media_x = sum_x / n
media_y = sum_y / n
a_1 = (n * sum_yx - sum_x * sum_y) / (n * sum_x2 - sum_x ** 2)
a_0 = media_y - a_1 * media_x
print('a_0:', a_0)
print('a_1:', a_1)
distancia_segura = 2
ancho_diseño = a_0 + a_1 * distancia_segura
print('El ancho del carril para bicicletas debe ser de:', ancho_diseño)
fig, ax = plt.subplots()
plt.scatter(distancia, ancho, s=40, c='b')
ax.plot(np.linspace(1.2, 3, 1000), a_0 + a_1 * np.linspace(1.2, 3, 1000), linewidth=3,
https://colab.research.google.com/drive/14Prfys30cDb0Ju-1MAQuaPDTYsz7v1s1#scrollTo=DQPYo7Tw7zIv 9/11
4/2/2021 6.2.1 Regresión lineal.ipynb - Colaboratory
$$y=0.7167162403331468+0.7334919690660264x$$$$y=0.7167162403331468+0.733491969
0660264x$$
Una vez obtenida la recta se usa la misma para obtener valores de la variable dependiente
aunque se tengan observaciones con ese valor de la variable independiente, esto se debe a que
pueden existir diferentes datos con el mismo valor.
Error
Es necesario determinar el error de la recta, si bien es la recta que pasa más cerca de los datos,
puede ser que otra curva, como ser una parábola, ajuste de mejor manera los datos. El error
($S_{y/x}$$S_{y/x}$) se calula de la siguiente manera:
$$S_{y/x}=\sqrt{\dfrac{S_R}{n-2}}$$$$S_{y/x}=\sqrt{\dfrac{S_R}{n-2}}$$
sum_error = 0
for index in range(len(distancia)):
y = ancho[index]
x = distancia[index]
error = y - a_0 - a_1 * x
sum_error += error ** 2
S_yx = sqrt(sum_error / (n - 2))
print('El error de la recta es:', S_yx)
https://colab.research.google.com/drive/14Prfys30cDb0Ju-1MAQuaPDTYsz7v1s1#scrollTo=DQPYo7Tw7zIv 10/11
4/2/2021 6.2.1 Regresión lineal.ipynb - Colaboratory
Los valores que puede tomar el coe ciente de correlación se encuentran en el intervalo
$[-1,1]$$[-1,1]$
Si $r = 1$$r = 1$, existe una correlación positiva perfecta. Indica una dependencia total
entre las dos variables denominada relación directa: cuando una de ellas aumenta, la otra
también lo hace en proporción constante.
Si $0 < r < 1$$0 < r < 1$, existe una correlación positiva.
Si r = 0, no existe relación lineal. Pero esto no necesariamente implica que las variables son
independientes: pueden existir todavía relaciones no lineales entre las dos variables.
Si $-1 < r < 0$$-1 < r < 0$, existe una correlación negativa.
Si $r = -1$$r = -1$, existe una correlación negativa perfecta. Indica una dependencia total
entre las dos variables llamada relación inversa: cuando una de ellas aumenta, la otra
disminuye en proporción constante.
https://colab.research.google.com/drive/14Prfys30cDb0Ju-1MAQuaPDTYsz7v1s1#scrollTo=DQPYo7Tw7zIv 11/11
4/2/2021 6.2.2 Regresión polinomial.ipynb - Colaboratory
Regresión polinomial
El propósito del Método de Mínimos Cuadrados para la regresión polinimial consite encontrar un
polinimio que pase lo más cerca posible de todos los datos observados, recordando el problema
del diseño de los carriles para bicicletas se tienen los siguientes datos:
N° Calle Distancia entre bicicletas y autos (m) Ancho del carril (m)
https://colab.research.google.com/drive/1ukA6YNc_EQu0xzeQTQoJHGSAhe1XjnsC 1/5
4/2/2021 6.2.2 Regresión polinomial.ipynb - Colaboratory
2
y = a0 + a1 x + a2 x
Para que los datos calculados sean iguales a los datos observados es necesario agregar el error
como una variable de la ecuación del polinimio, quedando la ecuación de la siguiente manera:
2
y = a0 + a1 x + a2 x +e
Donde:
∂ SR
2
= −2 ∑ [(yi − a0 − a1 x i − a2 x )x i ]
i
∂ a1
∂ SR
2 2
= −2 ∑ [(yi − a0 − a1 x i − a2 x )x ]
i i
∂ a1
2 3
⎨ (∑ x i )a0 + (∑ x )a1 + (∑ x )a2 = ∑ yi x i
i i
⎪
⎩
⎪
2 3 4 2
(∑ x )a0 + (∑ x )a1 + (∑ x )a2 = ∑ yi x
i i i i
⎣ 3 ⎦ ⎣ ⎦ ⎣ 2 ⎦
2 4 ∑ yi x
∑x ∑x ∑x a2
i i i i
El sistema de ecuaciones que se debe resolver es simétrico; por lo tanto es recomendable usar el
método Cholesky, pero se puede aplicar cualquier otro método. Al resolver dicho sistema se
encuentran los coe cientes del polinímio.
https://colab.research.google.com/drive/1ukA6YNc_EQu0xzeQTQoJHGSAhe1XjnsC 2/5
4/2/2021 6.2.2 Regresión polinomial.ipynb - Colaboratory
Aplicación
Para aplicar este método es necesario calcular: ∑ xi , ∑ x2i , ∑ x3i , ∑ x4i , ∑ yi , ∑ yi xi ,
2
∑ yi x
i
∑ x i = 18.2
2
∑x = 40.54
i
3
∑x = 97.532
i
4
∑x = 248.2882
i
∑ yi = 19.8
∑ yi x i = 42.78
2
∑ yi x = 100.44
i
%matplotlib inline
sum_x = 18.2
sum_x2 = 40.54
sum_x3 = 97.532
sum_x4 = 248.2882
sum_y = 19.8
sum_yx = 42.78
sum_yx2 = 100.44
print('a_0:', a_0)
print('a_1:', a_1)
print('a_2:', a_2)
distancia_segura = 2
ancho_diseño = a_0 + a_1 * distancia_segura + a_2 * distancia_segura ** 2
print('El ancho del carril para bicicletas debe ser de:', ancho_diseño)
fig, ax = plt.subplots()
plt.scatter(distancia, ancho, s=40, c='b')
ax.plot(np.linspace(1.2, 3, 1000), a_0 + a_1 * np.linspace(1.2, 3, 1000) + a_2 * np.lin
plt.axhline(linewidth=1, color='k')
plt.xlabel("Distancia entre bicicletas y autos (m)")
https://colab.research.google.com/drive/1ukA6YNc_EQu0xzeQTQoJHGSAhe1XjnsC 3/5
4/2/2021 6.2.2 Regresión polinomial.ipynb - Colaboratory
plt.xlabel( Distancia entre bicicletas y autos (m) )
plt.ylabel("Ancho del carril (m)")
ax.legend();
a_0: 0.07207437798777279
a_1: 1.4191331769153437
a_2: -0.16469889545508642
El ancho del carril para bicicletas debe ser de: 2.2515451499981145
El polinomio de grado 2 que pasa más cerca de todos los datos es:
2
y = 0.07207437798777279 + 1.4191331769153437x − 0.16469889545508642x
Error
El error (Sy/x ) se calula de la siguiente manera:
−−−−−−−−− −
SR
Sy/x = √
n − (m + 1)
Donde:
sum_error = 0
m = 2
for index in range(len(distancia)):
y = ancho[index]
x = distancia[index]
error = y - a_0 - a_1 * x - a_2 * x ** 2
sum_error += error ** 2
S_yx = sqrt(sum_error / (n - (m + 1)))
print('El error del polinomio es:', S_yx)
https://colab.research.google.com/drive/1ukA6YNc_EQu0xzeQTQoJHGSAhe1XjnsC 4/5
4/2/2021 6.2.2 Regresión polinomial.ipynb - Colaboratory
Se puede observar que el error del polinomio de grado 2 es mayor al error de la recta, por lo tanto
la recta ajusta de mejor los datos.
https://colab.research.google.com/drive/1ukA6YNc_EQu0xzeQTQoJHGSAhe1XjnsC 5/5
4/2/2021 6.2.3 Regresión lineal múltiple.ipynb - Colaboratory
1 44 1 1 56853
2 120 3 3 90896
3 99 2 3 96889
4 96 3 3 92000
5 91 3 2 95000
6 97 3 2 99800
7 97 3 2 108000
8 120 3 4 82000
9 124 3 4 85000
10 45 1 1 65500
11 125 3 3 167000
12 36 1 1 34920
13 103 3 3 99910
14 136 2 3 131920
15 160 3 4 90000
16 167 3 4 109000
17 46 1 1 50600
18 45 1 1 60000
19 52 1 1 60000
20 88 2 3 98000
21 121 3 3 125000
22 106 2 2 138500
23 137 3 3 190500
24 166 3 4 217500
25 171 3 4 234500
26 113 2 2 140000
27 260 3 3 310000
Una pareja desea comprar un departamento de 2 dormitorios y 100 m² de super cie, ¿cuánto le
costará?
https://colab.research.google.com/drive/1HL4H-9ZXGvaHdCdsc52bncNl8Putf_eI#scrollTo=DQPYo7Tw7zIv 1/5
4/2/2021 6.2.3 Regresión lineal múltiple.ipynb - Colaboratory
A modo de explicación se gra carán las tres variables que intervienen, en la práctica no se
grafíca.
data = [
[44, 1, 1, 56853],
[120, 3, 3, 90896],
[99, 2, 3, 96889],
[96, 3, 3, 92000],
[91, 3, 2, 95000],
[97, 3, 2, 99800],
[97, 3, 2, 108000],
[120, 3, 4, 82000],
[124, 3, 4, 85000],
[45, 1, 1, 65500],
[125, 3, 3, 167000],
[36, 1, 1, 34920],
[103, 3, 3, 99910],
[136, 2, 3, 131920],
[160, 3, 4, 90000],
[167, 3, 4, 109000],
[46, 1, 1, 50600],
[45, 1, 1, 60000],
[52, 1, 1, 60000],
[88, 2, 3, 98000],
[121, 3, 3, 125000],
[106, 2, 2, 138500],
[137, 3, 3, 190500],
[166, 3, 4, 217500],
[171, 3, 4, 234500],
[113, 2, 2, 140000],
[260, 3, 3, 310000],
]
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
https://colab.research.google.com/drive/1HL4H-9ZXGvaHdCdsc52bncNl8Putf_eI#scrollTo=DQPYo7Tw7zIv 2/5
4/2/2021 6.2.3 Regresión lineal múltiple.ipynb - Colaboratory
Text(0.5, 0, 'Precio')
Para este ejemplo, donde se tiene dos variables independientes, el propósito del ajuste es
conseguir un plano:
y = a0 + a1 x 1 + a2 x 2
Siguiendo con el mismo criterio del método a la ecuación del plano se debe agregar el error:
y = a0 + a1 x 1 + a2 x 2 + e
Donde:
e = y − a0 − a1 x 1 − a2 x 2
∂ SR
= −2 ∑((yi − a0 − a1 x 1i − a2 x 2i )x 1i )
∂ a1
∂ SR
= −2 ∑((yi − a0 − a1 x 1i − a2 x 2i )x 2i )
∂ a2
https://colab.research.google.com/drive/1HL4H-9ZXGvaHdCdsc52bncNl8Putf_eI#scrollTo=DQPYo7Tw7zIv 3/5
4/2/2021 6.2.3 Regresión lineal múltiple.ipynb - Colaboratory
n ∑ x 1i ∑ x 2i a0 ∑ yi
⎡ ⎤ ⎡ ⎤ ⎡ ⎤
2
⎢ ∑ x 1i ∑x ∑ x 1i x 2i ⎥ ∗ ⎢ a ⎥ = ⎢ ∑ y x
1 i 1i ⎥
1i
⎣ 2 ⎦ ⎣ ⎦ ⎣ ⎦
∑ x 2i ∑ x 1i x 2i ∑x a2 ∑ yi x 2i
2i
Este procedimiento se puede aplicar a cualquier número de variables, siempre y cuando todas
sean independientes entre sí y solo exista una variable dependiente.
Aplicación
Para aplicar este método es necesario calcular: ∑ x1i , ∑ x2i , ∑ x21i , ∑ x1i x2i, ∑ x221 , ∑ yi ,
,
∑ yi x 1i ∑ yi x 2i
∑ x 1i = 2965
∑ x 2i = 64
2
∑x = 390169
1i
∑ x 1i x 2i = 7817
2
∑x = 170
2i
∑ yi = 3129288
∑ yi x 1i = 412229733
∑ yi x 2i = 8126809
import numpy as np
n = len(data)
sum_x1=2965
sum_x2=64
sum_x1_2=390169
sum_x1x2=7817
sum_x2_2=170
sum_y=3129288
sum_yx1=412229733
sum_yx2=8126809
print('a_0:', a_0)
print('a_1:', a_1)
i t(' 2 ' 2)
https://colab.research.google.com/drive/1HL4H-9ZXGvaHdCdsc52bncNl8Putf_eI#scrollTo=DQPYo7Tw7zIv 4/5
4/2/2021 6.2.3 Regresión lineal múltiple.ipynb - Colaboratory
print('a_2:', a_2)
superficie = 100
dormitorios = 2
precio = a_0 + a_1 * superficie + a_2 * dormitorios
print('El precio del departamento es de:', precio)
[[ 27 2965 64]
[ 2965 390169 7817]
[ 64 7817 170]]
[ 3129288 412229733 8126809]
a_0: 14541.92237079433
a_1: 1243.87941223487
a_2: -14866.34939512245
El precio del departamento es de: 109197.16480403641
Error
El error (Sy/x ) se calula de la siguiente manera:
−−−−−−−−− −
SR
Sy/x = √
n − (m + 1)
Donde:
https://colab.research.google.com/drive/1HL4H-9ZXGvaHdCdsc52bncNl8Putf_eI#scrollTo=DQPYo7Tw7zIv 5/5
4/2/2021 6.2.4 Regresión general lineal.ipynb - Colaboratory
$$y=a_0z_0+a_1z_1+a_2z_2+\ldots+a_mz_m+e$$
Donde:
Para la regresión lineal se puede se puede aplicar cualquiera de los dos modelos.
$$y=Za+e$$
Donde:
Minimizando
Para minimizar este modelo se asume que el error es 0, por lo tanto minimizando la ecuación se
puede escribir como: $$y=Za$$
o como: $$Za=y$$
$Z$ no es una matriz cuadrada por lo tanto no se puede resolver el sistema, como se puede ver el
resolver el problema del departamento.
Se tiene dos variables independientes, la super cie y la cantidad de dormitorios que tiene el
departamento, entonces $Z$ tendra 3 columnas, debido a que tiene la candidad de variables
independientes más uno. La primera columna tendra el valor 1 en todas sus nal, se segunda la
corresponde a la primera variable independiente, en este caso la super cie, la tercera la
corresponde a la segunda variable independiente, en este caso la cantidad de dormitorios; si se
tendría más variables se deben añadir a continuación, por lo tanto $Z$ para el ejemplo sería:
https://colab.research.google.com/drive/1dZ-YkcrBelxz6P8nMqCDx5LKWgQHA1Mv 1/4
4/2/2021 6.2.4 Regresión general lineal.ipynb - Colaboratory
$$Z=\begin{bmatrix} 1 & 44 & 1\\ 1 & 120 & 3\\ 1 & 99 & 2\\ 1 & 96 & 3\\ 1 & 91 & 3\\ 1 & 97 & 3\\
1 & 97 & 3\\ 1 & 120 & 3\\ 1 & 124 & 3\\ 1 & 45 & 1\\ 1 & 125 & 3\\ 1 & 36 & 1\\ 1 & 103 & 3\\ 1 &
136 & 2\\ 1 & 160 & 3\\ 1 & 167 & 3\\ 1 & 46 & 1\\ 1 & 45 & 1\\ 1 & 52 & 1\\ 1 & 88 & 2\\ 1 & 121 &
3\\ 1 & 106 & 2\\ 1 & 137 & 3\\ 1 & 166 & 3\\ 1 & 171 & 3\\ 1 & 113 & 2\\ 1 & 260 & 3
\end{bmatrix}$$
Como se puede ver $Z$ no es una matriz cuadrada por lo tanto no se puede resolver el sistema
$Za=y$.
Es posible realizar diferentes operaciones con las ecuaciones, el único requisito es aplicar la misma
operación a los dos miembros para que se mantenga el equilibrio, en este sentido es posible
multiplicar los dos miembros por la transpuesta de $Z$$Z$ ($Z^T$$Z^T$), quedando la ecuación
de la siguente manera:
$$Z^TZa=Z^Ty$$$$Z^TZa=Z^Ty$$
$Z^TZ$$Z^TZ$ es una matriz cuadrada por lo tanto es posible resolver el sistema por cualquier
método.
$$(Z^TZ)a=Z^Ty$$$$(Z^TZ)a=Z^Ty$$
import numpy as np
Z = np.array([
[1, 44, 1],
[1, 120, 3],
[1, 99, 2],
[1, 96, 3],
[1, 91, 3],
[1, 97, 3],
[1, 97, 3],
[1, 120, 3],
[1, 124, 3],
[1, 45, 1],
[1, 125, 3],
[1, 36, 1],
[1, 103, 3],
[1, 136, 2],
[1, 160, 3],
[1, 167, 3],
[1, 46, 1],
[1, 45, 1],
[1, 52, 1],
[1, 88, 2],
[1, 121, 3],
[1, 106, 2],
[1, 137, 3],
[1, 166, 3],
[1, 171, 3],
[1, 113, 2],
https://colab.research.google.com/drive/1dZ-YkcrBelxz6P8nMqCDx5LKWgQHA1Mv 2/4
4/2/2021 6.2.4 Regresión general lineal.ipynb - Colaboratory
[1, 113, 2],
[1, 260, 3]
])
y = np.array([
56853,
90896,
96889,
92000,
95000,
99800,
108000,
82000,
85000,
65500,
167000,
34920,
99910,
131920,
90000,
109000,
50600,
60000,
60000,
98000,
125000,
138500,
190500,
217500,
234500,
140000,
310000
])
coeficientes = np.dot(np.transpose(Z), Z)
independientes = np.dot(np.transpose(Z), y)
print(coeficientes)
print(independientes)
print('a_0:', a_0)
print('a_1:', a_1)
print('a_2:', a_2)
[[ 27 2965 64]
[ 2965 390169 7817]
[ 64 7817 170]]
[ 3129288 412229733 8126809]
a_0: 14541.92237079433
a_1: 1243.87941223487
a_2: -14866.34939512245
https://colab.research.google.com/drive/1dZ-YkcrBelxz6P8nMqCDx5LKWgQHA1Mv 3/4
4/2/2021 6.2.4 Regresión general lineal.ipynb - Colaboratory
Como se puede ver el resultado es el mismo, por lo tanto son métodos equivalentes.
https://colab.research.google.com/drive/1dZ-YkcrBelxz6P8nMqCDx5LKWgQHA1Mv 4/4
4/2/2021 6.3.1 Regresión logarítmica - Colaboratory
Regresión logarítmica
Cuando es necesario ajustar los datos a una expresión logarítmica, es decir:
$$y=a_0+a_1 \log(x)$$
La idea es convertir una curva logarítmica a una recta haciendo un cambio de variable:
$$y=a_0+a_1 x'$$
$$ \left\lbrace \begin{array}{l} n a_0 + (\sum x'_i) a_1 = \sum y_i\\ (\sum x'_i) a_0 + (\sum
{x'}_i^2)a_1 = \sum y_ix'_i \end{array} \right. $$
Matricialmente se puede representar: $$\begin{bmatrix} n & \sum x'_i \\ \sum x'_i & \sum {x'}_i^{2}
\end{bmatrix}* \begin{bmatrix} a_0 \\ a_1 \end{bmatrix}= \begin{bmatrix} \sum y_i\\ \sum y_i x'_i\\
\end{bmatrix}$$
Los valores obtenidos para $a_0$ y $a_1$ son los coe cientes para la ecuación:
$$y=a_0+a_1 \log(x)$$
Aplicación
Recordando el problema del diseño de los carriles para bicicletas se tienen los siguientes datos:
N° Calle Distancia entre bicicletas y autos (m) Ancho del carril (m)
https://colab.research.google.com/drive/1cjPuAKx-BZ-9jgyZ_UY_SY9qDdsRUh78 1/2
4/2/2021 6.3.1 Regresión logarítmica - Colaboratory
sum_xprime = 2.54494049739937
sum_xprime2 = 0.904453351504549
sum_y_xprime = 6.21212284197725
sum_y = 19.8
n = 9
media_xprime = sum_xprime / n
media_y = sum_y / n
a_1 = (n * sum_y_xprime - sum_xprime * sum_y) / (n * sum_xprime2 - sum_xprime ** 2)
a_0 = media_y - a_1 * media_xprime
print('a_0:', a_0)
print( 'a_1:', a_1)
a_0: 1.2617207653400833
a_1: 3.3181573874000403
$$y=1.2617207653400833+3.3181573874000403\log
x$$$$y=1.2617207653400833+3.3181573874000403\log x$$
https://colab.research.google.com/drive/1cjPuAKx-BZ-9jgyZ_UY_SY9qDdsRUh78 2/2
4/2/2021 6.3.2 Regresión potencial.ipynb - Colaboratory
Regresión potencial
Cuando es necesario ajustar los datos a una expresión potencial, es decir:
a1
y = a0 x
La idea es convertir una curva potencial a una recta por medio de logaritmos, como sigue:
Aplicación
Recordando el problema del diseño de los carriles para bicicletas se tienen los siguientes datos:
N° Calle Distancia entre bicicletas y autos (m) Ancho del carril (m)
sum_log_x = 2.5449404973993737
sum_log_x2 = 0.9044533515045494
sum_log_y_log_x = 0.9654675908337498
sum_log_y = 2.969781208657
n = 9
media_log_x = sum_log_x / n
media log y = sum log y / n
https://colab.research.google.com/drive/1Ege56nHJLKG4B2s_qVzd3mkJ4PAQmVmu 1/3
4/2/2021 6.3.2 Regresión potencial.ipynb - Colaboratory
media_log_y sum_log_y / n
a_1 = (n * sum_log_y_log_x - sum_log_x * sum_log_y) / (n * sum_log_x2 - sum_log_x ** 2)
log_a_0 = media_log_y - a_1 * media_log_x
log a0 = 0.13765587004034566
log a0 0.13765587004034566
10 = 10
0.13765587004034566
a0 = 10
a_0 = 10 ** log_a_0
print('a_0:', a_0)
a_0: 1.3729536311846982
https://colab.research.google.com/drive/1Ege56nHJLKG4B2s_qVzd3mkJ4PAQmVmu 2/3
4/2/2021 6.3.2 Regresión potencial.ipynb - Colaboratory
https://colab.research.google.com/drive/1Ege56nHJLKG4B2s_qVzd3mkJ4PAQmVmu 3/3
4/2/2021 6.3.3 Regresión exponencial.ipynb - Colaboratory
Regresión exponencial
Cuando es necesario ajustar los datos a una expresión exponencial, es decir:
x
y = a0 a
1
La idea es convertir una curva exponencial a una recta por medio de logaritmos, como sigue:
Aplicación
Recordando el problema del diseño de los carriles para bicicletas se tienen los siguientes datos:
N° Calle Distancia entre bicicletas y autos (m) Ancho del carril (m)
sum_x = 18.2
sum_x2 = 40.54
sum_x_log_y = 6.56148411469917
sum_log_y = 2.969781208657
n = 9
media_log_x = sum_x / n
media log y = sum log y / n
https://colab.research.google.com/drive/1mjiYlwPvswXG5FfNjoImep_iK02al6gb 1/3
4/2/2021 6.3.3 Regresión exponencial.ipynb - Colaboratory
media_log_y = sum_log_y / n
log_a_1 = (n * sum_x_log_y - sum_x * sum_log_y) / (n * sum_x2 - sum_x ** 2)
log_a_0 = media_log_y - log_a_1 * media_log_x
log a0 = 0.02902793906692136
log a0 0.02902793906692136
10 = 10
0.02902793906692136
a0 = 10
log a1 = 0.14882031632168724
log a1 0.14882031632168724
10 = 10
0.14882031632168724
a1 = 10
a_0 = 10 ** log_a_0
print('a_0:', a_0)
a_1 = 10 ** log_a_1
print('a_1', a_1)
a_0: 1.0691236559578605
a_1 1.4087058441630465
https://colab.research.google.com/drive/1mjiYlwPvswXG5FfNjoImep_iK02al6gb 2/3
4/2/2021 6.4 Interpolación.ipynb - Colaboratory
Interpolación
Los datos son considerados verdaderos y si se repite en ensayo para un valor de la variable
independiente siempre será el mismo valor de la variable dependiente, esto hace que no sea
necesario repetir los datos pues no se trata de información nueva, por este motivo generalmente no
se cuenta con pocos datos. El propósito es encontrar una o varias curvas que pasen por todos los
puntos observados y permitan estimar pares de valores no observados.
Polinomial.
Spline.
Problema
Los lagos de la zona templada llegan a dividirse en estratos térmicos durante el verano. El agua es
tibia y ligera, y en el fondo es más fría y densa. La estrati cación divide efectivamente el lago en
dos capas en forma vertical: el epilimnion y el hipolimnion, separadas por un plano conocido como
termoclina.
1 22.8 0
2 11.7 18.3
3 22.8 4.9
4 20.6 9.1
5 13.9 13.7
6 11.1 27.2
7 11.1 22.9
8 22.8 2.3
Como se puede ver para una profundidad dada la temperatura siempre será la misma, pues se trata
del mismo lago.
Es necesario identi car las variables, en este caso la variable independiente es la profundidad pues
el problema nos proporciona un valor para esta variable sobre el cual se debe calcular la
temperatura.
https://colab.research.google.com/drive/144WdMva0pZp45X-KUAIW8vft3rUb6UQv 1/3
4/2/2021 6.4 Interpolación.ipynb - Colaboratory
plt.xlabel("Profundidad (m)")
plt.ylabel("Temperatura (°C)")
https://colab.research.google.com/drive/144WdMva0pZp45X-KUAIW8vft3rUb6UQv 2/3
4/2/2021 6.4.1 Interpolación polinomial.ipynb - Colaboratory
Interpolación polinomial
Consiste en encontrar uno o varios polinomios que pasen por todos los datos observados, es decir
la función $f(n)$ que se usará para el ajuste debe ser un polinomio.
$$f(x)=a_0+a_1x+a_2x^2+\ldots+a_nx^n$$
plt.xlabel("Profundidad (m)")
plt.ylabel("Temperatura (°C)")
Cargando...
plt.xlabel("Profundidad (m)")
plt.ylabel("Temperatura (°C)")
https://colab.research.google.com/drive/1YF7HLhADix8bVH93gKiQ-uABm9NQwC5W 1/3
4/2/2021 6.4.1 Interpolación polinomial.ipynb - Colaboratory
Encontrar rectas entre dos puntos es una tarea fácil pero lamentablemente pierde representatividad,
las transiciones entre cada segmento son bruscas, se busca que dichas transiciones sean lo más
suaves posibles.
Una buena opción es encontrar el polinomio del grado más alto posible. El problema tiene 8
observaciones por lo tanto se puede construir un polinomio de grado 7, en general el grado del
polinomio más alto es igual al número de observaciones menos uno.
import numpy as np
https://colab.research.google.com/drive/1YF7HLhADix8bVH93gKiQ-uABm9NQwC5W 2/3
4/2/2021 6.4.1.1 Diferencia divididas de Newton.ipynb - Colaboratory
Primer grado
La forma más sencilla de encontrar un grupo de polinomios que pasen por todas observaciones es
usando polinomios de primer grado (f1 (x) ), para ello se puede usar la ecuación de la recta a partir
de dos puntos:
f1 (x) − f (x 0 ) f (x 1 ) − f (x 0 )
=
x − x0 x1 − x0
Desjando f1 (x) :
f (x 1 ) − f (x 0 )
f1 (x) = f (x 0 ) + (x − x 0 )
x1 − x0
Aplicación
El primer paso para cualquier tipo de interpolación es ordenar los datos en función de la variable
independiente, recuerde que debe ordenar los pares. Partiendo el problema, los puntos observados y
ordenados se verían así:
N° Temperatura (°C) Profundidad (m)
1 22.8 0
8 22.8 2.3
3 22.8 4.9
4 20.6 9.1
5 13.9 13.7
2 11.7 18.3
7 11.1 22.9
6 11.1 27.2
El siguiente paso es identi car el intervalo donde se encuentra el valor de la variable independiente
para el cual se desea calcular la variable dependiente, en este caso se desea conocer la
temperatura del agua a 15m de profundidad, por lo tanto se debe usar el intervalo:
N° Temperatura (°C) Profundidad (m)
Punto f (xi ) xi
0 13.9 13.7
1 11.7 18.3
https://colab.research.google.com/drive/1zL5p2f1XURCqWkHcOr0W3pN_NqQ-aGKk 1/8
4/2/2021 6.4.1.1 Diferencia divididas de Newton.ipynb - Colaboratory
f (x 1 ) − f (x 0 )
f1 (x) = f (x 0 ) + (x − x 0 )
x1 − x0
Reemplazando:
11.7 − 13.9
f1 (15) = 13.9 + (15 − 13.7) = 13.278261
18.3 − 13.7
Segundo grado
Para forma un polinomio de segundo grado es necesario usar tres puntos, para ello se deben dividir
los datos de tres en tres, teniendo el cuidado de que el último elemento de un segmento debe ser el
primero del siguiente, una vez identi cado el segmento de trabajo es necesario encontrar los
coe cientes del polinomio, para este propósito se usa la siguiente ecuación:
f2 (x) = b0 + b1 (x − x 0 ) + b2 (x − x 0 )(x − x 1 )
Expandiendo:
2
f2 (x) = b0 + b1 x − b1 x 0 + b2 x + b2 x 0 x 1 − b2 x x 0 − b2 x x 1
a 0 = b0 − b1 x 0 + b2 x 0 x 1
a 1 = b1 − b2 x 0 − b2 x 1
a 2 = b2
Si se pueden encontrar los valores de b0 , b1 y b2 fácilmente se puede calcular los coe cientes a0 ,
a1 y a2 del polinomio, para calcular b0 , b1 y b2 se usan las siguientes ecuaciones:
b0 = f (x 0 )
f (x 1 ) − f (x 0 )
b1 =
x1 − x0
f (x 2 ) − f (x 1 ) f (x 1 ) − f (x 0 )
−
x2 − x1 x1 − x0
b2 =
x2 − x0
Aplicación
Luego de ordenar los datos es necesario dividir en intervalos de tres en tres:
https://colab.research.google.com/drive/1zL5p2f1XURCqWkHcOr0W3pN_NqQ-aGKk 2/8
4/2/2021 6.4.1.1 Diferencia divididas de Newton.ipynb - Colaboratory
1 22.8 0
8 22.8 2.3
3 22.8 4.9
4 20.6 9.1
5 13.9 13.7
2 11.7 18.3
7 11.1 22.9
6 11.1 27.2
Intervalo 1:
N° Temperatura (°C) Profundidad (m)
1 22.8 0
8 22.8 2.3
3 22.8 4.9
Intervalo 2:
N° Temperatura (°C) Profundidad (m)
3 22.8 4.9
4 20.6 9.1
5 13.9 13.7
Intervalo 3:
N° Temperatura (°C) Profundidad (m)
5 13.9 13.7
2 11.7 18.3
7 11.1 22.9
Intervalo 4:
N° Temperatura (°C) Profundidad (m)
7 11.1 22.9
6 11.1 27.2
El siguiente paso es identi car el intervalo donde se encuentra el valor de la variable independiente
para el cual se desea calcular la variable dependiente, en este caso se desea conocer la
temperatura del agua a 15m de profundidad, por lo tanto se debe usar el tercer intervalo:
N° Temperatura (°C) Profundidad (m)
Punto f (xi ) xi
0 13.9 13.7
https://colab.research.google.com/drive/1zL5p2f1XURCqWkHcOr0W3pN_NqQ-aGKk 3/8
4/2/2021 6.4.1.1 Diferencia divididas de Newton.ipynb - Colaboratory
1 11.7 18.3
2 11.1 22.9
A continuación se calcula b0 , b1 y b2 :
b0 = f (x 0 ) = 13.9
f (x 1 ) − f (x 0 ) 11.7 − 13.9
b1 = = = −0.47826086956521746
x1 − x0 18.3 − 13.7
Seguidamente se calcula a0 , a1 y a2 :
= 29.93081285444235
−1.688090737240076
a2 = b2 = 0.037807183364839334
A continuación se puede ver como la curva pase perfectamente por los tres puntos utilizados.
import numpy as np
import matplotlib as mpl
import matplotlib.pyplot as plt
%matplotlib inline
plt.xlabel("Profundidad (m)")
plt.ylabel("Temperatura (°C)")
https://colab.research.google.com/drive/1zL5p2f1XURCqWkHcOr0W3pN_NqQ-aGKk 4/8
4/2/2021 6.4.1.1 Diferencia divididas de Newton.ipynb - Colaboratory
Para terminar es necesario calcular el valor de la variable dependiente a partir del dato de la
variable independiente.
= 13.11606805293006
Forma general
Después de ordenar y dividir los datos en función del polinomio requerido, para encontrar el se usa
la siguiente ecuación:
b0 = f (x 0 )
b1 = f [x 1 , x 0 ]
b2 = f [x 2 , x 1 , x 0 ]
bn = f [x n , x n−1 , … , x 1 , x 0 ]
Note que f no es una función normal, no usa paréntesis, usa corchetes, para calcular su valor se
usan las siguientes ecuaciones:
f (x i ) − f (x j )
f [x i , x j ] =
xi − xj
f [x i , x j ] − f [x j , x k ]
f [x i , x j , x k ] =
xi − xk
f [x n , … , x 1 ] − f [x n−1 , … , x 0 ]
f [x n , x n−1 , … , x 1 , x 0 ] =
xn − x0
Una vez encontrados los valores para las b se reemplaza directamente en la primera ecuación,
encontrar el polinomio de la forma ax2 + bx + c puede llevar mucho tiempo.
https://colab.research.google.com/drive/1zL5p2f1XURCqWkHcOr0W3pN_NqQ-aGKk 5/8
4/2/2021 6.4.1.1 Diferencia divididas de Newton.ipynb - Colaboratory
Aplicación
Resolver el problema, usando un polinomio de tercer grado.
En primer lugar es necesario dividir el polinomio cada cuatro puntos, recuerdo que se necesita
$grado+1$ puntos para encontrar el polinomio.
Intervalo 1:
N° Temperatura (°C) Profundidad (m)
1 22.8 0
8 22.8 2.3
3 22.8 4.9
4 20.6 9.1
Intervalo 2:
N° Temperatura (°C) Profundidad (m)
4 20.6 9.1
5 13.9 13.7
2 11.7 18.3
7 11.1 22.9
Intervalo 3:
N° Temperatura (°C) Profundidad (m)
7 11.1 22.9
6 11.1 27.2
2 11.7 18.3
3 11.1 22.9
Como primer paso es necesario construir el polinomio de tercer grado usando la ecuación:
$$f_n(x)=b_0+b_1(x-x_0)+\ldots+b_n(x-x_0)(x-x_1)\ldots(x-x_{n-1})$$
https://colab.research.google.com/drive/1zL5p2f1XURCqWkHcOr0W3pN_NqQ-aGKk 6/8
4/2/2021 6.4.1.1 Diferencia divididas de Newton.ipynb - Colaboratory
$b_0$
$b_1(x-x_0)$
$b_2(x-x_0)(x-x_1)$
$b_3(x-x_0)(x-x_1)(x-x_2)$
Calculando $b_0:$
$b_0=f(x_0)=20.6$
Calculando $b_1:$
Para determinar cuántos parámetros tiene $f[]$ se inicia con el mismo índice de $b$, para este caso
$1$ y se continúa hasta llegar a $0$.
$b_1=f[x_1, x_0]=\dfrac{f(x_1)-f(x_0)}{x_1-x_0}$
$b_1=f[13.7, 9.1]=\dfrac{13.9-20.6}{13.7-9.1}=-1.456521739$
Calculando $b_2:$
$f[18.3, 13.7]=\dfrac{11.7-13.9}{18.3-13.7}=-0.47826087$
Calculando $b_3:$
No se puede calcular directamente, es necesario calcular previamente $f[22.9, 18.3, 13.7]$ y $f[18.3,
13.7, 9.1]$:
$f[22.9, 18.3]=\dfrac{11.1-11.7}{22.9-18.3}=-0.130434783$
https://colab.research.google.com/drive/1zL5p2f1XURCqWkHcOr0W3pN_NqQ-aGKk 7/8
4/2/2021 6.4.1.1 Diferencia divididas de Newton.ipynb - Colaboratory
Para nalizar es necesario reeemplazar $x$, $b_0$, $b_1$, $b_2$ y $b_3$ en:
$$f_3(x)=b_0+b_1(x-x_0)+b_2(x-x_0)(x-x_1)+b_3(x-x_0)(x-x_1)(x-x_2)$$
$$f_3(15)=20.6+(-1.456521739)*(15-9.1)+0.106332703*(15-9.1)*(15-13.7)+(-0.004965617)*(15-
9.1)*(15-13.7)*(15-18.3)=12.947778$$
https://colab.research.google.com/drive/1zL5p2f1XURCqWkHcOr0W3pN_NqQ-aGKk 8/8
4/2/2021 6.4.1.2 Lagrange - Colaboratory
Lagrange
Es necesario seguir los pasos iniciales de los métodos anterior: ordenar y elegir el intervalo de
trabajo. Para encontrar el polinomio se usan las siguientes ecuaciones:
n
fn (x) = ∑ L i (x)f (x i )
i=0
n
x − xj
L i (x) = ∏
xi − xj
j=0,i≠j
∑ : Sumatoria.
∏ : Productoria.
Aplicación
Resolver el problema, usando un polinomio de tercer grado.
Puntos f (xi ) xi
0 20.6 9.1
1 13.9 13.7
2 11.7 18.3
3 11.1 22.9
Calculando L0 (15) :
x − x1 x − x2 x − x3
L 0 (x) = ∗ ∗
x0 − x1 x0 − x2 x0 − x3
Calculando L1 (15) :
x − x0 x − x2 x − x3
L 1 (x) = ∗ ∗
x1 − x0 x1 − x2 x1 − x3
Calculando L2 (15) :
https://colab.research.google.com/drive/1DJ6jSD6QkxTY6MPTa0XqHovzzjrJBlSR 1/2
4/2/2021 6.4.1.2 Lagrange - Colaboratory
x − x0 x − x1 x − x3
L 2 (x) = ∗ ∗
x2 − x0 x2 − x1 x2 − x3
Calculando L3 (15) :
x − x0 x − x1 x − x2
L 3 (x) = ∗ ∗
x3 − x0 x3 − x1 x3 − x2
f3 (x) = ∑ L i (x)f (x i )
i=0
https://colab.research.google.com/drive/1DJ6jSD6QkxTY6MPTa0XqHovzzjrJBlSR 2/2
4/2/2021 6.4.1.3 Coeficientes de una interpolación polinomial.ipynb - Colaboratory
Aplicación
Resolver el problema, usando un polinomio de tercer grado.
Puntos f (xi ) xi
0 20.6 9.1
1 13.9 13.7
2 11.7 18.3
3 11.1 22.9
https://colab.research.google.com/drive/19IKH3Axnzqo4gy1-jYNgkfv4m2egEsaL 1/2
4/2/2021 6.4.1.3 Coeficientes de una interpolación polinomial.ipynb - Colaboratory
⎣ ⎦ ⎣ ⎦ ⎣ ⎦
1 22.9 524.41 12008.989 a3 11.1
Resolviendo el sistema:
a0 58.4397083
⎡ ⎤ ⎡ ⎤
⎢ a1 ⎥ ⎢ −6.57182509 ⎥
⎢ ⎥ = ⎢ ⎥
⎢a ⎥ ⎢ 0.310419578 ⎥
2
⎣ ⎦ ⎣ ⎦
a3 −0.00496561738
Como se puede ver los tres métodos obtienen la misma respuesta, por lo tanto generan el mismo
polinomio.
https://colab.research.google.com/drive/19IKH3Axnzqo4gy1-jYNgkfv4m2egEsaL 2/2
4/2/2021 6.4.2 Interpolación Spline.ipynb - Colaboratory
Interpolación Spline
Usar todos los datos observados para encontrar un polinomio es una buena estrategia que
garantiza transiciones suaves entre los intervalos, pero cuando el fenómeno cambia bruscamente
resulta ser una estrategia mala, el polinomio resultante está lejos de la función real, en este caso
sería mejor un ajuste polinomial de primer grado; como se puede ver en la gura:
Una mejor estrategia es usar una función spline o simplmente spline. Una función spline está
formada por varios polinomios, cada uno de nido sobre un subintervalo, que se unen entre sí
obedeciendo a ciertas condiciones de continuidad. Las transiciones entre cada intervalo son suaves
porque los dos intervalos tienen la misma pendiente.
Se pueden calcular splines de diferentes grados para los más útiles en ingeniería son:
1. Spline lineal.
2. Spline cuadrático.
3. Spline cúbico.
https://colab.research.google.com/drive/1FDY3giTu15uTqFJdZiocG3-2t-AhqsTA 1/2
4/2/2021 6.4.2.1 Spline lineal.ipynb - Colaboratory
Spline lineal
Consiste en encontrar un polinomio de primer orden (f i(x) = ai x + bi ) para cada segmento, como
se puede ver a continuación:
https://colab.research.google.com/drive/1cTurDYCf3xANsZ8UewItE_bj9uCFoW2F 1/2
4/2/2021 6.4.2.2 Spline cuadrático.ipynb - Colaboratory
Spline cuadrático
Los puntos se empiezan a contar desde cero y el índice del último dato observado es igual al
número de intervalos.
Es necesario encontrar los coe cientes que de nen el polinomio de segundo orden (ai , bi y ci ), es
necesario un sistema de 3n ecuaciones y 3n incógnitas. Para encontrarlas se siguen los siguientes
criterios:
https://colab.research.google.com/drive/1YGUGeXt8PK7nob80VRiy448XocAnRy6f 1/8
4/2/2021 6.4.2.2 Spline cuadrático.ipynb - Colaboratory
1. Los valores de las funciones deben ser iguales en los nodos interiores. Esta condición se
representa mediante:
2
ai−1 x + bi−1 x i−1 + ci−1 = f (x i−1 )
i−1
2
ai x + bi x i−1 + ci = f (x i−1 )
i−1
i = 2⋯n
Se generan 2n − 2 ecuaciones.
2. La primera y la última función deben pasar a través de los puntos nales. Esto agrega dos
ecuaciones adicionales:
2
a1 x + b1 x 0 + c1 = f (x 0 )
0
2
an x n + bn x n + cn = f (x n )
Se generan 2 ecuaciones.
i = 2⋯n
Se generan n − 1 ecuaciones.
a1 = 0
Se generan 1 ecuación.
Una vez resulto el sistema de ecuaciones construir los polinomios para cada segmento.
Finalmente identi car el segmento donde se encuentra el valor de la variable independiente y con su
polonimio encontrar el valor de la variable dependiente.
Note que es necesario trabajar con todos los datos desde un principio esto representa mayor
trabajo, pero mejora los resultados.
Aplicación
Resolver el problema aplicando spline cuadrático.
El problema tiene ocho datos observados por lo tanto tiene siete intervalos, al igual que en la
interpolación polinomial es necesario ordenar los datos.
i Temperatura (°C) Profundidad (m)
0 22.8 0
1 22.8 2.3
https://colab.research.google.com/drive/1YGUGeXt8PK7nob80VRiy448XocAnRy6f 2/8
4/2/2021 6.4.2.2 Spline cuadrático.ipynb - Colaboratory
2 22.8 4.9
3 20.6 9.1
4 13.9 13.7
5 11.7 18.3
6 11.1 22.9
7 11.1 27.2
Criterio 1:
i = 2
2
a1 x + b1 x 1 + c1 = f (x 1 )
1
2
a2 x + b2 x 1 + c2 = f (x 1 )
1
2
a1 (2.3) + b1 (2.3) + c1 = f (2.3)
2
a2 (2.3) + b2 (2.3) + c2 = f (2.3)
i = 3
2
a2 x + b2 x 2 + c2 = f (x 2 )
2
2
a3 x + b3 x 2 + c3 = f (x 2 )
2
2
a2 (4.9) + b2 (4.9) + c2 = f (4.9)
2
a3 (4.9) + b3 (4.9) + c3 = f (4.9)
i = 4
2
a3 x + b3 x 3 + c3 = f (x 3 )
3
2
a4 x + b4 x 3 + c4 = f (x 3 )
3
2
a3 (9.1) + b3 (9.1) + c3 = f (9.1)
2
a4 (9.1) + b4 (9.1) + c4 = f (9.1)
i = 5
2
a4 x + b4 x 4 + c4 = f (x 4 )
4
2
a5 x + b5 x 4 + c5 = f (x 4 )
4
2
a4 (13.7) + b4 (13.7) + c4 = f (13.7)
2
a5 (13.7) + b5 (13.7) + c5 = f (13.7)
i = 6
2
a5 x + b5 x 5 + c5 = f (x 5 )
5
2
a6 x + b6 x 5 + c6 = f (x 5 )
5
2
a5 (18.3) + b5 (18.3) + c5 = f (18.3)
2
a6 (18.3) + b6 (18.3) + c6 = f (18.3)
i = 7
https://colab.research.google.com/drive/1YGUGeXt8PK7nob80VRiy448XocAnRy6f 3/8
4/2/2021 6.4.2.2 Spline cuadrático.ipynb - Colaboratory
2
a6 x + b6 x 6 + c6 = f (x 6 )
6
2
a7 x + b7 x 6 + c7 = f (x 6 )
6
2
a6 (22.9) + b6 (22.9) + c6 = f (22.9)
2
a7 (22.9) + b7 (22.9) + c7 = f (22.9)
Criterio 2:
2
a1 x + b1 x 0 + c1 = f (x 0 )
0
2
a7 x + b7 x 7 + cn = f (x 7 )
7
2
a1 (0) + b1 (0) + c1 = f (0)
2
a7 (27.2) + b7 (27.2) + cn = f (27.2)
Criterio 3:
i = 2
2a1 x 1 + b1 = 2a2 x 1 + b2
i = 3
2a2 x 2 + b2 = 2a3 x 2 + b3
i = 4
2a3 x 3 + b3 = 2a4 x 3 + b4
i = 5
2a4 x 4 + b4 = 2a5 x 4 + b5
i = 6
2a5 x 5 + b5 = 2a6 x 5 + b6
i = 7
2a6 x 6 + b6 = 2a7 x 6 + b7
Criterio 4:
a1 = 0
⎢ 0. 0. 0. 5.29 2.3 1. 0. 0. 0. 0. 0. 0. 0. 0.
⎢
⎢ 0. 0. 0. 24.01 4.9 1. 0. 0. 0. 0. 0. 0. 0. 0.
⎢
⎢
⎢ 0. 0. 0. 0. 0. 0. 24.01 4.9 1. 0. 0. 0. 0. 0.
⎢
⎢
0. 0. 0. 0. 0. 0. 82.81 9.1 1. 0. 0. 0. 0. 0.
⎢
⎢
⎢ 0. 0. 0. 0. 0. 0. 0. 0. 0. 82.81 9.1 1. 0. 0.
⎢
⎢
⎢ 0. 0. 0. 0. 0. 0. 0. 0. 0. 187.69 13.7 1. 0. 0.
⎢
⎢ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 187.6913.7 1.
⎢
⎢
⎢ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 334.8918.3 1.
⎢
⎢
0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
⎢
⎢
⎢ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
⎢
⎢
⎢ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
⎢
⎢ 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
⎢
⎢
⎢ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
⎢
⎢ 4.6 1. 0. −4.6 −1. 0. 0. 0. 0. 0. 0. 0. 0. 0.
⎢
⎢
⎢ 0. 0. 0. 9.8 1. 0. −9.8 −1. 0. 0. 0. 0. 0. 0.
⎢
⎢
0. 0. 0. 0. 0. 0. 18.2 1. 0. −18.2 −1. 0. 0. 0.
⎢
⎢
⎢ 0. 0. 0. 0. 0. 0. 0. 0. 0. 27.4 1. 0. −27.4 −1.
⎢
⎢
⎢ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 36.6 1.
⎢
⎢ 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
⎣
1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
a1 22.8
⎡ ⎤ ⎡ ⎤
⎢ b1 ⎥ ⎢ 22.8 ⎥
⎢ ⎥ ⎢ ⎥
⎢ c ⎥ ⎢ 22.8 ⎥
⎢ 1 ⎥ ⎢ ⎥
⎢ ⎥ ⎢ ⎥
⎢ a2 ⎥ ⎢ 22.8 ⎥
⎢ ⎥ ⎢ ⎥
⎢ ⎥ ⎢ ⎥
20.6
⎢ b2 ⎥ ⎢ ⎥
⎢ ⎥ ⎢ ⎥
⎢ c ⎥ ⎢ 20.6 ⎥
2
⎢ ⎥ ⎢ ⎥
⎢ ⎥ ⎢ ⎥
⎢ a3 ⎥ ⎢ 13.9 ⎥
⎢ ⎥ ⎢ ⎥
⎢ b ⎥ ⎢ 13.9 ⎥
⎢ 3 ⎥ ⎢ ⎥
⎢ ⎥ ⎢ ⎥
⎢ c3 ⎥ ⎢ 11.7 ⎥
⎢ ⎥ ⎢ ⎥
⎢ ⎥ ⎢ ⎥
a 11.7
⎢ 4 ⎥ ⎢ ⎥
⎢ ⎥ ⎢ ⎥
∗ ⎢ b ⎥ = ⎢ 11.1 ⎥
4
⎢ ⎥ ⎢ ⎥
⎢ ⎥ ⎢ ⎥
⎢ c4 ⎥ ⎢ 11.1 ⎥
⎢ ⎥ ⎢ ⎥
⎢a ⎥ ⎢ 22.8 ⎥
⎢ 5 ⎥ ⎢ ⎥
⎢ ⎥ ⎢ ⎥
⎢ b5 ⎥ ⎢ 11.1 ⎥
⎢ ⎥ ⎢ ⎥
⎢ ⎥ ⎢ 0. ⎥
c
⎢ 5 ⎥ ⎢ ⎥
⎢ ⎥ ⎢ ⎥
⎢ a6 ⎥ ⎢ 0. ⎥
⎢ ⎥ ⎢ ⎥
⎢ ⎥ ⎢ ⎥
0.
⎢ b6 ⎥ ⎢ ⎥
⎢ ⎥ ⎢ ⎥
⎢ ⎥ ⎢ 0 ⎥
https://colab.research.google.com/drive/1YGUGeXt8PK7nob80VRiy448XocAnRy6f 5/8
4/2/2021 6.4.2.2 Spline cuadrático.ipynb - Colaboratory
⎢ c ⎥ ⎢ 0. ⎥
6
⎢ ⎥ ⎢ ⎥
⎢ ⎥ ⎢ ⎥
⎢ a7 ⎥ ⎢ 0. ⎥
⎢ ⎥ ⎢ ⎥
⎢ b ⎥ ⎢ 0. ⎥
7
⎣ ⎦ ⎣ ⎦
c7 0.
Resolviendo el sistema:
a1 0.
⎡ ⎤ ⎡ ⎤
⎢ b1 ⎥ ⎢ 0. ⎥
⎢ ⎥ ⎢ ⎥
⎢ c ⎥ ⎢ 22.8 ⎥
⎢ 1 ⎥ ⎢ ⎥
⎢ ⎥ ⎢ ⎥
⎢ a2 ⎥ ⎢ 0. ⎥
⎢ ⎥ ⎢ ⎥
⎢ ⎥ ⎢ ⎥
0.
⎢ b2 ⎥ ⎢ ⎥
⎢ ⎥ ⎢ ⎥
⎢ c ⎥ ⎢ 22.8 ⎥
2
⎢ ⎥ ⎢ ⎥
⎢ ⎥ ⎢ ⎥
⎢ a3 ⎥ ⎢ 0.124716553 ⎥
⎢ ⎥ ⎢ ⎥
⎢ b ⎥ ⎢ 1.22222222 ⎥
⎢ 3 ⎥ ⎢ ⎥
⎢ ⎥ ⎢ ⎥
⎢ c3 ⎥ ⎢ 19.8055556 ⎥
⎢ ⎥ ⎢ ⎥
⎢ ⎥ ⎢ −0.0888918895 ⎥
a
⎢ 4 ⎥ ⎢ ⎥
⎢ ⎥ ⎢ ⎥
⎢ b4 ⎥ = ⎢ 0.570213341 ⎥
⎢ ⎥ ⎢ ⎥
⎢ ⎥ ⎢ ⎥
⎢ c4 ⎥ ⎢ 22.772196 ⎥
⎢ ⎥ ⎢ ⎥
⎢a ⎥ ⎢ 0.301557296 ⎥
⎢ 5 ⎥ ⎢ ⎥
⎢ ⎥ ⎢ ⎥
⎢ b5 ⎥ ⎢ −10.1280943 ⎥
⎢ ⎥ ⎢ ⎥
⎢ ⎥ ⎢ 96.0556036 ⎥
c
⎢ 5 ⎥ ⎢ ⎥
⎢ ⎥ ⎢ ⎥
⎢ a6 ⎥ ⎢ −0.225942929 ⎥
⎢ ⎥ ⎢ ⎥
⎢ ⎥ ⎢ ⎥
9.1784139
⎢ b6 ⎥ ⎢ ⎥
⎢ ⎥ ⎢ ⎥
⎢ c ⎥ ⎢ −80.5989468 ⎥
6
⎢ ⎥ ⎢ ⎥
⎢ ⎥ ⎢ ⎥
⎢ a7 ⎥ ⎢ 0.27204006 ⎥
⎢ ⎥ ⎢ ⎥
⎢ b ⎥ ⎢ −13.629207 ⎥
7
⎣ ⎦ ⎣ ⎦
c7 180.548312
0 ≤ x ≤ 2.3 22.8
2
4.9 ≤ x ≤ 9.1 −0.124716553x + 1.22222222x + 19.8055556
2
9.1 ≤ x ≤ 13.7 −0.0888918895x + 0.570213341x + 22.772196
2
13.7 ≤ x ≤ 18.3 0.301557296x − 10.1280943x + 96.0556036
2
18.3 ≤ x ≤ 22.9 −0.225942929x + 9.1784139x − 80.5989468
2
22.9 ≤ x ≤ 27.2 0.27204006x − 13.629207x + 180.548312
https://colab.research.google.com/drive/1YGUGeXt8PK7nob80VRiy448XocAnRy6f 6/8
4/2/2021 6.4.2.2 Spline cuadrático.ipynb - Colaboratory
El valor de la variable independiete es 15m que se encuentrar en el intervalo 13.7 ≤ x ≤ 18.3 por lo
tanto se debe usar el polinomio:
2
0.301557296x − 10.1280943x + 96.0556036
2
f (15) = 0.301557296(15) − 10.1280943(15) + 96.0556036 = 11.98458
fig, ax = plt.subplots()
plt.xlabel("Profundidad (m)")
lt l b l("T t (°C)")
https://colab.research.google.com/drive/1YGUGeXt8PK7nob80VRiy448XocAnRy6f 7/8
4/2/2021 6.4.2.2 Spline cuadrático.ipynb - Colaboratory
plt.ylabel("Temperatura (°C)")
ax.legend();
https://colab.research.google.com/drive/1YGUGeXt8PK7nob80VRiy448XocAnRy6f 8/8
4/2/2021 6.4.2.3 Spline cúbico.ipynb - Colaboratory
Spline cúbico
Es necesario encontrar los coe cientes que de nen el polinomio de tercer orden (ai , bi , ci y di ), es
necesario un sistema de 4n ecuaciones y 4n incógnitas. Para encontrarlas se siguen los siguientes
criterios:
1. Los valores de las funciones deben ser iguales en los nodos interiores. Esta condición se
representa mediante:
3 2
ai−1 x + bi−1 x + ci−1 x i−1 + d i−1 = f (x i−1 )
i−1 i−1
3 2
ai x + bi x + ci x i−1 + d i = f (x i−1 )
i−1 i−1
i = 2⋯n
Se generan 2n − 2 ecuaciones.
Se generan 2 ecuaciones.
2 2
3ai−1 x + 2bi−1 x i−1 + ci−1 = 3ai x + 2bi x i−1 + ci
i−1 i−1
i = 2⋯n
Se generan n − 1 ecuaciones.
i = 2⋯n
Se generan n − 1 ecuaciones.
5. Se asume que las segundas derivadas en los puntos nales son iguales a cero:
6a1 x 0 + 2b1 = 0
6an x n + 2bn = 0
Se generan 2 ecuaciones.
Una vez resulto el sistema de ecuaciones construir los polinomios para cada segmento.
https://colab.research.google.com/drive/1hYk2uuEjQdU8Qg0vQLgDg12jC57PvrJQ 1/6
4/2/2021 6.4.2.3 Spline cúbico.ipynb - Colaboratory
Finalmente identi car el segmento donde se encuentra el valor de la variable independiente y con su
polonimio encontrar el valor de la variable dependiente.
Note que es necesario trabajar con todos los datos desde un principio esto representa mayor
trabajo, pero mejora los resultados.
Aplicación
Resolver el problema aplicando spline cúbico.
Resolviendo el sistema:
https://colab.research.google.com/drive/1hYk2uuEjQdU8Qg0vQLgDg12jC57PvrJQ 3/6
4/2/2021 6.4.2.3 Spline cúbico.ipynb - Colaboratory
a1 0.002174
⎡ ⎤ ⎡ ⎤
⎢ b1 ⎥ ⎢ 0. ⎥
⎢ ⎥ ⎢ ⎥
⎢ c ⎥ ⎢ −0.0115 ⎥
⎢ 1 ⎥ ⎢ ⎥
⎢ ⎥ ⎢ ⎥
⎢ d1 ⎥ ⎢ 22.8 ⎥
⎢ ⎥ ⎢ ⎥
⎢ ⎥ ⎢ −0.009172 ⎥
a
⎢ 2 ⎥ ⎢ ⎥
⎢ ⎥ ⎢ ⎥
⎢ b2 ⎥ ⎢ 0.078283 ⎥
⎢ ⎥ ⎢ ⎥
⎢ ⎥ ⎢ ⎥
c −0.191551
⎢ 2 ⎥ ⎢ ⎥
⎢ ⎥ ⎢ ⎥
⎢ d2 ⎥ ⎢ 22.938039 ⎥
⎢ ⎥ ⎢ ⎥
⎢ ⎥ ⎢ ⎥
−0.011415
⎢ a3 ⎥ ⎢ ⎥
⎢ ⎥ ⎢ ⎥
⎢ b ⎥ ⎢ 0.111256 ⎥
3
⎢ ⎥ ⎢ ⎥
⎢ ⎥ ⎢ ⎥
⎢ c3 ⎥ ⎢ −0.353116 ⎥
⎢ ⎥ ⎢ ⎥
⎢d ⎥ ⎢ 23.201928 ⎥
⎢ 3 ⎥ ⎢ ⎥
⎢ ⎥ ⎢ ⎥
⎢ a4 ⎥ ⎢ 0.029731 ⎥
⎢ ⎥ ⎢ ⎥
⎢ b ⎥ ⎢ −1.012018 ⎥
⎢ 4 ⎥ = ⎢ ⎥
⎢ ⎥ ⎢ ⎥
⎢ c4 ⎥ ⎢ 9.868674 ⎥
⎢ ⎥ ⎢ ⎥
⎢ ⎥ ⎢ −7.804166 ⎥
d
⎢ 4 ⎥ ⎢ ⎥
⎢ ⎥ ⎢ ⎥
⎢ a5 ⎥ ⎢ −0.01531 ⎥
⎢ ⎥ ⎢ ⎥
⎢ ⎥ ⎢ 0.839182 ⎥
b
⎢ 5 ⎥ ⎢ ⎥
⎢ ⎥ ⎢ ⎥
⎢ c5 ⎥ ⎢ −15.492766 ⎥
⎢ ⎥ ⎢ ⎥
⎢ ⎥ ⎢ ⎥
108.013072
⎢ d5 ⎥ ⎢ ⎥
⎢ ⎥ ⎢ ⎥
⎢a ⎥ ⎢ 0.00171 ⎥
6
⎢ ⎥ ⎢ ⎥
⎢ ⎥ ⎢ ⎥
⎢ b6 ⎥ ⎢ −0.095592 ⎥
⎢ ⎥ ⎢ ⎥
⎢ c ⎥ ⎢ 1.613588 ⎥
6
⎢ ⎥ ⎢ ⎥
⎢ ⎥ ⎢ ⎥
⎢ d6 ⎥ ⎢ 3.664319 ⎥
⎢ ⎥ ⎢ ⎥
⎢a ⎥ ⎢ −0.001731 ⎥
⎢ 7 ⎥ ⎢ ⎥
⎢ ⎥ ⎢ ⎥
⎢ b7 ⎥ ⎢ 0.141272 ⎥
⎢ ⎥ ⎢ ⎥
⎢ c ⎥ ⎢ −3.810587 ⎥
7
⎣ ⎦ ⎣ ⎦
d7 45.068852
3 2
2.3 ≤ x ≤ 4.9 −0.009172x + 0.078283x − 0.191551x + 22.938039
3 2
4.9 ≤ x ≤ 9.1 −0.011415x + 0.111256x − 0.353116x + 23.201928
3 2
9.1 ≤ x ≤ 13.7 0.029731x − 1.012018x + 9.868674x − 7.804166
3 2
13.7 ≤ x ≤ 18.3 −0.01531x + 0.839182x − 15.492766x + 108.013072
3 2
18.3 ≤ x ≤ 22.9 0.00171x − 0.095592x + 1.613588x + 3.664319
https://colab.research.google.com/drive/1hYk2uuEjQdU8Qg0vQLgDg12jC57PvrJQ 4/6
4/2/2021 6.4.2.3 Spline cúbico.ipynb - Colaboratory
El valor de la variable independiete es 15m que se encuentrar en el intervalo 13.7 ≤ x ≤ 18.3 por lo
tanto se debe usar el polinomio:
3 2
−0.01531x + 0.839182x − 15.492766x + 108.013072
3 2
f (15) = $ − 0.01531(15) + 0.839182(15) − 15.492766(15) + 108.013072$ = 12.76519
fig, ax = plt.subplots()
plt.xlabel("Profundidad (m)")
plt.ylabel("Temperatura (°C)")
ax.legend();
https://colab.research.google.com/drive/1hYk2uuEjQdU8Qg0vQLgDg12jC57PvrJQ 6/6
4/2/2021 7.1.1 Formulas de Integración de Newton-Cotes.ipynb - Colaboratory
I = ∫ f (x)dx ≊ ∫ fn (x)dx
a a
Si f (x) y fn (x) sin aproximadamente iguales entre a y b entonces las áreas debajo de ellas serán
aproximadamente iguales, por lo tanto es posible integrar una ecuación muy compleja si se
encuentra un polinomio que sea aproximadamente igual en el segmento de integración.
Regla trapezoidal.
Regla de Simpson 1/3.
Regla de Simpson 3/8.
https://colab.research.google.com/drive/1FefuN6MO1HdRhpzH9w4WCuRDFfWjhMrk 1/2
4/2/2021 7.1.1.1 Regla trapezoidal.ipynb - Colaboratory
Regla trapezoidal
Consiste en reemplazar la función (f (x) ) por un polinomio de primer grado (f1 (x) ) en el segmento
de integración.
b b
I = ∫ f (x)dx ≊ ∫ f1 (x)dx
a a
El polinomio de primer grado (f1 (x) ) se puede calcular usando una interpolación polinomial de
primer grado, se puede ver que en lugar de x0 y x1 se usan los límites de la integral.
f (b) − f (a)
f1 (x) = f (a) + (x − a)
b −a
b
f (b) − f (a)
I = ∫ f (a) + (x − a)dx
a
b −a
Si bien el razonamiento y la obtención de la regla son fáciles, esta regla genera un error muy grande,
como se puede ver a continuación.
Dependiendo de la función y del punto especí co del segmento el error puede cambiar, para estimar
el error se usa la siguiente fórmula:
1
′′ 3
E = − f (ξ)(b − a)
12
a ≤ ξ ≤ b
Donde ξ es el punto especí co del segmento del cual se debea calcular el error.
https://colab.research.google.com/drive/1oe7D0-wroVMhXijQwepQmMnA1lcjaiyo 1/4
4/2/2021 7.1.1.1 Regla trapezoidal.ipynb - Colaboratory
Se puede apreciar que mientras mayor sea la cantidad de subsegmentos mejor la integración,
gracias a las computadoras esto es posible generando miles de subsegmentos.
Todos los subsegmentos deben tener el mismo ancho, que se calcula con la siguiente ecuación:
b −a
h =
n
Donde:
h , ancho del subsegmento, para obtener mejores resultados debe tener una cantidad nita de
decimales.
n , cantidad de subsegmentos, mientras más subsegmentos mejor la aproximación.
a , límite inferior.
b , límite superior.
https://colab.research.google.com/drive/1oe7D0-wroVMhXijQwepQmMnA1lcjaiyo 2/4
4/2/2021 7.1.1.1 Regla trapezoidal.ipynb - Colaboratory
x i−1 ≤ ξi ≤ x i
Aplicación
Calcule la siguiente integral:
3
2 x
I = ∫ x e dx
0
a = 0
b = 3
n = 11
b−a 3−0
h = = = 0.2727272727272727 …
n 11
Como se puede ver h no tiene una cantidad nita de decimales por lo tanto no usar n = 11 no es
buena idea.
n = 12
b−a 3−0
h = = = 0.25
n 12
h
I = [f (x 0 ) + 2(f (x 1 ) + f (x 2 ) + f (x 3 ) + f (x 4 ) + f (x 5 ) + f (x 6 ) + f (x 7 ) + f (x 8 ) + f (x 9 ) +
2
x0 = a = 0
x 1 = x 0 + h = 0 + 0.25 = 0.25
x 4 = x 3 + h = 0.75 + 0.25 = 1
x 5 = x 4 + h = 1 + 0.25 = 1.25
x 8 = x 7 + h = 1.75 + 0.25 = 2
x 9 = x 8 + h = 2 + 0.25 = 2.25
https://colab.research.google.com/drive/1oe7D0-wroVMhXijQwepQmMnA1lcjaiyo 3/4
4/2/2021 7.1.1.1 Regla trapezoidal.ipynb - Colaboratory
x 12 = b = 3
En general:
x0 = a
xn = b
x i+1 = x i + h
Reemplazando:
h
I = [f (0) + 2(f (0.25) + f (0.5) + f (0.75) + f (1) + f (1.25) + f (1.5) + f (1.75) + f (2) + f (2
2
= 99.99331307969648
Resolviendo algebraicamente:
3 3
∣
2 x x 2
I = ∫ x e dx = e (2 − 2x + x )∣ = 98.42768461593835
0
∣
0
Como se puede ver el resultado obtenido con n = 12 está muy lejos del valor verdadero, con
n = 16000 se obtiene I = 98.42768549861893 que tiene 6 decimales de similitud.
Para que la regla sea útil es necesario usar una cantidad de subsegmentos muy grande.
https://colab.research.google.com/drive/1oe7D0-wroVMhXijQwepQmMnA1lcjaiyo 4/4
4/2/2021 7.1.1.2 Regla de Simpson 1/3.ipynb - Colaboratory
Para obtener un polinomio de segundo grado ($f_2(x)$) es necesario contar con tres puntos, los
límites son dos de ellos, el tercero se obtiene con el punto medio.
$h = \frac{(b-a)}{2}$
$x_0 = a$
$x_1 = x_0+h$
$x_2 = b$
Dependiendo de la función y del punto especí co del segmento el error puede cambiar, para estimar
el error se usa la siguiente fórmula:
$$E = -\frac{1}{90}h^5f^{(4)}(\xi)$$
Donde $\xi$ es el punto especí co del segmento del cual se debea calcular el error.
Además de tener los cuidados mencionados en la regla trapezoidal, $n$$n$ debe ser par.
Aplicación
Calcule la siguiente integral:
$a=0$$a=0$
$b=3$$b=3$
$n=12$$n=12$
$h=\frac{b-a}{n}=\frac{3-0}{12}=0.25$$h=\frac{b-a}{n}=\frac{3-0}{12}=0.25$
$$I=\frac{h}{3} \left[
f(x_0)+4(f(x_{1})+f(x_{3})+f(x_{5})+f(x_{7})+f(x_{9})+f(x_{11}))+2(f(x_2)+f(x_4)+f(x_6)+f(x_8)+f(x_{10
}))+f(x_{12}) \right]$$$$I=\frac{h}{3} \left[
f(x_0)+4(f(x_{1})+f(x_{3})+f(x_{5})+f(x_{7})+f(x_{9})+f(x_{11}))+2(f(x_2)+f(x_4)+f(x_6)+f(x_8)+f(x_{10
}))+f(x_{12}) \right]$$
$x_{0}=a = 0$$x_{0}=a = 0$
$x_{1}=x_{0}+h = 0 + 0.25 = 0.25$$x_{1}=x_{0}+h = 0 + 0.25 = 0.25$
$x_{2}=x_{1}+h = 0.25 + 0.25 = 0.5$$x_{2}=x_{1}+h = 0.25 + 0.25 = 0.5$
$x_{3}=x_{2}+h = 0.5 + 0.25 = 0.75$$x_{3}=x_{2}+h = 0.5 + 0.25 = 0.75$
$x_{4}=x_{3}+h = 0.75 + 0.25 = 1$$x_{4}=x_{3}+h = 0.75 + 0.25 = 1$
$x_{5}=x_{4}+h = 1 + 0.25 = 1.25$$x_{5}=x_{4}+h = 1 + 0.25 = 1.25$
$x_{6}=x_{5}+h = 1.25 + 0.25 = 1.5$$x_{6}=x_{5}+h = 1.25 + 0.25 = 1.5$
$x_{7}=x_{6}+h = 1.5 + 0.25 = 1.75$$x_{7}=x_{6}+h = 1.5 + 0.25 = 1.75$
$x_{8}=x_{7}+h = 1.75 + 0.25 = 2$$x_{8}=x_{7}+h = 1.75 + 0.25 = 2$
$x_{9}=x_{8}+h = 2 + 0.25 = 2.25$$x_{9}=x_{8}+h = 2 + 0.25 = 2.25$
$x_{10}=x_{9}+h = 2.25 + 0.25 = 2.5$$x_{10}=x_{9}+h = 2.25 + 0.25 = 2.5$
$x_{11}=x_{10}+h = 2.5 + 0.25 = 2.75$$x_{11}=x_{10}+h = 2.5 + 0.25 = 2.75$
$x_{12}=b = 3$$x_{12}=b = 3$
Reemplazando: $$I=98.44175237978556$$$$I=98.44175237978556$$
https://colab.research.google.com/drive/1tjyMTNYXtkJHLEqj4XPPG8igbiDqqrn6 2/3
4/2/2021 7.1.1.2 Regla de Simpson 1/3.ipynb - Colaboratory
Como se puede ver la regla de Simpsin 1/3 es más e ciente que la regla trapezoidal.
https://colab.research.google.com/drive/1tjyMTNYXtkJHLEqj4XPPG8igbiDqqrn6 3/3
4/2/2021 7.1.1.3 Regla de Simpson 3/8.ipynb - Colaboratory
Consiste en reemplazar la función (f (x) ) por un polinomio de tercer grado (f3 (x) ) en el segmento
de integración.
b b
I = ∫ f (x)dx ≊ ∫ f3 (x)dx
a a
Para obtener un polinomio de tercer grado (f3 (x) ) es necesario contar con cuatro puntos, los límites
son dos de ellos, los otros se obtienen al dividir el segmento en tres partes.
(b−a)
h =
3
x0 = a
x1 = x0 + h
x2 = x1 + h
x3 = b
Dependiendo de la función y del punto especí co del segmento el error puede cambiar, para estimar
el error se usa la siguiente fórmula:
3
5 (4)
E = − h f (ξ)
80
a ≤ ξ ≤ b
Donde ξ es el punto especí co del segmento del cual se debea calcular el error.
https://colab.research.google.com/drive/1s1uOmYWrZ4UwLaax9suX1ZfLmTgZtbaN 1/2
4/2/2021 7.1.1.4 Segmentos desiguales.ipynb - Colaboratory
Segmentos desiguales
https://colab.research.google.com/drive/1PEebKfPsmBVB48H-X-wdqODRLswlFy-1 1/2
4/2/2021 7.1.2 Integración de Ecuaciones.ipynb - Colaboratory
Integración de Ecuaciones
Los métodos anteriores hacen uso de puntos y no directamente de las funciones, las funciones solo
sirven para generar los puntos usados en cada método, pero no se explotan las capacidades de las
funciones.
Romberg.
Cuadratura de Gauss.
https://colab.research.google.com/drive/1jSL9WbiA0Z0Y2G1Gm0IhvLVbxmxilH0Y 1/2
4/2/2021 7.1.2.1 Romberg.ipynb - Colaboratory
Romberg
Matemáticamente:
I = I(h) + E(h)
En vista que el error depende del ancho del subsegmento, la ecuación del error se puede escribir
como:
b −a
2 ′′
E(h) = − h f (ξ)
12
Cuando se desea comparar dos métodos de integración o dos valores para h es necesario usar el
mismo ξ de esta manera se mantienen las mismas condiciones.
b −a
Como se trata del mismo problema los límites de integración son los mismos, por lo tanto −
12
La segunda derivada es la misma porque se trata de la misma función y en vista que se están
comparando dos valores para h , entonces ξ es el mismo, por lo tanto se puede simpli car,
quedando como resultado:
2
E(h 1 ) h
1
=
2
E(h 2 ) h
2
Como se puede ver en esta expresión el único valor desconocido es E(h2 ) , por lo tanto se despeja
E(h 2 ) :
I(h 1 ) − I(h 2 )
E(h 2 ) =
2
h1
1 −( )
h2
h1
En el caso especial de que h2 =
2
:
I(h 1 ) − I(h 2 )
I = I(h 2 ) +
2
1 −2
Simpli cando:
I(h 1 ) − I(h 2 ) I(h 1 ) I(h 2 )
I = I(h 2 ) − = I(h 2 ) − +
3 3 3
https://colab.research.google.com/drive/10ZpIBarQz4LurLP6sJji3NsoIBkMytKf 2/4
4/2/2021 7.1.2.1 Romberg.ipynb - Colaboratory
4I(h 2 ) I(h 1 )
I = −
3 3
Aplicación
Calcule la siguiente integral:
3
2 x
I = ∫ x e dx
0
a = 0
b = 3
Siempre es buena idea calcular h con las consideraciones para cada método de integración, en este
caso se usará la regla trapeziodal.
Se calcula primero h1 :
n = 12
b−a 3−0
h1 = = = 0.25
n 12
Con h1 se calcula h2 :
h1 0.25
h2 = = = 0.125
2 2
I(0.25) = 99.99331307969648
I(0.125) = 98.81975768764006
I = 98.4276850669086
Que contiene 6 decimales de similitud con el valor verdadero. Para I(h1) se ha divido el segmento
de integración en 80 partes, para I(h2) se ha divido en 160 partes haciendo un total de 240
subsegmentos a los que se les aplicó la regla trapezoidal.
https://colab.research.google.com/drive/10ZpIBarQz4LurLP6sJji3NsoIBkMytKf 3/4
4/2/2021 7.1.2.2 Cuadratura de Gauss.ipynb - Colaboratory
Cuadratura de Gauss
Lo que puede producir errores muy grandes, siguiendo la misma idea de la regla trapezoidal de
trazar una línea recta entre los límites pero usando otros puntos de la función se puede conseguir
un trapecio que ajusta de mejor manera el área:
Estos puntos de referencia depende de cada función y permiten ajustar de mejor manera para
integral.
I = c1 f (x 1 ) + c2 f (x 2 )
https://colab.research.google.com/drive/1m02uSpP9YYN4hLGYzvtgfkYGPpYA-m-Z 1/5
4/2/2021 7.1.2.2 Cuadratura de Gauss.ipynb - Colaboratory
Para calcular de manera éxitosa la integral es necesario calcular los valores para c1 , c2 , x1 y x2 .
Se debe construir un sistema de ecuaciones de cuarto grado, para lo cual se parte de integrales de
funciones conocidas:
0
x
1
x
2
x
3
x
Como se trata de una integración numérica es necesario que las integrales sean de nidas, para lo
cual se usa como límite inferior −1 y como superior 1 , quedando el sistema de ecuaciones:
1
⎧ c f (x ) + c f (x ) = ∫ 1dx
⎪ 1 1 2 2
⎪ −1
⎪
⎪
⎪ 1
⎪
c1 f (x 1 ) + c2 f (x 2 ) = ∫ xdx
−1
⎨
1 2
⎪ c1 f (x 1 ) + c2 f (x 2 ) = ∫ x dx
⎪ −1
⎪
⎪
⎪
⎩
⎪ 1 3
c1 f (x 1 ) + c2 f (x 2 ) = ∫ x dx
−1
⎧ c f (x 1 ) + c2 f (x 2 ) = 2
⎪ 1
⎪
⎪
⎪
c1 f (x 1 ) + c2 f (x 2 ) = 0
⎨
⎪ c1 f (x 1 ) + c2 f (x 2 ) = 0.666667
⎪
⎪
⎩
⎪
c1 f (x 1 ) + c2 f (x 2 ) = 0
Como se puede ver el sistema es no lineal y tiene muchas soluciones, una de ellas es:
c1 = 1
c2 = 1
1
x1 = −
√3
1
x2 =
√3
Por lo tanto:
1 1
I = f (− ) + f( )
– –
√3 √3
b −a
dx = dxd
2
El error se calcula:
https://colab.research.google.com/drive/1m02uSpP9YYN4hLGYzvtgfkYGPpYA-m-Z 2/5
4/2/2021 7.1.2.2 Cuadratura de Gauss.ipynb - Colaboratory
(4)
E = f (ξ)
Aplicación
Calcule la siguiente integral:
3
2 x
I = ∫ x e dx
0
a = 0
b = 3
En vista que los límites no son −1 y 1 no se puede aplicar directamente el método, es necesario
aplicar el cambio de variable:
(b + a) + (b − a)x d (3 + 0) + (3 − 0)x d
x = = = 1.5 + 1.5x d
2 2
b −a 3 −0
dx = dxd = d x d = 1.5d x d
2 2
Donde:
1 1 1.5+1.5(−
1
)
2
f (− ) = [(1.5 + 1.5(− )) e √3
] 1.5 = 1.13649267096
– –
√3 √3
1 1 1.5+1.5(
1
)
2
f( ) = [(1.5 + 1.5( )) e √3
] 1.5 = 89.4709075316
– –
√3 √3
1 1
I = f (− ) + f( ) = 90.6074002025
– –
√3 √3
I ≅ c0 f (x 0 ) + c1 f (x 1 ) + … + cn−1 f (x n−1 )
En lugar de calcular dos puntos se pueden calcular más puntos intermedios, este proceso lo hacen
los mátemáticos que encuentran nuevas soluciones, a continueción se muestran los valores para c
y x para diferentes puntos:
https://colab.research.google.com/drive/1m02uSpP9YYN4hLGYzvtgfkYGPpYA-m-Z 3/5
4/2/2021 7.1.2.2 Cuadratura de Gauss.ipynb - Colaboratory
3 puntos:
c0 = 0.5555556
c1 = 0.8888889
c2 = 0.5555556
x 0 = −0, 774596669
x 1 = 0.0
x 2 = 0.774596669
(6)
E = f (ξ)
4 puntos:
c0 = 0.3478548
c1 = 0.6521452
c2 = 0.6521452
c3 = 0.3478548
x 0 = −0.861136312
x 1 = −0.339981044
x 2 = 0.339981044
x 3 = 0.861136312
(8)
E = f (ξ)
5 puntos:
c0 = 0.2369269
c1 = 0.4786287
c2 = 0.5688889
c3 = 0.4786287
c4 = 0.2369269
x 0 = −0.906179846
x 1 = −0.538469310
x 2 = 0.0
x 3 = 0.538469310
x 4 = 0.906179846
(10)
E = f (ξ)
6 puntos:
c0 = 0.1713245
c1 = 0.3607616
c2 = 0.4679139
c3 = 0.4679139
c4 = 0.3607616
c5 = 0.1713245
https://colab.research.google.com/drive/1m02uSpP9YYN4hLGYzvtgfkYGPpYA-m-Z 4/5
4/2/2021 7.1.2.2 Cuadratura de Gauss.ipynb - Colaboratory
x 0 = −0.932469514
x 1 = −0.661209386
x 2 = −0.238619186
x 3 = 0.238619186
x 4 = 0.661209386
x 5 = 0.932469514
(12)
E = f (ξ)
https://colab.research.google.com/drive/1m02uSpP9YYN4hLGYzvtgfkYGPpYA-m-Z 5/5
4/2/2021 7.2.1 Fórmulas de alta precisión - Colaboratory
Dos términos
Se usan los dos primeros términos de la serie de Talor:
′
f (x i+1 ) ≃ f (x i ) + f (x i )h
Despejando f ′ (xi ) :
f (x i+1 ) − f (x i )
′
f (x i ) ≃
h
h tiene el mismo signi ca que en las integrales, mientras más pequeña mejor.
Esta la primera fórmula para calcular la derivada de una función para un valor dado de x .
Tres términos
Se usan los tres primeros términos de la serie de Talor:
′′
f (x i )
′ 2
f (x i+1 ) ≃ f (x i ) + f (x i )h + h
2
Despejando f ′ (xi ) :
′′
f (x i+1 ) − f (x i ) f (x i )
′
f (x i ) ≃ − h
h 2
Como se puede ver la ecuación resultante no es muy útil porque para calcular f ′ (xi ) es necesario
calcular previamente f ′′ (xi ).
Para encontrar una ecuación correcta, primero se escribe la expansión en serie de Taylor hacia
adelante para f (xi+2) en términos de f (xi ) :
′′
f (x i )
′ 2
f (x i+2 ) ≃ f (x i ) + f (x i )(2h) + (2h )
2
Se multiplica por dos la serie de Taylor con tres términos y se resta la ecuación anterior:
https://colab.research.google.com/drive/1U3FB0B1S4UBq3b4XtoHv7jfFXWgCWWkh 1/2
4/2/2021 7.2.1 Fórmulas de alta precisión - Colaboratory
′′ ′′
f (x i ) f (x i )
′ 2 ′ 2
f (x i+2 ) − 2f (x i+1 ) ≃ f (x i ) + f (x i )(2h) + (2h ) − 2 [f (x i ) + f (x i )h + h ]
2 2
′ ′′ 2 ′ ′′ 2
f (x i+2 ) − 2f (x i+1 ) ≃ f (x i ) + 2f (x i )h + 2f (x i )2h − 2f (x i ) − 2f (x i )h − f (x i )h
′′ 2
f (x i+2 ) − 2f (x i+1 ) ≃ −f (x i ) + f (x i )h
Despejando f ′′ (xi ):
f (x i+2 ) − 2f (x i+1 ) + f (x i )
′′
f (x i ) ≃
2
h
f (x i+1 ) − f (x i ) 2
′ h
f (x i ) ≃ − h
h 2
https://colab.research.google.com/drive/1U3FB0B1S4UBq3b4XtoHv7jfFXWgCWWkh 2/2
4/2/2021 7.2.2 Extrapolación de Richardson.ipynb - Colaboratory
Extrapolación de Richardson
Recoge el mismo razonamiento de Romberg y por lo tanto la ecuación es la misma, pero en lugar
usar un método de integración usa uno de derivación numérica.
4 1
D = D(h 2 ) − D(h 1 )
3 3
h1
h2 =
2
Aplicación
Encuentre la primera derivada de:
4
f (x) = x
Para:
x = 1
h = 0.1
h 1 = 0.1
h 2 = 0.05
Se asume i = 0 :
−f (x 2 ) + 4f (x 1 ) − 3f (x 0 )
′
f (x 0 ) ≃
2h
Para h1 = 0.1 :
x0 = x = 1
x 1 = x 0 + h = 1 + 0.1 = 1.1
Para h2 = 0.05 :
x0 = x = 1
x 1 = x 0 + h = 1 + 0.05 = 1.05
https://colab.research.google.com/drive/1ixpoZXlwwmlrOcuBR7NbM6gHCPdJosnA 1/2
4/2/2021 8 Ecuaciones Diferenciales Ordinarias.ipynb - Colaboratory
Una ecuación diferencial ordinaria (EDO) es la que contiene una función desconocida de una
variable independiente y relaciona con sus derivadas:
o
′
f (x) = f (x, y)
o
′
y (x) = f (x, y)
La solución de una EDO consiste en encontrar una función que satisfaga dicha ecuación.
La solución de la EDO:
3y
′
f (x) =
x
es:
3
f (x) = x
Para veri car se debe reemplazar la solución en la EDO para veri car la igualdad.
Veri cando:
3
f (x) = y = x
′ 2
f (x) = 3x
Reemplazando:
3
3x
2
3x =
x
Simpli cando:
2 2
3x = 3x
https://colab.research.google.com/drive/1tsDn8h9RcU3uRHlIbaIaUo9Gc7qllPB2 1/2
4/2/2021 8.1 Métodos de un paso.ipynb - Colaboratory
Métodos de un paso
Consiste en un grupo de métodos que calculan el valor que satisface la igualdad a partir de un valor
anterior, es decir:
yi+1 = yi + Φh
Valores iniciales
Para resolver una EDO usando métodos de un solo paso es necesario contar con los siguientes
datos iniciales:
https://colab.research.google.com/drive/1XSnetB-_nYmv9FqRMywvEreUgT_sabFR 1/2
4/2/2021 8.1.1 Método de Euler.ipynb - Colaboratory
Método de Euler
Aplicación
Resuelva la siguiente EDO:
$$f'(x)=\dfrac{3y}{x}$$
$$\dfrac{dy}{dx}=f(x,y)$$
Se tienen dos $y$ una de ellas es $y_0$ y la otra es $y_n$; $y(4)$ es el valor que se desea calcular,
es decir se desea el valor de $y$ cuando $x=4$, por lo tanto es $y_n$ y 4 es el valor de $x_n$. La
palabra sabiendo da a entender que es un valor conocido de la EDO, es decir $y=8$ cuando $x=2$.
Es necesario calcular un buen valor para $h$, se puede usar la siguiente ecuación:
$$h=\dfrac{x_n-x_0}{n}$$
Donde $n$ es la cantidad de pasos usados. Para este caso se usarán 6 pasos:
$$h=\dfrac{x_n-x_0}{n}=\dfrac{4-2}{6}=0.333333333$$
Al tener un número in nito de decimales resulta en un mal valor para $h$, con 8 pasos mejora el
valor
$$h=\dfrac{x_n-x_0}{n}=\dfrac{4-2}{8}=0.25$$
Entonces:
$f(x,y)=\dfrac{3y}{x}$
$x_0=2$
$y_0=8$
$x_n=4$
$h=0.25$
Calcular $y_1$:
https://colab.research.google.com/drive/1SBD2wnS8wNR6R9U9GRCRG4qGLQi9nKUZ 1/3
4/2/2021 8.1.1 Método de Euler.ipynb - Colaboratory
$y_{1}=y_0+f(x_0, y_0) h$
$y_{1}=8+f(2, 8) (0.25)$
$y_{1}=8+(12) (0.25)=11$
Calcular $y_2$:
$x_{1}=x_0+h = 2+0.25=2.25$
$y_{2}=y_1+f(x_1, y_1) h$
Calcular $y_3$:
$x_{2}=x_1+h = 2.25+0.25=2.5$
$y_{3}=y_2+f(x_2, y_2) h$
Calcular $y_4$:
$x_{3}=x_2+h = 2.5+0.25=2.75$
$y_{4}=y_3+f(x_3, y_3) h$
Calcular $y_5$:
$x_{4}=x_3+h = 2.75+0.25=3$
$y_{5}=y_4+f(x_4, y_4) h$
Calcular $y_6$:
$x_{5}=x_4+h = 3+0.25=3.25$
$y_{6}=y_5+f(x_5, y_5) h$
Calcular $y_7$:
$x_{6}=x_5+h = 3.25+0.25=3.5$
$y_{7}=y_6+f(x_6, y_6) h$
Calcular $y_8$:
$x_{7}=x_6+h = 3.5+0.25=3.75$
https://colab.research.google.com/drive/1SBD2wnS8wNR6R9U9GRCRG4qGLQi9nKUZ 2/3
4/2/2021 8.1.1 Método de Euler.ipynb - Colaboratory
$y_{8}=y_7+f(x_7, y_7) h$
0 2 8
1 2.25 11
2 2.5 14.666667
3 2.75 19.066667
4 3 24.266667
5 3.25 30.333333
6 3.5 37.333333
7 3.75 45.333333
8 4 54.4
Para $y(4)=54.4$
Sabiendo que la solución algebráica es $f(x)=x^3$, entonces $f(4)=64$, como se puede ver la
aproximación tiene un un error muy grande eso se debe al valor de $h$, usando $h=0.0002$, es
decir $n=10000$, el resultado es $y(4)=64$.
https://colab.research.google.com/drive/1SBD2wnS8wNR6R9U9GRCRG4qGLQi9nKUZ 3/3
4/2/2021 8.1.2 Métodos de Runge-Kutta.ipynb - Colaboratory
Métodos de Runge-Kutta
Φ(x i , yi , h) = a1 k 1 + a2 k 2 + … + an k n
Según la cantidad de términos que tenga Φ recibe el nombre el método y los valores para ai y ki
cambian.
k 1 = f (x i , yi )
k 2 = f (x i + h, yi + k 1 h)
k 1 = f (x i , yi )
1 1
k2 = f (xi + h, yi + k 1 h)
2 2
k 3 = f (x i + h, yi − k 1 h + 2k 2 h)
k 1 = f (x i , yi )
1 1
k2 = f (xi + h, yi + k 1 h)
2 2
1 1
k3 = f (xi + h, yi + k 2 h)
2 2
https://colab.research.google.com/drive/1YT2MVo6TYSJdJ_AU-gw-qBkKQm65ejIL 1/4
4/2/2021 8.1.2 Métodos de Runge-Kutta.ipynb - Colaboratory
k 4 = f (x i + h, yi + k 3 h)
Los matemáticos están encontrando nuevos valores para ai y ki que permiten tener más térmenos
y mejorar la e ciencia.
Aplicación
Se aplican exactemente igual que el método de Euler, la única diferencia es el cálculo de Φ.
Entonces:
3y
f (x, y) =
x
x0 = 2
y0 = 8
xn = 4
h = 0.25
Primer Orden:
i xi yi
0 2 8
1 2.25 11
2 2.5 14.666667
3 2.75 19.066667
4 3 24.266667
5 3.25 30.333333
6 3.5 37.333333
7 3.75 45.333333
8 4 54.4
Segundo Orden:
i xi yi
0 2 8
1 2.25 11.333333
2 2.5 15.488889
3 2.75 20.55798
4 3 26.631928
5 3.25 33.802063
https://colab.research.google.com/drive/1YT2MVo6TYSJdJ_AU-gw-qBkKQm65ejIL 2/4
4/2/2021 8.1.2 Métodos de Runge-Kutta.ipynb - Colaboratory
i xi yi
6 3.5 42.159716
7 3.75 51.796222
8 4 62.802920
Tercer Orden:
i xi yi
0 2 8
1 2.25 11.385621
2 2.5 15.613615
3 2.75 20.777598
4 3 26.971184
5 3.25 34.287982
6 3.5 42.8216
7 3.75 52.665646
8 4 63.913726
Cuarto Orden:
i xi yi
0 2 8
1 2.25 11.390235
2 2.5 15.624148
3 2.75 20.795481
4 3 26.997971
5 3.25 34.325358
6 3.5 42.871384
7 3.75 52.729787
8 4 63.994309
https://colab.research.google.com/drive/1YT2MVo6TYSJdJ_AU-gw-qBkKQm65ejIL 3/4
4/2/2021 8.2 Métodos de multipaso.ipynb - Colaboratory
Los métodos anteriores usar el paso anterior(yi ) para encontrar el siguiente (yi+1 ).
https://colab.research.google.com/drive/1SfdBvYXE5ZKQFlrwoy7Ts6OgAq1UjCae 1/2
4/2/2021 8.2.1 Método de Heun sin principio.ipynb - Colaboratory
y la regla trapezoidal:
f (x i , yi ) + f (x i+1 , yi+1 )
yi+1 = yi + h
2
El método consiste en calcular un primer valor y luego ajustarlo, es primer valor se denomina
predictor, para ajusta el predictor se aplicar la ecuación del corrector.
Predictor:
0 m m
y = y + f (x i , y )2h
i+1 i−1 i
Note que es necesario yi−1 es decir que para calcular el valor de y1 además de x0 y y0 se requiere
y−1 .
Corrector:
m j−1
f (x i , y ) + f (x i+1 , y )
j m i i+1
y = y + h
i+1 i
2
para j = 1, 2 … m
m es la cantidad de correciones.
Aplicación
Resuelva la siguiente EDO:
3y
′
f (x) =
x
Entonces:
3y
f (x, y) =
x
x0 = 2
https://colab.research.google.com/drive/1EuW6UxsqXlIKOoCtaNDxdNVFea-jL9ju 1/3
4/2/2021 8.2.1 Método de Heun sin principio.ipynb - Colaboratory
y0 = 8
xn = 4
h = 0.25
Una vez de nido el valor para h es necesario calcular el valor para x−1
x −1 = x 0 − h = 2 − 0.25 = 1.75
Es necesario obtener el y(1.75) si no se puede conseguir entonces no se puede aplicar este método.
Calcular y1 :
Predictor: y10 = y
m
−1
+ f (x 0 , y
m
0
)2h = 5.359375 + f (2, 8)(2)(0.25) = 11.359375
0
f(x 0 , y0 )+f(x 1 , y ) f(2,8)+f(2.25,11.359375)
Corrector 1: y1 m
1 1
= y + h = 8 + (0.25) = 11.3932292
i 2 2
1
f(x 0 , y0 )+f(x 1 , y ) f(2,8)+f(2.25,11.3932292)
Corrector 2: y12 m 1
= y + h = 8 + (0.25) = 11.398872
i 2 2
2
f(x 0 , y0 )+f(x 1 , y ) f(2,8)+f(2.25,11.398872)
Corrector 3: y13 m 1
= y + h = 8 + (0.25) = 11.399812
i 2 2
Calcular y2 :
Predictor: y20 = y
m
0
+ f (x 1 , y
m
1
)2h = 8 + f (2.25, 11.399812)(2)(0.25) = 15.599875
Corrector 1:
0
f(x 1 , y1 )+f(x 2 , y ) f(2.25,11.399812)+f(2.5,15.599875)
1 m 2
y = y + h = 11.399812 + (0.25) = 15.63976
2 i 2 2
Corrector 2:
1
f(x 1 , y1 )+f(x 2 , y ) f(2.25,11.399812)+f(2.5,15.639762)
2 m 2
y = y + h = 11.399812 + (0.25) = 15.64574
2 i 2 2
Corrector 3:
2
f(x 1 , y1 )+f(x 2 , y ) f(2.25,11.399812)+f(2.5,15.645745)
3 m 2
y = y + h = 11.399812 + (0.25) = 15.64664
2 i 2 2
i xi yi
0 2 8
1 2.25 11.399812
2 2.5 15.646642
3 2.75 20.834621
4 3.0 27.057857
5 3.25 34.410463
6 3.5 42.986552
7 3.75 52.880235
8 4 64.185626
https://colab.research.google.com/drive/1EuW6UxsqXlIKOoCtaNDxdNVFea-jL9ju 2/3
4/2/2021 8.2.2 Formulas de Adams.ipynb - Colaboratory
Formulas de Adams
k=0
Orden β0 β1 β2 β3 β4 β5 Error
5 3 ′′
h f
3 1 12
2 −
2 2
(ξ)
9 4 (3)
h f
23 16 5 24
3 −
12 12 12
(ξ)
251 5 (4)
h f
55 59 37 9 720
4 − −
24 24 24 24
(ξ)
475 6 (5)
h f
1901 2774 2616 1274 251 1440
5 − −
720 720 720 720 720
(ξ)
19087 7 (6)
h f
4277 7923 9982 7298 2877 475 60480
6 − − −
720 720 720 720 720 720
(ξ)
Mientras más alto el orden mayor cantidad de datos se requiere, para el segundo orden se requiere
(x 0 , y0 ) y (x−1 , y−1 ) ; para el tercer orden (x0 , y0 ) y (x−1 , y−1 ) y (x−2 , y−2 ) ; y así sucesivamente.
Si no se tiene acceso a dichos datos no se puede usar dicho orden.
Aplicación
Resuelva la siguiente EDO:
3y
′
f (x) =
x
Entonces:
3y
f (x, y) =
x
x0 = 2
y0 = 8
https://colab.research.google.com/drive/1NX5c0s3BCAuX9yATqdeT9tgxn_HJVlHl 1/3
4/2/2021 8.2.2 Formulas de Adams.ipynb - Colaboratory
xn = 4
h = 0.25
Se sabe que:
y(1.75) = 5.359375
y(1.5) = 3.375
Calcular y1 :
23 16 5
y1 = y0 + h [ f (x 0 , y0 ) − f (x −1 , y−1 ) + f (x −2 , y−2 )]
12 12 12
23 16 5
y1 = 8 + 0.25 [ f (2, 8) − f (1.75, 5.359375) + f (1.5, 3.375)] = 11.390625
12 12 12
Calcular y2 :
23 16 5
y2 = y1 + h [ f (x 1 , y1 ) − f (x 0 , y0 ) + f (x −1 , y−1 )]
12 12 12
23 16 5
y2 = 11.390625 + 0.25 [ f (2.25, 11.390625) − f (2, 8) + f (1.75, 5.359375)] = 15.625
12 12 12
i xi yi
0 2 8
1 2.25 11.390625
2 2.5 15.625
3 2.75 20.796875
4 3.0 27.0
5 3.25 34.328125
6 3.5 42.875
7 3.75 52.734375
8 4 64.0
Como se puede ver el uso de más datos de la función mejoró considerablemente la aproximación.
https://colab.research.google.com/drive/1NX5c0s3BCAuX9yATqdeT9tgxn_HJVlHl 2/3