You are on page 1of 26

INSTITUTO POLITCNICO NACIONAL

ESCUELA SUPERIOR DE INGENIERA MECNICA Y ELCTRICA


Unidad Profesional Zacatenco
Academia de Computacin



Anlisis Numrico
Profesor: Bernal Mendoza Jos Antonio
14CV12



Trabajo de Investigacin
(Lu y Cholesky, Chebyshev, Hermite, Newton para dos Ecuaciones)

Integrantes:

1

NDICE

GLOSARIO 1
RESUMEN 2
DESCOMPOSICIN DE LU 3
EJEMPLO: 5
CDIGO DEL MTODO 6
MTODO DE CHOLESKY 8
PROBLEMA: 9
CDIGO: 12
POLINOMIOS DE CHEBYSHEV 15
EJEMPLO: 16
APLICACIONES MATLAB 17
MTODO DE HERMITE 18
PROBLEMA 19
PROGRAMA EN MATLAB 22
MTODO DE NEWTON 23
MTODO: 23
PROBLEMA: 23
CDIGO: 23
BIBLIOGRAFA 24

1


GLOSARIO



Interpolacin: En anlisis numrico, se denomina interpolacin a la obtencin de nuevos
puntos partiendo del conocimiento de un conjunto discreto de puntos.
En ingeniera y algunas ciencias es frecuente disponer de un cierto nmero de puntos
obtenidos por muestreo o a partir de un experimento y pretender construir una funcin
que los ajuste.

Matriz: En matemticas, una matriz es una tabla bidimensional de nmeros consistente
en cantidades abstractas que pueden sumarse y multiplicarse. Las matrices se utilizan para
describir sistemas de ecuaciones lineales, realizar un seguimiento de los coeficientes de
una aplicacin lineal y registrar los datos que dependen de varios parmetros. Las
matrices se describen en el campo de la teora de matrices. Pueden sumarse, multiplicarse
y descomponerse de varias formas, lo que tambin las hace un concepto clave en el
campo del lgebra lineal.

Ecuacin: Una ecuacin es una igualdad matemtica entre dos expresiones algebraicas,
denominadas miembros, en las que aparecen valores conocidos o datos, y desconocidos o
incgnitas, relacionados mediante operaciones matemticas. Los valores conocidos
pueden ser nmeros, coeficientes o constantes; y tambin variables cuya magnitud se
haya establecido como resultado de otras operaciones. Las incgnitas, representadas
generalmente por letras, constituyen los valores que se pretende hallar.

Polinomio: En matemticas, se le llama polinomio a la suma de varios monomios. Un
monomio es un producto de un coeficiente y una variable elevado a un nmero natural,
que se llama el exponente del monomio.

Ecuacin cuadrtica: Ecuacin de segundo grado o cuadrtica se expresa mediante la
relacin ax2 + bx + c = 0, donde a es distinto de 0.

Ortogonal: En matemticas, el trmino ortogonalidad (del griego orthos recto y gona
ngulo) es una generalizacin de la nocin geomtrica de perpendicularidad.

Cifra Significativa: Todas las cifras excepto el cero

Ecuacin cuadrtica: Las ecuaciones de cuarto grado o cuadrticas,
ax4 + bx3 + cx2 + dx + e = 0, para a distinto de 0.

Ecuacin Diferencial: Ecuacin que contiene derivadas.
2




RESUMEN


Los Mtodos Numricos son una herramienta efectiva y de gran utilidad para los
problemas que se encuentran en la ingeniera y en la industria en general, es por esta
razn que estudiar algunos de estos mtodos debe ser parte de la formacin de todo
estudiante de ingeniera.

En este trabajo documental se exponen algunos de los temas correspondientes al segundo
parcial de la materia de Anlisis Numrico, referentes a los temas de Sistemas de
Ecuaciones e Interpolacin. El desarrollo de los mtodos est acompaado con ejemplos y
con cdigos de programacin para su implementacin en computadora.

Los temas expuestos son:

Mtodo de Lu y Cholesky.
Mtodo de Chebyshev.
Mtodo de Hermite.
Mtodo de Newton para dos Ecuaciones.
3


DESCOMPOSICIN DE LU


