Está en la página 1de 12

Instituto Politécnico Nacional

Escuela Superior de Ingeniería Mecánica y Eléctrica


Unidad Zacatenco

Ingeniería en Comunicaciones y Electrónica

Academia de Computación

Análisis Numérico

Trabajo de investigación documental:


Sistemas de ecuaciones/Interpolación

Profesor:
José Antonio Bernal Mendoza

Grupo: 4CV7

Equipo: 5

Integrantes:
Otero Gómez David

Fecha de entrega: Abril 2018


Resumen

En el trabajo matemático diario de la ingeniería se resuelven múltiples ecuaciones para hallar variables desconocidas; por
lo que es importante estudiar las distintas técnicas de resolución y análisis de estas.

Este trabajo de investigación abordara distintas técnicas de resolución, las cuales podrán ser más o menos optimas
dependiendo del problema a resolver. Los métodos por analizar serán los siguientes: “Lu”, “Cholesky”, “Chebyshev”,
“Hermite” y por ultimo “Newton para dos ecuaciones”.

Existen muchos métodos para poder determinar el valor de una variable en un grupo de ecuaciones, pero este trabajo
solo está enfocado en los ya antes mencionados. Trabajamos para brindarle una explicación breve pero útil que ayude al
lector a entender rápidamente los métodos correctamente y que pueda darles el uso adecuado en su futuro académico o
laboral.

Objetivo general y particular

 General

Conocer un mayor número de métodos numéricos para la resolución de problemáticas matemáticas que se presenten. De
esta manera, contar con más recursos para poder competir de mejor manera en el ámbito laboral ingenieril.

 Particular

Conocer cada uno de los diferentes métodos a fondo para tener un panorama más amplio de las resoluciones que
podremos brindar a distintas problemáticas. Identificando cual es el método más idóneo para la problemática en cuestión.
Creando un pensamiento analítico en el ingeniero que le ayude a procesar mayor número de información en un menor
tiempo.

Justificación

Introducción

Al momento de aplicar las Matemáticas a situaciones del mundo real nos encontramos a menudo con problemas que no
pueden ser resueltos analíticamente o de manera exacta y cuya solución debe ser abordada con ayuda de procedimientos
numéricos. Los métodos o procedimientos numéricos son técnicas mediante las cuales es posible formular
problemas matemáticos de tal forma que puedan resolverse usando operaciones aritméticas.

En esta investigación encontraremos teoría de distintos métodos numéricos, los cuales se desarrollarán de manera
concreta, brindando al lector en la parte final de cada método un ejemplo, y un programa a ejecutar en lenguaje C.

Marco Teórico
LU:
La factorización LU de una matriz es una factorización que resume el proceso de eliminación gaussiana aplicado a la matriz
y que es conveniente en términos del número total de operaciones de punto flotante cuando se desea calcular la inversa
de una matriz o cuando se resolverá una serie de sistemas de ecuaciones con una misma matriz de coeficientes. En la

2
lectura, primeramente consideraremos la factorización LU sin intercambio basada en matrices elementales y que es
conocida como de Doliste y posteriormente veremos el algoritmo que da la factorización PA = LU.

FACTORIZACIÓN LU:

Suponga que la matriz A es una matriz m × n se puede escribir como el producto de dos matrices:

𝐴 = 𝐿𝑈
Donde L es una matriz triangular inferior m × m y U es una matriz escalonada m × n. Entonces para resolver el sistema:

𝐴𝑋 = 𝑏
Escribimos:

𝐴𝑥 = (𝐿𝑈)𝑥 = 𝐿(𝑈𝑥).
Una posible estrategia de soluci´on consiste en tomar y = U x y resolver para y:

𝑈𝑥 = 𝑦
Nuevamente, como U es escalonada, este sistema puede resolverse en caso de tener solución mediante sustitución hacia
atrás, lo cual es sencillo. Estas observaciones nos dan la pauta para ver la conveniencia de una factorización como la
anterior, es decir factorizar A como el producto de una matriz L triangular superior, por otra U la cual es escalonada. Esta
factorización se llama usualmente Descomposición LU.

EJEMPLO:

Use la factorización LU de A:
4 −2 1 1 0 0 4 −2 1
𝐴 = [ 20 −7 12] = [ 5 1 0] [0 3 7 ] = 𝐿𝑈
−8 13 17 −2 3 1 0 0 −2
Para despejar a x del sistema:
11
𝐴𝑥 = [70] = 𝑏
17
Solución:

