Professional Documents
Culture Documents
Parte a:
Tenemos el sistema:
1
1
1
]
1
2 1 1
1 10 10
1 10 10
5 5
5 5
A
;
1
1
1
]
1
3
2
1
x
x
x
x
; 1
1
1
]
1
1
10 . 2
10 . 2
5
5
b
Para la resolucin de este problema utilizamos el mtodo directo de eliminacin
gaussiana sin pivoteo resuelto mediante un programa en matlab. Primero realizamos la
escalerizacin del sistema ! posteriormente la sustitucin "acia atr#s $bac%&ard
substitucion'.
(l algoritmo para la resolucin gaussiana consiste en ir generando trminos
nulos a partir de la propiedad de )ue la solucin del sistema original es la misma luego
de realizar combinaciones lineales de entre sus *ilas.
+onsideramos la matriz del sistema ,aumentado-
1
1
1
]
1
1 2 1 1
10 . 2 1 10 10
10 . 2 1 10 10
5 5 5
5 5 5
M
.
.a eliminacin se realiza en n/1 pasos
1 .... 2 1 n k
. (n el paso % los
elementos
' $k
ij
a
con
k j i >
son trans*ormados de la siguiente *orma:
' $ ' $ ' 1 $
' $
' $
k
kj ik
k
ij
k
ik
k
kk
k
ik
ik
a m a a
a
a
m
+
n k k i ..... 2 1 + +
n k k j ..... 2 1 + +
0l *inal del algoritmo )ueda escalerizado lo cual nos permite utilizar el
algoritmo de sustitucin "acia atr#s.
(l algoritmo para sustitucin hacia atrs se realiza luego de "aber escalerizado
el sistema ! "aber realizado la multiplicacin de la matriz escalerizada $1' por la
matriz $el vector' $2'. (l resultado c Ux es de la *orma
n n nn
n n n n n n n
n n
n n
c x U
c x U x U
c x U x U
c x U x U x U
+ +
+ + +
1 1 1 1 1
2 2 2 22
1 1 2 12 1 11
.........
.........
Por lo )ue obtenemos el termino genrico
i
x
de la siguiente *orma:
ii
ik
n
i k
k i
i
U
U x b
x
+
1
; con
1 ..... 1 n n i
Todo estos algoritmos aplicados a lengua3e matlab )ueda traducido de la
siguiente manera:
function X=prob1a(A,b)
if (det(A)~=0),
n=length(b);
%Escalerizo
A1=A b!;
for "=1#n,
if A1(",")==0,
$c,i$c!=$a%(abs(A1("#n,")));
i$c=i$c&"'1;
au%=A1(",#);
A1(",#)=A1(i$c,#);
A1(i$c,#)=au%;
end
for i="&1#n,
A1(i,"#n&1)=A1(i,"#n&1)'A1(i,")(A1(","))A1(","#n&1);
end
end
% *ustitu+o hacia atras
b1=A1(#,n&1);
%=zeros(n,1);
%(n)=b1(n)(A1(n,n);
for "=n'1#'1#1,
%(")=(b1(")'A1(","&1#n))%("&1#n))(A1(",");
end
else
disp(,-a $atriz no es in.ertible, por lo tanto no es escalerizable,)
disp(,el siste$a no tiene solucion,)
end
X=%;
(l resultado de el sistema resuelto por el cdigo anterior dio
,
_
0000 . 0
0000 . 2
0000 . 1
x
Parte b:
1
1
1
]
1
2 1 1
1 10 10
1 10 10
5 5
5 5
A
;
1
1
1
]
1
3
2
1
x
x
x
x
;
1
1
1
]
1
1
10 . 2
10 . 2
5
5
b
4ealizacin de el primer paso de eliminacin 5auseana ! pivoteo completo
usando aritmtica de punto *lotante de tres d6gitos.
Para ello implementamos el siguiente algoritmo:
Pivoteo completo sobre A:
1' +onstruimos 7 la matriz ampliada de 0:
1
1
1
]
1
1 2 1 1
10 . 2 1 10 10
10 . 2 1 10 10
5 5 5
5 5 5
M
2' (legimos r ! s los m6nimos enteros para los cuales
' $ ' $
ma8
k
ij
k
rs
a a
n j i k
)ue en la matriz 0 resulta ser
2
33
a
.
3' Por lo tanto 3 s r entonces intercambiamos la *ila 1 por la *ila 3 ! la
columna 1 por la 3 $pivoteamos 7'.
.a matriz luego del pivoteo )ueda:
$a partir de a)u6 utilizaremos la aritmtica de punto *lotante de tres d6gitos'
1
1
1
]
1
9 9 9 1
9 9 9 1
1 1 1 1
10 . 200 0 10 . 100 0 10 . 100 0 10 . 100 0
10 . 200 0 10 . 100 0 10 . 100 0 10 . 100 0
10 . 100 0 10 . 100 0 10 . 100 0 10 . 200 0
M
9' 4ealizamos el primer paso de eliminacin gaussiana. :allamos el multiplicador
correspondiente a la *ila 2
0
1
1
11
21
21
10 . 500 0
10 . 200 0
10 . 100 0
a
a
m
5' .uego a cada componente de la *ila 2 le aplicamos j j j
a m a a
1 21 2 2
;
! es a)u6
donde surgen problemas:
0 1 0 1
21
10 . 000 0 10 . 200 0 ; 10 . 500 0 10 . 100 0 a
0 1 0 9
22
10 . 500 0 10 . 100 0 ; 10 . 500 0 10 . 100 0
a )ue en realidad
corresponde al valor
0
22
10 . 50001 0 a pero debido a la representacin de P<
de 3 d6gitos se pierde in*ormacin
0
10 . 00001 0 .
0 1 0 9
23
10 . 500 0 10 . 100 0 ; 10 . 500 0 10 . 100 0
a
ocurriendo algo
similar a la operacin anterior.
0 1 0 9
29
10 . 500 0 10 . 100 0 ; 10 . 500 0 10 . 200 0
a
7 )ueda
1
1
1
]
1
9 9 9 1
0 0 0 0
1 1 1 1
10 . 200 0 10 . 100 0 10 . 100 0 10 . 100 0
10 . 500 0 10 . 500 0 10 . 500 0 10 . 000 0
10 . 100 0 10 . 100 0 10 . 100 0 10 . 200 0
M
=' :icimos lo mismo con la *ila 3
1
1
1
]
1
0 0 0 0
0 0 0 0
1 1 1 1
10 . 500 0 10 . 500 0 10 . 500 0 10 . 000 0
10 . 500 0 10 . 500 0 10 . 500 0 10 . 000 0
10 . 100 0 10 . 100 0 10 . 100 0 10 . 200 0
M
>tra vez perdemos in*ormacin debido a la representacin del punto *lotante.
(ste mtodo puede llegar a *allar debido a )ue la representacin del punto *lotante del
de 3 d6gitos puede no ser su*iciente para operaciones )ue se mane3en con operandos de
una d*erencia de ordenes ma!or o igual a 9.
Parte 1 c:
Tenemos )ue
1
1
1
]
1
2 1 1
1 10 10
1 10 10
5 5
5 5
A
;
1
1
1
]
1
3
2
1
x
x
x
x
;
1
1
1
]
1
1
10 . 2
10 . 2
5
5
b
?amos a realizar el escalado ! el e)uilibrado del sistema b Ax .
.uego de*inimos
1 2
@ AD D A
donde
1
D
2
D
son matrices diagonales entonces
,
_
3
2
1
1
0 0
0 0
0 0
,
_
3
2
1
2
0 0
0 0
0 0
D
.
.uego
b D b
2
@
x D x
1
@
Para escalar la matriz 0 multiplicamos 0 por A1 ! obtenemos
1
A
,
_
,
_
5
5 5
5 5
1 1
10 0 0
0 1 0
0 0 1
2 1 1
1 10 10
1 10 10
AD A
,
_
5
5 5 5
5 5 5
1
10 . 2 1 1
10 10 10
10 10 10
A
0"ora e)uilibramos la matriz:
1
A
para "allar 0@
1 2 1 2
B A D AD D A
,
_
,
_
,
_
5
3 3 3
5
2
5
2
5
2
5
1
5
1
5
1
5
5 5 5
5 5 5
3
2
1
10 . 2
10 10 10
10 10 10
10 . 2 1 1
10 10 10
10 10 10
.
0 0
0 0
0 0
@
A
Por la de*inicin de e)uilibrado para toda *ila
1
1
n j
ij
a max
n i ..... 2 1
{ }
5
1
5
1
5
1
5
1
10 10 10 10
max dividimos la *ila 1 por el m#8imo
( ) 1 1 1 C maximo fila
{ }
5
2
5
2
5
2
5
2
10 10 10 10 max dividimos la *ila 2 por el m#8imo
( ) 1 1 1 C maximo fila
{ }
3 3 3 3
max
dividimos la *ila 3 por el m#8imo
( )
5
10 . 2 1 1 C
maximo fila
5
1
10
5
2
10
1
3
b D b
2
@
,
_
,
_
,
_
1
2
2
1
10 . 2
10 . 2
1 0 0
0 10 0
0 0 10
5
5
5
5
0 pesar )ue mostramos los c#lculos a mano $para e)uilibrar 0'; implementamos
una *uncin e)uili la cual le ingresas una matriz cual)uiera ! te la devuelve e)uilibrada.
function A=e/uili(0)
n $!=size(0);
for i=1#n
$=$a%(0(i,#));
A(i,#)=(0(i,#))($;
end
Aespus de "allar 0@ D@ ! A1 los ingresamos como datos en la siguiente
*uncin la cual realiza el pivoteo completo ! la eliminacin 5aussiana.
function X=pi.(a,b,d1)
if (det(a)~=0),
n=length(b);
A1=a b!;
.=1#n!;
%1i.oteo co$pleto + eli$inacion gaussiana
for "=1#n,
%1i.oteo co$pleto
$c,col!=$a%(abs(A1("#n,")));
$c,fil!=$a%(abs(A1(","#n)));
col=col&"'1;
fil=fil&"'1;
au%=A1(","#n&1);
A1(","#n&1)=A1(fil,"#n&1);
A1(fil,"#n&1)=au%;
au%2=A1("#n,");
A1("#n,")=A1("#n,col);
A1("#n,col)=au%2;
au%3=.(1,");
.(1,")=.(1,col);
.(1,col)=au%3;
%Eli$inacion gaussiana
for i="&1#n,
A1(i,"#n&1)=chop(A1(i,"#n&1)'A1(i,")(A1(","))A1(","#n&1),3);
end
end
% *ustitucion hacia atras
b1=A1(#,n&1);
%=zeros(n,1);
if A1(n,n)==0
%(n)=0;
else
%(n)=chop( b1(n)(A1(n,n),3 );
end
for "=n'1#'1#1,
%(")=chop( (b1(")'A1(","&1#n))%("&1#n))(A1(","),3 );
end
else
disp(,-a $atriz no es in.ertible,el siste$a no tiene solucion,)
end
.=.,
disp(,El .ector . indica el subindice de cada % del .ector soluci4n,)
X=d1)%;
Segunda Parte
Parte a:
Aada la matriz
,
_
1 1
1 1
A
vamos a "allar sus valores ! vectores propios.
(n una matriz cuando tenemos )ue v v A . . se de*ine a como su valor
propio asociado a el vector propio
v
. .os valores propios se pueden "allar como
( ) 0 . det I A
los vectores propios asociado a
i
.
(n matlab se puede obtener los valores ! vectores propios a travs del comando
eig con el cual se obtiene una matriz diagonal D con los valores propios ! otra matriz P
con los vectores propios asociados a j
correspondiente a j
v
donde 3 es el numero de
columna de la matriz.
,
_
n
n
D
0 ........ 0 0
0 ........ 0 0
........
0 0 ........ 0
0 0 ....... 0
1
2
1
( )
n n
v v v v P
1 2 1
.......
,
_
,
_
2 0
0 0
Da
0)u6 vemos )ue los vectores propios entregados por el comando eig no son
cmodos para traba3ar esto se debe a )ue el comando eig devuelve a los vectores con
norma 1 !
,
_
2
1
2
1
2
1
2
1
Pa
si observamos bien cada componente de cada vector tiene el mismo mdulo por lo
tanto ser6a conveniente traba3ar con los componentes de cada vector de mdulo 1
obtenido de dividir a cada componente por un escalar en este caso
2
1
. :a! )ue ver
si es l6cito realizar esta operacin.
Tenemos )ue
( ) ( ) { } V
b
F0F10 0.F0F100. .F0F10 0.F0F10/0
donde ? es la base
de vectores propios por lo tanto cual)uier combinacin lineal de estos vectores
pertenece a ?. 0dem#s podemos elegir otra base de vectores propios conveniente.
Tomamos la misma base ! la dividimos entre
2
1
lo )ue nos )ueda
,
_
1 1
1 1
Pa
!
adem#s el sistema
'
0 1 1
0 1 1
sigue siendo un sistema compatible determinado por
lo tanto el con3unto
( ) ( ) { } 1 1 1 1 sigue siendo una base de ?. (ntonces
( ) ( ) { } V
b
1 1 1 1
Parte b:
Ge de*ini
E
10 ; ' 2 $
+ rand A B donde le suma a 0 valores aleatorios del
orden m#8imo de
E
10
'.
Parte c:
Teniendo 8 calculamos x B b . ! luego llamamos 2nuevoIDJb suponiendo
)ue no "ubiese problema de redondeo se puede concluir )ue 2nuevo I 8 si luego a b lo
perturbamos el resultado de 2nuevo se va a alterar.
Tenemos )ue calcular la cota de error relativo de 2nuevo si suponemos )ue la
( )
E
10
b norm ! D es e8acto.
0dem#s tenemos )ue la cota de error relativo es
( )
b
b
B cond
Xnuevo
Xnuevo
.
tambin sabemos )ue la
1
. ' $ B B B cond
( )
E
10
b norm b
+on los datos )ue contamos sin suponer un valor de 8 la cota de error relativo
nos )ueda en *uncin de
b
por lo tanto tomamos algunos valores de 8 para poder
obtener algKn dato e8perimental.
0 continuacin se muestra el cdigo para "allar la cota de error relativo en
7atlab tomando
,
_
1
1
x
:
A=[1 1;1 1];
B=A + rand(2)*10^-8;
x=[1;1]
b=B*x;
Xnuevo=B\b;
B1=inv(B);
coerr=cond (B!in") * (10^-8) # nor$(b!in")
+on
,
_
1
1
x
como supuesto ! corriendo varias veces el programa vemos )ue la
cota de error relativo de 2nuevo varia notoriamente !a )ue obtuvimos valores entre 1 !
100. $.os distintos valores se deben a )ue D se obtiene de una *uncin aleatoria por eso
los valores di*erentes se obtienen e3ecutando el programa varias veces'.
Parte d:
Tenemos las mismas "iptesis )ue la ,parte c- pero suponiendo adem#s )ue D
tiene un error del orden
mach
,
_
b
b
B
B
B
B
B cond
B cond
Xnuevo
Xnuevo
.
1
tenemos como dato )ue
mach
B
'
A=[1 1;1 1];
B=A + rand(2)*10^-;
"=[1;1]
!=B*";
#n$e%o=B&!;
B1=in%(B);
'o(err=('ond(B,inf))((1-'ond(B,inf))* (e*+)nor,(B,inf))))* ((e*+)nor,(B,inf))
+(10^-) ) nor,(!,inf))
+on
,
_
1
1
x
como supuesto ! corriendo varias veces el programa vemos )ue la
cota de error relativo de 2nuevo no varia significativamente.
Parte e y f:
0"ora tenemos
,
_
1
1
x
! ( )
E
10 . 2 1
rand b vamos a calcular 1000 veces el
valor de 2nuevoIDJ$$D;8 'L b ' )ue es variable debido a )ue b es obtenido de una
*uncin aleatoria. 0 su vez gra*icamos realizamos las gra*icas de las 1000 di*erencias de
$2nuevo M 8' "allados ! la gra*ica de la variacin de 2nuevo
A=[1 1;1 1];
B=A + rand(2)*10^-;
"=[1 ;1];
,=[ ];
-=[ ];
for i=1:1000
d!=rand(1,2)*10^-;
#n$e%o=B&((B*")+ (d!.));
-(:,i)=#n$e%o;
, = [,, #n$e%o - "];
end
*/o((0,0,.r*.)
0o/d on
*/o( (,(2,:),,(1,:))
0o/d off
*a$+e;
*/o( (-(2,:),-(1,:))
0o/d on
*/o((1,1,.r*.)
0o/d off
(l programa calcula los 1000 valores $2nuevo M 8' ! 2nuevo ! los gra*ica en
*uncin de sus coordenadas. (n la primera gr#*ica aHadimos el punto $00' para mostrar
)ue pasa por el. 4ealizamos lo mismo en la segunda pero en el punto $11'.
-25 -20 -15 -10 -5 0 5 10 15 20 25
-30
-20
-10
0
10
20
30
-3 -2 -1 0 1 2 3 4 5
-3
-2
-1
0
1
2
3
4
5
.os valores de + b b var6an en un cuadrado de lado de
E
10
0
1
d b
2
2
2
por propiedad triangular
E
10
b
E
10 ' 1 1 $ . ' 1 1 $ . ' 1 1 $ ' 1 1 $
+ + d c d c b
E
10
+d c
E
10
c
E
10
d
c a
1
E
1
10
0
a
es grande
E
2
2
10
2
d
d b
b es c"ico
' 1 1 $ ' 1 1 $ b a x +
se desprecia en la direccin de $11'
! x var6a en la direccin de $/11'
2 I$11' en la base cannica
(n la base { }
2 1
v v
' 1 1 $ ' 1 1 $ ' 1 1 $ +
1 +
1 1 2
1 +
0 1
' 1 0 $ X
en la base { }
2 1
v v
' 1 1 $ ' 1 1 $ ' 1 1 $ 1 ' 1 1 $ 0 b a x x + + + + ' 1 1 $ 1 ' 1 1 $ + a
' 1 1 $ 1
en la direccin de
2
v
x x + se mantiene *i3o en 1
en las coordenadas cannicas x x + siempre pasa por $11'
! en la direccin de
1
v
x x + var6a segKn
a
por lo )ue se *orma una
recta )ue pasa por el $11' ; esa recta esta en la direccin
1
v
por lo )ue
tiene pendiente /1 !a )ue
1
v
es el vector $/11'.
Parte g:
(n esta parte gra*icaremos
( ) ( ) ( ) N.N x Xnuevo norm b norm plot
A=[1 1;1 1];
B=A + rand(2)*10^-;
"=[1 ;1];
for i=1:1000
d!=rand(1,2)*10^-;
#n$e%o=B&((B*")+ (d!.));
*/o((nor,(d!),nor,(#n$e%o-"),.r1.)
0o/d on
end
0 0.2 0.4 0.6 0.8 1 1.2 1.4
x 10
-8
0
0.2
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
2