Está en la página 1de 5

54 CHAPTER 3.

ANÁLISIS DE ERRORES

3.3 Normas vectoriales y matriciales


Para medir errores en vectores y matrices es mas conveniente definir normas vectoriales y matri-
ciales. Para matrices A ∈ Rn×n y vectores x ∈ Rn usaremos la notación

   
a11 a12 . . . a1n x1
 a21 a22 . . . a2n   x2 
   
A= . .. .. ..  y x =  . .
 .. . . .   .. 
an1 an2 . . . ann xn

Ya sabemos que si X es un espacio vectorial sobre el campo de escalares R, entonces una función
k · k : X → R se llama norma y (X, k · k) espacio normado, si

(i) kxk ≥ 0 para todo x ∈ X,

(ii) kxk = 0 si y solo si x = 0,

(iii) kλxk = |λ| · kxk para todo x ∈ X y λ ∈ R,

(iv) kx + yk ≤ kxk + kyk para todo x, y ∈ X.

Las normas mas importantes sobre X = Rn son


1/2 P 1/2
n
• la norma euclidiana inducida por el producto interno kxk2 := x⊤ x = j=1 |xj |
2 ,
P 1/p
n p
• las normas p kxkp := j=1 |xj | para 1 ≤ p < ∞,

• la norma maxima kxk∞ := max1≤j≤n |xj |.

Las normas sobre Rn inducen normas sobre el espacio de las matrices.

Lema 20. Sean k · kRn y k · kRm normas vectoriales sobre Rn y Rm y define para A ∈ Rm×n

kAxkRm
kAk := sup .
x∈Rn \{0} kxkRn

Entonces,

(i) k · k : Rm×n → R es una norma, y la llamamos norma matricial inducida.

(ii) Todos los supremos son maximos.

(iii) Para matrices A ∈ Rm×p y B ∈ Rp×n tenemos kA · Bk ≤ kAk · kBk.

(iv) Si In ∈ Rn×n es la identidad, entonces kIn k = 1.


3.3. NORMAS VECTORIALES Y MATRICIALES 55

La definición de la norma matricial implica

kAxkRm ≤ kAkkxkRn para todo x ∈ Rn . (3.4)

En general es dificil calcular explicitamente una norma matricial, pero en algunos casos especiales
se puede obtener otra representación mas útil para calculos numéricos. Recordamos que el radio
espectral de una matriz A se define como

ρ(A) := max {|λ| | λ ∈ C es un autovalor de A} .

Lema 21. Si usamos sobre Rn y Rm las mismas normas vectoriales y anotamos las normas
matriciales inducidas con la misma notación, entonces
m
X n
X
kAk1 = max |aj,k |, y kAk∞ = max |aj,k |, y kAk2 = ρ(A⊤ A)1/2 .
k=1,...,n j=1,...,m
j=1 k=1

Ejemplo 22. Calcule las normas kAk1 , kAk∞ , y kAk2 para


 
1 1
A= .
2 1

Lema 23. Sea A ∈ Rn×n . Entonces

(i) ρ(A) ≤ kAk para cada norma matricial inducida,

(ii) para cada ε > 0 existe una norma matrical inducida k · kε tal que

ρ(A) ≤ kAkε ≤ ρ(A) + ε.

En Python existe el tipo lista, que puede ser usado para representar vectores y matrices. Sin
embargo, el tipo lista es muy general y flexible. Para representar y calcular con vectores y
matrices de números reales de una forma mas eficiente, usaremos el tipo array. Este no es
un tipo estandar, es parte del paquete adicional NumPy. Destacamos que este tipo permite la
vectorización de operaciones, es decir, podemos hacer operaciones matemáticas directamente con
los arrays en vez de usar bucles. Es importante notar que los índices de vectores y matrices en
Python empiezan con 0.
56 CHAPTER 3. ANÁLISIS DE ERRORES

In [60]: import numpy as np


from math import sin

# vector con 3 elementos como array de numpy


x = np.zeros(3)

# dimension de x
dimx = x.shape[0]
print('la dimension de x es',dimx)

# acceso a elementos
# cuidado: arrays en numpy empiezan con índice 0!
x[0]=17
print('x =',x)

y = np.zeros(3)
y[1]=-4.5

w = np.zeros(3)
z = np.zeros(3)

# operaciones con bucle


for i in range(3):
w[i]=x[i]+y[i]

# operación vectorizada
z = x+y

print('w =',w)
print('z =',z)

np.sin(x)

# operacion con bucle


for i in range(3):
w[i]=sin(x[i])

# operación vectorizada
z = np.sin(x)
3.3. NORMAS VECTORIALES Y MATRICIALES 57

print('w =',w)
print('z =',z)

# producto interno
a = np.dot(x,w)
print(a)

la dimension de x es 3
x = [17. 0. 0.]
w = [17. -4.5 0. ]
z = [17. -4.5 0. ]
w = [-0.96139749 0. 0. ]
z = [-0.96139749 0. 0. ]
-16.343757361952466

In [2]: # matriz 2x4 como array de numpy


A = np.zeros([2,4])

# dimensiones de A
dim = A.shape
print(dim)
n = dim[0]
m = dim[1]
print('A es de tamaño ',n,' por ',m)

# acceso a elementos
A[0,1] = 5
A[1,3] = 17
print(A)

(2, 4)
A es de tamaño 2 por 4
[[ 0. 5. 0. 0.]
[ 0. 0. 0. 17.]]

Para calcular normas de vectores y matrices, podemos usar el comando linalg.norm de NumPy:
58 CHAPTER 3. ANÁLISIS DE ERRORES

In [59]: from math import sqrt

x = [1, 2, -4]

print('norma euclidiana de x =',np.linalg.norm(x))


print('norma euclidiana de x =',sqrt(np.dot(x,x)))
print('norma infinita de x =',np.linalg.norm(x,np.inf))
print('norma 1 de x =',np.linalg.norm(x,1))

A = [[1,2,3],[4,5,6]]
print('norma 2 de A =',np.linalg.norm(A))
print('norma infinita de A =',np.linalg.norm(A,np.inf))
print('norma 1 de A =',np.linalg.norm(A,1))

norma euclidiana de x = 4.58257569495584


norma euclidiana de x = 4.58257569495584
norma infinita de x = 4.0
norma 1 de x = 7.0
norma 2 de A = 9.539392014169456
norma infinita de A = 15.0
norma 1 de A = 9.0

También podría gustarte