Sea y=(y1, y2, y3) un nuevo vector de incógnitas. Primero resolveremos el sistema triangular inferior Ly=b:
1 0 0 11
[ 5 1 0] 𝑦 = [70]
−2 3 1 17
Este sistema escrito en su forma de ecuaciones queda:

𝑦1 = 11
5𝑦1 + 𝑦2 = 70
−2𝑦1 + 3𝑦2 + 𝑦3 = 17
Por eliminación directa de la

 Primer ecuación: 𝑦1 = 11
 Segunda ecuación: 𝑦2 = 70 − 5𝑦1 = 70 − 5(11) = 15
3
 Tercer ecuación: 𝑦3 = 17 + 2𝑦1 − 3𝑦2 = 17 + 2(11) − 3(15) = −6

Ahora el sistema Ux=y:


4 −2 1 11
[0 3 7 ] 𝑥 = [ 15 ]
0 0 −2 −6
El cual escrito en ecuaciones queda:

4𝑥1 − 2𝑥2 + 𝑥3 = 11
3𝑥2 + 7𝑥3 = 15
−2𝑥3 = 6
El cual al ser resulto por resulto por sustitución hacia atrás queda:

𝑋3 = 3
7 7
𝑋2 = 5 − 𝑥3 = 5 − (3) = −2
3 3
11 1 1 11 1 1
𝑋1 = + 𝑥2 − 𝑥3 = + (−2) − (−3) = 1
4 2 4 4 2 4
ALGORITMO DEL PROGRAMA:

#include<stdio.h>
#include<stdlib.h>
#define MAX 10
int main()
{
int i,j,k,n;
float a[MAX][MAX],b[MAX],x[MAX],l[MAX][MAX],y[MAX],u[MAX][MAX],sum;

printf ("\nIngresa el numero de incognitas: ");


scanf("%d",&n);

printf ("\nIngrese los coeficientes:\n\n");


for(i=0;i<n;i++)
{
for(j=0;j<=n;j++)
{
if(j<n)
{
printf("a[%d][%d] = ",i,j);
scanf("%f",&a[i][j]);

}
else
{
printf("b[%d] = ",i);
scanf("%f",&b[i]);
4
printf("\n");
}
}
}
for(i=0;i<n;i++)
for(j=0;j<n;j++)
if(i>j)
{
u[i][j]=0;
}
else if(i==j)
{
l[i][j]=1;
}
else
{
l[i][j]=0;
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
sum=0;
if(i<=j)
{
for(k=0;k<n;k++)
if(k!=i)
sum=sum+l[i][k]*u[k][j];
u[i][j]=a[i][j]-sum;
}
else
{
for(k=0;k<n;k++)
if(k!=j)
sum=sum+l[i][k]*u[k][j];
l[i][j]=(a[i][j]-sum)/u[j][j];
}
}
}

printf("\n\n L =");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)

printf ("%10.2f",l[i][j]);
printf("\n ");

5
}

printf("\n\n U =");
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf ("%10.2f",u[i][j]);
printf("\n ");
}

y[0]=b[0]/l[0][0];
for(i=1;i<n;i++)
{
sum=0;
for(j=0;j<i;j++)
{
sum=sum+y[j]*l[i][j];

}
y[i]=b[i]-sum;
}
printf("\n\n Y =");
for(i=0;i<n;i++)
{
printf ("%10.2f",y[i]);
printf("\n ");
}

x[n-1]=y[n-1]/u[n-1][n-1];
for(i=n-2;i>=0;i--)
{
sum=0;
for(j=n-1;j>i;j--)
sum=sum+x[j]*u[i][j];
x[i]=(y[i]-sum)/u[i][i];

printf("\nLa solucion es :\n");


for(i=0;i<n;i++)
printf("\n x[%d] = %.2f ",i+1,x[i]);
printf("\n\n");

system("pause");
}

6
CHOLESKY:

En matemáticas, la factorización o descomposición de Cholesky toma su nombre del matemático André-Louis Cholesky,
quien encontró que una matriz simétrica definida positiva puede ser descompuesta como el producto de una matriz
triangular inferior y la traspuesta de una matriz triangular inferior. La matriz triangular inferior es el triángulo de Cholesky
de la matriz original positiva definida. El resultado de Cholesky ha sido extendido a matrices con entradas complejas. Es
una manera de resolver sistemas de ecuaciones matriciales y se deriva de la factorización LU con una pequeña variación.