El mtodo de descomposicin LU para la solucin de sistemas de ecuaciones
lineales debe su nombre a que se basa en la descomposicin de la matriz
original de coeficientes [A] en el producto de dos matrices [L] y [U].
Dnde:
L: Matriz triangular inferior.
U: Matriz triangular superior con todos los elementos de la diagonal principal
iguales a 1.
Para matrices de .

[

] [

] [


]

Si efectuamos la multiplicacin de [L] y [U], igualando los elementos de ese
producto con los de la matriz [A] correspondientes, se obtiene:





4

De aqu que los elementos de [L] y [U] son, en este caso:


Sabemos que el sistema de ecuaciones principal se escribe:
[]{} {}

[][]{} {}
[]{} []
[][] {}


La frmula general para obtener los elementos de L y U correspondientes a la
matriz de coeficientes, para n ecuaciones simultneas se puede escribir como


Para:
, la regla para se reduce a


, la regla para se reduce a

.
5

EJEMPLO:
Considere la matriz A
[



]
Aplicando las ecuaciones para y las , se obtiene:

) (

)

[



[



] [



]

Para [

]
6


Aumentando a U y sustituyendo retroactivamente se obtiene
[



|

)
Algoritmo.
Obtener la matriz triangular inferior L y la matriz triangular superior u.
Resolver L = b
El resultado del paso anterior se guarda en una matriz nueva de nombre y
Realizar UX = y
El resultado del paso anterior se almacena en una matriz nueva llamada x
CDIGO DEL MTODO

1. #include<stdio.h>
2. #include<stdlib.h>

3. #define MAX 10

4. int main()
5. {
6. int i,j,k,n;
7. float a[MAX][MAX],b[MAX],x[MAX],l[MAX][MAX],y[MAX],u[MAX][MAX],sum;

8. printf ("\nIngresa el numero de incognitas: ");
9. scanf("%d",&n);

10. printf ("\nIngrese los coeficientes:\n\n");
11. for(i=0;i<n;i++)
12. {
13. for(j=0;j<=n;j++)
14. {
15. if(j<n)
16. {
17. printf("a[%d][%d] = ",i,j);
18. scanf("%f",&a[i][j]);

7

19. }
20. else
21. {
22. printf("b[%d] = ",i);
23. scanf("%f",&b[i]);
24. printf("\n");
25. }
26. }
27. }

28. for(i=0;i<n;i++)
29. for(j=0;j<n;j++)
30. if(i>j)
31. {
32. u[i][j]=0;
33. }
34. else if(i==j)
35. {
36. l[i][j]=1;
37. }
38. else
39. {
40. l[i][j]=0;
41. }

42. for(i=0;i<n;i++)
43. {
44. for(j=0;j<n;j++)
45. {
46. sum=0;
47. if(i<=j)
48. {
49. for(k=0;k<n;k++)
50. if(k!=i)
51. sum=sum+l[i][k]*u[k][j];
52. u[i][j]=a[i][j]-sum;
53. }
54. else
55. {
56. for(k=0;k<n;k++)
57. if(k!=j)
58. sum=sum+l[i][k]*u[k][j];
59. l[i][j]=(a[i][j]-sum)/u[j][j];
60. }
61. }
62. }
63. printf("\n\n L =");
64. for(i=0;i<n;i++)
65. {
66. for(j=0;j<n;j++)

67. printf ("%10.2f",l[i][j]);
68. printf("\n ");
69. }

70. printf("\n\n U =");
71. for(i=0;i<n;i++)
72. {
73. for(j=0;j<n;j++)
74. printf ("%10.2f",u[i][j]);
75. printf("\n ");
76. }

77. y[0]=b[0]/l[0][0];
78. for(i=1;i<n;i++)
79. {
80. sum=0;
81. for(j=0;j<i;j++)
82. {
83. sum=sum+y[j]*l[i][j];

84. }
85. y[i]=b[i]-sum;
86. }
87. printf("\n\n Y =");
88. for(i=0;i<n;i++)
89. {
90. printf ("%10.2f",y[i]);
91. printf("\n ");
92. }

93. x[n-1]=y[n-1]/u[n-1][n-1];
94. for(i=n-2;i>=0;i--)
95. {
96. sum=0;
97. for(j=n-1;j>i;j--)
98. sum=sum+x[j]*u[i][j];
99. x[i]=(y[i]-sum)/u[i][i];

100. }

101. printf("\nLa solucion es :\n");
102. for(i=0;i<n;i++)
103. printf("\n x[%d] = %.2f ",i+1,x[i]);
104. printf("\n\n");

105. system("pause");}
106.

8


MTODO DE CHOLESKY




En lgebra lineal, la descomposicin de Cholesky o tringulo de Cholesky es
una descomposicin de Hermite, definida positiva de la matriz en el producto
de una matriz triangular inferior y su transpuesta conjugada. Fue descubierto
por Andr-Louis Cholesky para matrices reales. Cuando sea aplicable, la
descomposicin de Cholesky es aproximadamente dos veces tan eficiente
como la descomposicin LU para resolver sistemas de ecuaciones lineales. En
un sentido amplio, metafrico, esto puede considerarse como el anlogo de
la matriz de la raz cuadrada de un nmero.

Formulas de la deduccin de este algoritmo para un sistema de
n ecuaciones
j i
1 , 2 1
1

1
1

,
1
1
, ,
2
,
,
,
2
2
1
,
1 , 1
1 ,
1 , 1


< =
+ + =
=
|
.
|

\
|

=
=

=
=
= =
=

=
|
.
|

\
|

0 l
n ..., i , i j
n 2,3..., i
l a
l
l
n 2,3..., i
i
k
l
n 2,3..., i
l
a
l
a l
i i
i
k
k j k i i i,
i i
i i
k i i i,
i i
1,1
i
1,1
l
l
a

9


PROBLEMA:
Resolver el siguiente sistema de ecuaciones lineales usando el mtodo de
Cholesky

A =
(
(
(

979 225 55
225 55 15
55 15 6
y C=
(
(
(

100
150
100


Solucin:
En el mtodo de Cholesky el primer paso es encontrar la matriz L usando las
frmulas

ii
i
j
kj ij ki
ki
l
l l a
l

=
1
1
y

=
=
1
1
2
k
j
kj kk kk
l a l

La primera ecuacin se usa para elementos fuera de la diagonal y la segunda
para elementos en la diagonal principal.
Entonces.
6
11 11
= = a l



4495 . 2
15
11
21
21
= =
l
a
l



4495 . 2
55
11
31
21
= =
l
a
l = 22.454


1
0


Ya sabemos que l
12
= 0

2 2
21 22 22
1237 . 6 55 = = l a l = 4.1833

1833 . 4
) 454 . 22 )( 1237 . 6 ( 55
22
31 21 32
32

=

=
l
l l a
l = 20.916

De igual forma l
13
= l
23
= 0 y

) 916 . 20 454 . 22 ( 979 ) (
2 2 2
32
2
31 33 33
+ = + = l l a l = 6.1106

La matriz L es igual a
(
(
(

=
1106 . 6 916 . 20 454 . 22
0 1833 . 4 1237 . 6
0 0 4495 . 2
L

En el mtodo de Cholesky U = L
T


(
(
(

=
1106 . 6 0 0
916 . 20 1833 . 4 0
454 . 22 1237 . 6 4495 . 2
U


1
1


El siguiente paso es encontrar el vector D de la misma manera que en el
mtodo de descomposicin de LU
ii
i
j
j ij i
i
l
d l c
d

=
1
1


4495 . 2
100
11
1
1
= =
l
c
d =40.8246
1833 . 4
) 8246 . 40 )( 1237 . 6 ( 150
22
1 21 2
2

=

=
l
d l c
d =-23.9045

1106 . 6
) 9045 . 23 )( 916 . 20 ( ) 8246 . 40 )( 454 . 22 (( 100 ) (
33
2 32 1 31 3
3
+
=
+
=
l
d l d l c
d =-51.826

Finalmente se calcula el vector de incgnitas comenzando por la ltima x.
ii
n
i j
j ij i
i
u
x u d
x

+ =

=
1

33
3
3
u
d
x = =-8.481

22
3 23 2
2
u
x u d
x

= = [-23.9045-(20.916)(-8.481)]/4.1833 = 36.690

11
3 13 2 12 1
1
) (
u
x u x u d
x
+
= =[40.8246 ((6.1237)(36.69)+(22.454)(-8.481))]/2.4495 = 2.685
El resultado se puede comprobar multiplicando A por X y el resultado debe
ser igual a C.

1
2


CDIGO:
1. #include <math.h>
2. #include <tina/sys.h>
3. #include <tina/sysfuncs.h>
4. #include <tina/math.h>
5. #include <tina/mathfuncs.h>
6. #define TINY 1.0e-20
7. static int cholesky1(double **A, int n)
8. {
9. int i, j, k;
10. for (i = 0; i < n; ++i)
11. {
12. for (j = 0; j <= i; ++j)
13. {
14. double sum = A[i][j];
15. A[j][i] = 0;
16. for (k = 0; k < j; ++k)
17. sum -= A[i][k] * A[j][k]; /* computed previously */
18. if (i == j)
19. {
20. if (sum < 0)
21. return (0);
22. sum = sqrt(sum);
23. if (fabs(sum) < TINY)
24. return (0);
25. A[i][j] = sum;
26. } else
27. A[i][j] = sum / A[j][j];
28. }
29. }
30. return (1);
31. }
32. #undef TINY
33. static void cholbksb(double **A, int n, double *x, double *b)
34. {
35. int i, j;
36. double sum;
37. for (i = 0; i < n; i++)
38. {
39. sum = b[i];
40. for (j = 0; j < i; ++j)
41. sum -= x[j] * A[i][j];
42. x[i] = sum / A[i][i];
43. }
44. for (i = n - 1; i >= 0; i--)
45. {
46. sum = x[i];
47. for (j = i + 1; j < n; j++)
48. sum -= x[j] * A[j][i];
49. x[i] = sum / A[i][i];
50. }
51. }
52. Matrix *matrix_cholesky_decomp(Matrix * A)
53. {
1
3


54. if (A == NULL || A->n != A->m)
55. return (NULL);
56. A = matrix_cast_fill(A, double_v);
57. if (!cholesky1 (A->el.double_v, A->n))
58. {
59. matrix_free((Matrix *) A);
60. return (NULL);
61. }
62. return (A);
63. }
64. Vector *matrix_cholesky_back_sub(Matrix * A, Vector * b)
65. {
66. int n;
67. Vector *x = NULL;
68. Vector *c = NULL;
69. if (A == NULL || A->n != A->m)
70. return (NULL);
71. n = A->n;
72. if (b == NULL || b->n != n)
73. return (NULL);
74. A = matrix_cast_fill(A, double_v);
75. c = vector_cast(b, double_v);
76. x = vector_alloc(n, double_v);
77. cholbksb (A->el.double_v, n, (double *) x->data, (double *) c->data);
78. vector_free(c);
79. matrix_free((Matrix *) A);
80. return (x);
81. }
82. Vector *matrix_cholesky_sol(Matrix * A, Vector * b){
83. int n;
84. int sucess;
85. Vector *x = NULL;
86. Vector *c = NULL;
87. if (A == NULL || A->n != A->m)
88. return (NULL);
89. n = A->n;
90. if (b == NULL || b->n != n)
91. return (NULL);
92. A = matrix_cast_fill(A, double_v);
93. sucess = cholesky1(A->el.double_v, n);
94. if (sucess)
95. {
96. c = vector_cast(b, double_v);
97. x = vector_alloc(n, double_v);
98. cholbksb(A->el.double_v, n, (double *) x->data, (double *) c->data);
99. vector_free(c);
100. }
101. matrix_free((Matrix *) A);
102. return (x);
103. }
104. Vector *matrix_cholesky_weighted_least_square(Matrix * A, Matrix * W, Vector * b)
105. {
106. Matrix *At;
107. Matrix *M;
1
4


108. Matrix *temp;
109. Vector *x;
110. if (A == NULL || A->m != b->n || W == NULL || W->n != W->m || W->m != A->m)
111. return (NULL);
112. A = matrix_cast_fill(A, double_v); /* to maintain precision */
113. At = matrix_transp(A);
114. x = matrix_vprod(W, b);
115. b = matrix_vprod(At, x);
116. vector_free(x);
117. temp = matrix_prod(W, A);
118. M = matrix_prod(At, temp);
119. matrix_free((Matrix *) temp);
120. x = matrix_cholesky_sol(M, b);
121. vector_free(b);
122. matrix_free((Matrix *) A);
123. matrix_free((Matrix *) At);
124. matrix_free((Matrix *) M);
125. return (x);
126. }
127. Vector *matrix_cholesky_least_square(Matrix * A, Vector * b)
128. {
129. Matrix *At;
130. Matrix *M;
131. Vector *x;
132. if (A == NULL || b == NULL || A->m != b->n)
133. return (NULL);
134. A = matrix_cast_fill(A, double_v); /* to keep precision */
135. At = matrix_transp(A);
136. b = matrix_vprod(At, b);
137. M = matrix_prod(At, A);
138. x = matrix_cholesky_sol(M, b);
139. vector_free(b);
140. matrix_free((Matrix *) A);
141. matrix_free((Matrix *) At);
142. matrix_free((Matrix *) M);
143. return (x);
a. }


15

Polinomios de Chebyshev

El polinomio de chebyshev es parecido con los Polinomios de Legendre,
porque una de las principales aplicaciones de ambos la constituye el
desarrollo de los filtros elctricos, o filtros de ondas, de gran importancia en
las ramas de la ingeniera elctrica y electrnica.

La funcin siguiente es el Polinomio de Chebyshev de orden n

es cualquier nmero natural (Formula No.1)


1.-Si = 0:


Para n = 1:



Para calcular los polinomios sucesivos empleamos la frmula de recurrencia
(formula No.1)


Y al Simplificar la ecuacin
u = arcos x
Remplazando obtenemos:

(Formula No.2)

Pero la funcin inversa de u es:
(Formula No.3)

16

Por lo tanto el Polinomio de orden n + 1, ser:

{ }

Y el de orden n -1:

{ }

Al aplicar las frmulas de coseno de la suma y coseno diferencia obtenemos:




Al sumar las dos igualdades nos da


Remplazando la formula No. 2 y 3

Formula No.4)
A partir de este resultado, es posible determinar, por reiteracin, el
polinomio que representa a cada una de las funciones de Chebyshev.



EJEMPLO:
Calcular las funciones

, aplicando la frmula de recurrencia


Ya vimos que



17


Aplicando la formula No.4



APLICACI ONES MATLAB
Clculo de polinomios de Chebyshev por aplicacin de la frmula de recurrencia:
1. syms x
2. C0 = 1
3. C0 = 1
4. C1 = x
5. C1 = x
6. C2 = 2*x*C1 - C0
7. C2 = 2*x^2-1
8. C3 = 2*x*C2 - C1
9. C3 = 2*x*(2*x^2-1)-x
10. C4 = 2*x*C3 - C2
11. C4 = 2*x*(2*x*(2*x^2-1)-x)-2*x^2+1
12. % Como ejemplo representamos C3:
13. ezplot(C3)
14. axis ([-1.2 1.2 -1.2 1.2])



18

MTODO DE HERMITE


En el anlisis numrico, la interpolacin de Hermite, nombrada as en honor
a Charles Hermite, es un mtodo de interpolacin de puntos de datos como
una funcin polinmica. El polinomio de Hermite generado est
estrechamente relacionado con el polinomio de Newton, en tanto que ambos
se derivan del clculo de diferencias divididas.
Definicin: Sean

nmeros distintos y

un entero
negativo asociado a

para { }. Supongamos que

[ ],
donde {

}, El polinomio oscilante que aproxima f es el


polinomio P de menor grado que concuerda con la funcin f y con todas sus
derivadas de orden

en

para cada { }.


Teorema
Sean



[ ] nmeros distintos,

[ ] Entonces existe un
nico polinomio que concuerde con

en

. En este polinomio
est dado por:


Donde:

( (

)

(

))


Teniendo:



19

La interpolacin de Hermite permite construir un polinomio que ajusta no
solo a los valores de una funcin sino tambin a las derivadas de los puntos.
Tabla de aproximacin e interpolacin polinmicas.

Problema
Se sabe que:

es el polinomio de interpolacin de Hermite de cierta funcin f,


basado en los datos

a) Sin evaluar

ni sus derivadas en -1 y 1, completar la tabla de diferencias


divididas con repeticin utilizada en la construccin de

.

b) Sin evaluar

ni sus derivadas en -1 y 1, determinar los valores de





Solucin:

20

a) Hermite es un mtodo de interpolacin en que se involucran las derivadas
de la funcin.
Si [] y como el -1 se repite 1 vez, la diferencia dividida
entre estos 2 primeros datos dar la primera derivada de la funcin, es decir;
[] [ ]
Ahora se pueden empezar a hacer relaciones entre los datos que se dan, y las
incgnitas.
Por lo tanto;












Entonces al reemplazar los resultados obtenidos en la tabla, quedara as;


c) Los valores de estn dados por;







21

En la tabla de valores pedidos estn en lugares;



Algoritmo
ENTRADA Los nmeros x0 ,x1,.,xn; valores f(x0) ,,f(xn) y f(x0).f(xn)
SALIDA los nmeros Q 0,0 ,Q 1,1,,Q 2n+1,2n+1 donde
H(x)= Q 0,0 + Q 1,1 (x- x0 )+Q 2,2 (x- x0)^2+ Q 3,3 (x- x0)^2 (x- x1 )+Q 4,4 (x-
x0)^2 (x- x1 )^2++Q 2,n+1,2n+1 (x- x0)^2 (x- x1 )^2..(x- xn-1 )^2(x-xn)
Paso 1: Para i=0,1,,n haga paso 2 y3
paso 2 Sea z2i =xi
z2i+1 =xi
Q2i,0= f(xi)
Q2i+1,0= f(xi)
Q2i+1,1= f(xi)
paso 3 Si i 0 entonces tome
Q2i,1= Q2i,0-Q2i-1,0 / z2 - z2i-1
Paso 4 Para i=2,3,,2n+1
para j=2,2,.i tomar
Qi,j= Qi,j-1-Qi-1,j-1 / zi - zi-j
Paso 5 Salida (Q0,0 , Q1,1,..,Q2n+1,2n+1)
pare










22

PROGRAMA EN MATLAB
1. X=input('Ingrese los valores de x='); % en forma de vector
2. Y=input('Ingrese los valores de f(x)='); % en forma de vector
3. DF=input('Ingrese los valores de la derivada de f(x)='); % en forma de vector
4. x=input(Ingrese el valor a interpolar = );
5. n=length(X);
6. Q=zeros(2,n);
7. for i=1:n
8. z(2*i-1)=X(i);
9. z(2*i)=X(i);
10. Q(2*i-1,1)=Y(i);
11. Q(2*i,1)=Y(i);
12. Q(2*i,2)=DF(i);
13. if i~=1
14. Q(2*i-1,2)=(Q(2*i-1,1)-Q(2*i-2,1))/(z(2*i-1)-z(2*i-2));
15. end
16. end
17. for i=3:2*n
18. for j=3:i
19. Q(i,j)=(Q(i,j-1)-Q(i-1,j-1))/(z(i)-z(i-j+1));
20. end
21. end
22. syms x
23.
24. Fx=Q(1,1);
25.
26. %Diferencias divididas
27. for p=1:numel(X)-1
28. L=1;
29. %Multiplicacin de los polinomios
30. for k=1:p
31. L=L*(x-X(k));
32. end
33. Fx=Fx+L*Q(p+1,p+1);
34. end
35.
36. %Aproximacion del Polinomio resultante
37. val=eval(Fx);
38. disp(val);

23

MTODO DE NEWTON



MTODO:



PROBLEMA:


CDI GO:




24

BIBLIOGRAFA



Abascal, I. R. ( 2006). Ecuaciones Diferenciales de Orden Superior Parte V Polinomios de Chebyshev . thompson
Learning.
Barcelo, T. (s.f.). uam.es. Recuperado el 6 de abril de 2014, de
http://www.uam.es/personal_pdi/ciencias/barcelo/cnumerico/recursos/interpolacion.html
Canale, S. C. (2006). Mtodos Nmericos para ingenieros. Mac Graw Hill.
Commons, C. (s.f.). wikipedia.com.mx. Recuperado el 8 de abril de 2014, de
http://es.wikipedia.org/wiki/Interpolaci%C3%B3n_polin%C3%B3mica
s.i. (s.f.). universidad del valle. Recuperado el abril de 2014, de interpolacion: http://www.uv.es/diazj/cn_tema5.pdf

You might also like