Está en la página 1de 3

PRÁCTICA 2 – ALN

EJERCICIO 1. EL SISTEMA DE ECUACIONES AX=B, DONDE A =


2.243 2.511 2.483 22.000
(2.172 1.485 −0.678), B = (24.000) HA DE SER ALMACENADO USANDO 6 BITS
2.374 −1.0214 1.495 22.000
PARA LA MANTISA.
A = matrix(RealField(6), [[2.243, 2.511, 2.483], [2.172, 1.485, -0.678],
[2.374, -1.214, 1.495]])
b = vector(RealField(6), [22.000,24.000,22.000])
APARTADO 1. OBTENER LA SOLUCIÓN DEL SISTEMA A PARTIR DEL
ESCALONAMIENTO SIMPLE SIN PIVOTEO MÁS SUSTITUCIÓN REGRESIVA.
M = block_matrix([[A, b.column()]])
show(M)
F, U = forma_escalonada(M)
print(sustitucion_regresiva(U))
APARTADO 2. OBTENER LA SOLUCIÓN DEL SISTEMA A PARTIR DEL
ESCALONAMIENTO SIMPLE CON PIVOTEO PARCIAL ESCALADO MÁS SUSTITUIÓN
REGRESIVA.
F, U = forma_escalonada(M, False, True, algoritmo = 'pivoteo parcial
escalado')
print(sustitucion_regresiva(U))
EJERCICIO 2. CONSIDEREMOS EL SISTEMA DE ECUACIONES AX=B, DONDE A =
49 −35 −7 −98
(−35 26 9 ), B = ( 61 ). SE PIDE:
−7 9 53 −94
A = matrix([[49, -35, -7], [-35, 26, 9], [-7, 9, 53]])
b = vector([-98, 61, -94])
APARTADO 1. HALLAR LA DESCOMPOSICIÓN DE CHOLESKY A=T T T E INDICAR EL
VALOR DEL ELEMENTO T 2,3 DE LA MATRIZ T.
T = Cholesky(A)
show(T)
APARTADO 2. HALLAR LA SOLUCIÓN DEL SISTEMA AUXILIAR RESUELTO POR
SUSTITUCIÓN PROGRESIVA.
g = sustitucion_progresiva2(T.transpose(), b)
show(g) # resolvemos el primer sistema auxiliar por sustitución
progresiva
APARTADO 3. HALLAR LA SOLUCIÓN FINAL DEL SISTEMA AX=B.
z = sustitucion_regresiva2(T, g) # resolvemos el segundo sistema por
sustitución regresiva, obteniendo la solución final
z
17 0
7 −4 25
EJERCICIO 3. DADA LA MATRIZ A = ( 0 11
5 4 −8 )
7 5
14 4 −1
(−4 4 4 12 −28 )
QUEREMOS ESTUDIAR
25 −8 −1 −28 81
SI ES REGULAR, DIAGONAL DOMINANTE, SIMÉTRICA Y DEFINIDA POSITIVA.
A = matrix(QQ, [[17, 0, 7, -4, 25], [0, 11, 5, 4, -8], [7, 5, 14, 4, -1],
[-4, 4, 4, 12, -28], [25, -8, -1, -28, 81]])
APARTADO 1. INDICAR LA RESPUESTA QUE MEJOR DESCRIBE LAS PROPIEDADES DE
LA MATRIZ.
show(diagonal_dominante(A)) # nos muestra si es diagonal dominante o no
show(forma_escalonada(A, True)) # la matriz A será regular si su forma
escalonada canónica es I
show(A.is_symmetric()) # nos muestra si es simétrica o no
orden = 5 ### orden de la matriz

for i in range(orden):
menor_principal = A[:i + 1, :i + 1].det()
if menor_principal >0 : signo = 'positivo'
elif menor_principal < 0: signo = 'negativo'
else : signo = 'nulo'
print('menor principal de orden: %i, valor: %s, signo: %s'%(i+1,
menor_principal,signo)) # nos muestra el signo
EJERCICIO 4. SE CONSIDERA EL SISTEMA DE ECUACIONES LINEALES AX=B, DONDE A
2 3 3 −1 −3 0
= (2 2 1 4 −8) (12)
2 2 2 4 −1 7
(−4 4 4 12 −28 )
, B = (
−37)
SE PRETENDE RESOLVERLO UTILIZANDO
25 −8 −1 −28 81 15
ALGUNA DESCOMPOSICIÓN TIPO LU.
A = matrix(QQ, [[2, 3, 3, -1, -3], [2, 2, 1, -3, 0], [2, 2, 2, -1, 2], [-
6, -6, -4, 8, -50], [0, -3, -4, 0 ,8]])
b = vector(QQ, [0, 12, 7, -37, 15])
APARTADO 1. ¿EXISTE UNA DESCOMPOSICIÓN LU PARA LA MATRIZ A DEL SISTEMA
ANTERIOR? SELECCIONAR LA RESPUESTA MÁS PRECISA.
show(L, U = descomposicion_LU(A))
show(P, L, U = descomposicion_PLU(A)) # Ver cual de las dos
descomposiciones es cierta
APARTADO 2. HALLAR LA MATRIZ U DE LA DESCOMPOSICIÓN LU, SI ESTA ES
FACTIBLE O, EN CASO CONTRARIO, LA MATRIZ U DE LA DESCOMPOSICIÓN PLU CON
INTERCAMBIO DE FILAS. INDICAR EL VALOR DEL ELEMENTO DE LA TERCERA FILA
U 3,3 .
show(U) # Mirar el elemento que pidan
APARTADO 3. DETERMINAR LA SOLUCIÓN DEL SISTEMA AUXILIAR, CON EL TIPO DE
DESCOMPOSICIÓN DEL APARTADO ANTERIOR.
M = L.solve_right(b)
show(M) # Este código en caso de que en el apartado 1 sea cierta la
descomposición LU

bp = P*b
M = modifica_lado_derecho(L, bp)
show(M) # Este código en caso de que en el apartado 1 sea cierta la
descomposición PLU
APARTADO 4. DAR LA SOLUCIÓN DEL SISTEMA INICIAL AX=B.
z = U.solve_right(M)
show(z) # Este código en caso de que en el apartado 1 sea cierta la
descomposición LU

z = sustitucion_regresiva2(U, M)
show(z) # Este código en caso de que en el apartado 1 sea cierta la
descomposición PLU

También podría gustarte