Cualquier matriz cuadrada A con pivotes no nulos puede ser escrita como el producto de una matriz triangular inferior L y
una matriz triangular superior U; esto recibe el nombre de factorización LU. Sin embargo, si A es simétrica y definida
positiva, se pueden escoger los factores tales que U es la transpuesta de L, y esto se llama descomposición o factorización
de Cholesky. Tanto la descomposición LU como la descomposición de Cholesky son usadas para resolver sistemas de
ecuaciones lineales. Cuando es aplicable, la descomposición de Cholesky es dos veces más eficiente que la descomposición
LU.

Para dar uso a esta descomposición tenemos la matriz de coeficientes de un sistema de ecuaciones, la llamamos A,
comprobamos que esta matriz sea simétrica, porque de lo contrario no es factorizable por Cholesky. Cuando A es simétrica
podemos tratar de factorizarla en la forma 𝐴 = 𝐿∗ 𝐿(𝑡), 𝐿(𝑡) lo cual quiere decir que la matriz L fue transpuesta, cuando
la tenemos factorizada ya podemos resolver el sistema de ecuaciones.

Una condición necesaria y suficiente para que una matriz A admita factorización de Cholesky es que sea simétrica y
definida positiva.

DEFINICIÓN:

En general, si A es ermitaña y definida positiva, entonces A puede ser descompuesta como:

𝐴 = 𝐿𝐿∗
Donde L es una matriz inferior con entradas diagonales estrictamente positivas y L* representa la conjugada traspuesta
de L. Esta es la descomposición de Cholesky.

La descomposición de Cholesky es: dada una matriz Ermitaña positiva definida A, hay una única matriz triangular inferior
L con entradas diagonales estrictamente positivas tales que A = LL*. El recíproco se tiene trivialmente: si A se puede escribir
como LL* para alguna matriz invertible L, triangular inferior o no, entonces A es Ermitaña y definida positiva.

El requisito de que L tenga entradas diagonales estrictamente positivas puede extenderse para el caso de la
descomposición en el caso de ser semi-definida positiva. La proposición se lee ahora: una matriz cuadrada A tiene una
descomposición de Cholesky si y sólo si A es Ermitaña y semi-definida positiva. Las factorizaciones de Cholesky para
matrices semi-definidas positivas no son únicas en general.

En el caso especial que A es una matriz positiva definida con entradas reales, L se puede asumir también con entradas
reales. Una matriz D diagonal con entradas positivas en la diagonal (valores propios de A), es factorizable como 𝐷 =
√𝐷√𝐷, donde √𝐷 es una matriz cuya diagonal consiste en la raíz cuadrada de cada elemento de D, que tomamos como
positivos, asi:
𝑡
𝐴 = 𝐿𝑈 = 𝐿𝐷𝑈0 = 𝐿𝐷𝐿𝑡 = 𝐿(√𝐷√𝐷)𝐿𝑡 = (𝐿√𝐷)(√𝐷𝐿𝑡 ) = (𝐿√𝐷)(𝐿√𝐷) = 𝐾𝐾 𝑡

La factorización puede ser calculada directamente a través de las siguientes formulas (en este caso se realizó la
factorización superior 𝐴 = 𝑈 𝑇 ∗ 𝑈):

7
𝑎𝑖𝑖 −∑𝑖−1 2
𝑘=1 𝑢𝑖𝑘
𝑢𝑖𝑖2 = 𝑎𝑖𝑖 − ∑𝑖−1 2
𝑘=1 𝑢𝑖𝑘 Para los elementos de la diagonal principal, y 𝑢𝑖𝑗 = 𝑢𝑗𝑗
para el resto de los elementos
donde uij son los elementos de la matriz U.

APLICACIÓN:

La descomposición de Cholesky se usa principalmente para hallar la solución numérica de ecuaciones lineales Ax = b. Si A
es simétrica y positiva definida, entonces se puede solucionar Ax = b calculando primero la descomposición de Cholesky
A = LLT, luego resolviendo Ly = b para y, y finalmente resolviendo LTx = y pa.

MÍNIMOS CUADRADOS LINEALES:

Sistemas de la forma Ax = b con A simétrica y definida positiva aparecen a menudo en la práctica. Por ejemplo, las
ecuaciones normales en problemas de mínimos cuadrados lineales son problemas de esta forma. Podría ocurrir que la
matriz A proviene de un funcional de energía el cual debe ser positivo bajo consideraciones físicas; esto ocurre
frecuentemente en la solución numérica de ecuaciones diferenciales parciales.

PROBLEMA RESUELTO EN UN CONTEXTO REAL:

 Resuelva el siguiente sistema usando el método de Cholesky:


