Sie sind auf Seite 1von 3

Algebra lineal numérica e Interpolación

  • 1. A =

(a) Mostrar que la matriz es singular. Describir el conjunto de soluciones al sistema Ax = b, si

b = [ ] En Matlab >> A A = 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000
b = [
]
En Matlab
>> A
A = 0.1000
0.2000
0.3000
0.4000
0.5000
0.6000
0.7000
0.8000
0.9000
>> b
b = 0.1000
0.3000
0.5000
>> x=inv(A)*b
Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND =
1.541976e-17.
x = 0
1
0
>> inv(A)

Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND =

1.541976e-17.

ans =

1.0e+16 *

 

-0.4504

0.9007

-0.4504

0.9007

-1.8014

0.9007

Sabemos que un método de solución a un sistema de ecuaciones se obtiene mediante x=inv(A)*b siempre que A sea invertible, i.e. A sea no singular. Aquí tenemos que la matriz A del sistema de ecuaciones es singular, por lo tanto no tiene inversa y no se puede obtener solución por ese método. Al introducir los datos y realizar operaciones en Matlab, nos arroja una solución al

sistema de ecuaciones, a saber

x = [

] . Sabemos que esta solución está mal. El programa no

debería encontrar la inv(A) pues esta es singular, pero la encuentra, y con esto encuentra una solución al sistema de ecuaciones. La explicación es que algunas entradas de la matriz A no tienen

representación finita en base 2, y lo que hace el programa es truncar o redondear los números

obteniendo errores muy pequeños. Como el método x=inv(A)*b requiere

operaciones (n es el

número de elementos de A), en cada operación se arrastra un error, al final el resultado tiene una

serie de errores, lo que hace inexacto el resultado.

  • (b) Si usáramos eliminación Gaussiana con pivoteo parcial para resolver este sistema usando

aritmética exacta, ¿En qué punto fallaría el proceso? En Matlab

>> x2= A\b Warning: Matrix is close to singular or badly scaled. Results may be inaccurate. RCOND =

1.541976e-17.

x2 =

0.1615

0.6771

-0.1719

Este método arroja una solución diferente al sistema de ecuaciones, pero también errónea. El algoritmo no calcula la inv(A) pero falla al momento de ocupar los valores de la matriz A, pues algunos de estos no se pueden representar de forma exacta en el sistema de punto flotante

binario. El método x2= A\b requiere de

operaciones (n es el numero de elementos de A), son

menos cálculos que el método anterior, por lo la solución es mejor que la anterior.

  • (c) Como algunas de las entradas de A no son exactamente representables en un sistema de punto

flotante binario, la matriz ya no es singular cuando entra en una computadora. Entonces resolviendo el sistema por eliminación Gaussiana no necesariamente fallara. Comparar la solución calculada con la descripción de la solución en el inciso (a). ¿Cuánto vale el número de condición=cond(A)?

Sabemos que si Ax’-b=0 entonces x’ es solución exacta del sistema. Entonces entre más próximo este Ax’-b de ser 0, más próxima será la solución x’ de ser exacta.

>> (A*x)-b

>> (A*x2)-b

ans =

ans =

1.0e-16 *

0.1000

-0.1388

0.2000

-0.5551

0.3000

0

Entonces con los resultados vemos que la solución x2= A\b tiene errores más pequeños, por lo tanto es una mejor solución. Efectivamente es una conclusión correcta pues, el método x2= A\b

requiere de

y el método x=inv(A)*b requiere

, intuitivamente un algoritmo que requiera

menos operaciones tendrá un error igual o menor que otro algoritmo de operaciones equivalentes. Por definición si A es singular, entonces cond(A) = . Pero en el programa Matlab, A no es

singular, entonces el programa puede calcular cond(A) = ||A||˙||A1||

>> cond(A)

ans =

2.1119e+16

Como el número de condición es muy grande, la matriz A esta mal condicionada y cerca de ser singular. Sabemos que tiene errores pues no existe la inv(A), pero el resultado nos dice que la matriz está cerca de ser singular, y en realidad si es singular.