2𝑥1 − 𝑥2 + 𝑥3 = 0
−𝑥2 + 𝑥3 = 1
𝑥2 − 𝑥3 = −1
Solución:
El sistema se puede escribir en forma matricial.
2 −1 1 𝑥1 0
𝐴𝑥 = 𝑏 Donde 𝐴 = (1 −1 2 ) ; 𝑥 = (𝑥2) ; 𝑏 = ( 1 )
0 1 −1 𝑥3 −1

Observamos que la matriz A no es simétrica, luego debemos pre multiplicar el sistema por la matriz AT, es decir,
(ATA) x= (ATb), obteniendo de esta forma un sistema simétrico definido positiva, que puede ser resulto usando
Cholesky.
2 1 0 2 −1 1 5 −3 4
𝐴′ = 𝐴𝑇 𝐴 = (−1 −1 1 ) (1 −1 2 ) = (−3 3 4)
1 2 −1 0 1 −1 4 −4 6

2 1 0 0 1
𝑏 ′ = 𝐴𝑇 𝑏 = (−1 −1 1 ) ( 1 ) = (−2)
1 2 −1 −1 3
Recordemos que las fórmulas para obtener la factorización de Cholesky son:

𝑙11 = √𝑎11
𝑙𝑖𝑖 = √𝑎11 − ∑𝑖−1 2
𝑘=1 𝑙𝑖𝑘 , 𝑖 = 2, … .. , n

𝑎𝑖1
𝑙𝑖1 =
𝑙11
𝑗−1
𝑎𝑖𝑗 − ∑𝑘=1 𝑙𝑖𝑘 𝑙𝑗𝑘
𝑙𝑖𝑗 = , 𝑗 = 2, , 𝑖 − 1
𝑙𝑗𝑗

8
𝑙11 0 0
Calculemos la matriz 𝐿 = (𝑙21 𝑙22 0)
𝑙31 𝑙32 𝑙33

𝑙11 = √𝑎11 = √5
𝑎21 −3
𝑙21 = =
𝑙11 √5

2−1 1
2 2 2
9 √6
𝑙22 = √𝑎22 − ∑ 𝑙2𝑘 = √𝑎22 − ∑ 𝑙2𝑘 = √𝑎22 − 𝑙21 = √3 − =
5 √5
𝐾=1 𝑘=1

𝑎31 4
𝑙31 = =
𝑙11 √5
4 −3 12 8
−4 −
𝑙32 =
𝑎32 − ∑2−1
𝑘=1 𝑙3𝑘 𝑙2𝑘
=
𝑎32 − 𝑙31 𝑙21
= √5 √5 = −4 + 5 = − 5 = −8
𝑙22 𝑙22 √6 √6 √6 √30
√5 √5 √5

3−1 2
2 2 2
16 64 2
𝑙33 = √𝑎33 − ∑ 𝑙3𝑘 = √𝑎33 − ∑ 𝑙3𝑘 = √𝑎33 − 𝑙32 = √6 − − =√
5 30 3
𝑘=1 𝑘=1

√5 0 0
𝑙11 0 0 −3 √6
0
𝑙
∴ 𝐿 = ( 21 𝑙22 0)= √5 √5
𝑙31 𝑙32 𝑙32 4 −8 √2
( √5 √30 √3)
Obtenida la descomposicion A’=LLT, el sistema original A’x=b’ se transforma en:
𝑦=𝐿𝑇 𝑥
𝐴′ 𝑥 = 𝑏 ′ ⟹ (𝐿𝑙 𝑇 )𝑥 = 𝑏 ′ ⟹ 𝐿(𝐿𝑇 𝑥) = 𝑏 ′ ⟹ 𝐿𝑦 = 𝑏′
Es decir, debemos resolver en primer lugar el sistema Ly=b’, y luego de calculado el vector y se resuelve el sistema LTx=y.

Para calcular el vector solución del sistema Ly=b’ se ocupan las formulas:
𝑏′ 1
𝑦1 = 𝑙 1 ; 𝑦𝑘 = 𝑙 [𝑏′𝑘 − ∑𝑘−1
𝑗=1 𝑙𝑘𝑗 𝑦𝑗 ], 𝑘 = 2,3, . . , 𝑛
11 𝑘𝑘

En nuestro ejercicio se tiene:


𝑏1′ 1
𝑦1 = =
𝑙11 √5
2−1
1 1 −3 1 √5 3 √5 7 7√5
𝑦2 = [𝑏′2 − ∑ 𝑙2𝑗 𝑦𝑗 ] = (−2 − )= [−2 + ] = [− ] = −
𝑙22 √6 √5 √5 √6 5 √6 5 5√6
𝑗=1
5

9
3−1
1 1 4 1 −8 −7√5 1
𝑦3 = [𝑏′3 − ∑ 𝑙3𝑗 𝑦𝑗 ] = (3 − − )=
𝑙33 √2 √5 √5 √30 5√6 √6
𝑗=1
√3
1
√5
𝑦1
7√5
∴ 𝑦 = (𝑦2) = −
𝑦3 5√6
1
( √6 )
Para resolver el sistema LTx=y se ocupan las siguientes formulas:
𝑦 1
𝑦𝑛 = 𝑙 𝑛 ; 𝑥𝑘 = 𝑙 [𝑦𝑘 − ∑𝑛𝑗=𝑘+1 𝑙𝑗𝑘 𝑥𝑗 ], 𝑘 = 𝑛 − 1, 𝑛 − 2, . . ,1
𝑛𝑛 𝑘𝑘

En el ejercicio se tiene
1
𝑦33 √6 1
𝑥3 = = =
𝑙33 √2 2
√3
3
1 1 7√5 −8 1 1
𝑥2 = [𝑦2 − ∑ 𝑙𝑗2 𝑥𝑗 ] = (− − )=−
𝑙22 √6 5√6 √30 2 2
𝑗=2+1
√5
3
1 1 1 −3 −1 1
𝑥1 = [𝑦1 − ∑ 𝑙𝑗1 𝑥𝑗 ] = ( − )=−
𝑙11 √5 √5 √5 2 2
𝑗=1+1

1

2
𝑥1 1
∴ 𝑥 = (𝑥2) = −
𝑥3 2
1
( 2 )
ALGORITMO DEL PROGRAMA:

#include <math.h>
#include <stdio.h>
#include <stdlib.h>

int cholesky(double **orig, int n, double **aug, int mcol,double **chol, double **cholaug, int ofs)
/*
Do the augmented cholesky decomposition as described in FA Graybill
(1976) Theory and Application of the Linear Model. The original matrix
must be symmetric positive definite. The augmentation matrix, or
series of column vectors, are multiplied by C^-t, where C is the
upper triangular cholesky matrix, ie C^t * C = M and M is the original
matrix. Returns with a value of 0 if M is a non-positive definite
10
matrix. Returns with a value of 1 with succesful completion.

Arguments:

orig (input) double n x n array. The matrix to take the Cholesky


decomposition of.
n (input) integer. Number of rows and columns in orig.
aug (input) double n x mcol array. The matrix for the augmented
part of the decomposition.
mcol (input) integer. Number of columns in aug.
chol (output) double n x n array. Holds the upper triangular matrix
C on output. The lower triangular portion remains unchanged.
This maybe the same as orig, in which case the upper triangular
portion of orig is overwritten.
cholaug (output) double n x mcol array. Holds the product C^-t * aug.
May be the same as aug, in which case aug is over written.
ofs (input) integer. The index of the first element in the matrices.
Normally this is 0, but commonly is 1 (but may be any integer).
*/
{
int i, j, k, l;
int retval = 1;

for (i=ofs; i<n+ofs; i++) {


chol[i][i] = orig[i][i];
for (k=ofs; k<i; k++)
chol[i][i] -= chol[k][i]*chol[k][i];
if (chol[i][i] <= 0) {
fprintf(stderr,"\nERROR: non-positive definite matrix!\n");
printf("\nproblem from %d %f\n",i,chol[i][i]);
retval = 0;
return retval;
}
chol[i][i] = sqrt(chol[i][i]);

/*This portion multiplies the extra matrix by C^-t */


for (l=ofs; l<mcol+ofs; l++) {
cholaug[i][l] = aug[i][l];
for (k=ofs; k<i; k++) {
cholaug[i][l] -= cholaug[k][l]*chol[k][i];
}
cholaug[i][l] /= chol[i][i];
}

for (j=i+1; j<n+ofs; j++) {


chol[i][j] = orig[i][j];
for (k=ofs; k<i; k++)
chol[i][j] -= chol[k][i]*chol[k][j];
chol[i][j] /= chol[i][i];
}
}

11
return retval;
}

Bibliografía
Chapra, Steven. Métodos Numéricos para Ingenieros. 5° Edición. Mac Graw Hill, 2006.

Steven C. Chapra y Raymond Canale, Métodos Numéricos para Ingenieros, 2006, Editorial Mac Graw
Hill
Referencias Electrónicas

12

También podría gustarte