Matrices Parte 2 - Jupyter Notebook
Matrices Parte 2 - Jupyter Notebook
imagesize:200x200 perro
In [1]:
import PIL
print('Pillow Version:', PIL.__version__)
In [3]:
import numpy
print('numpy Version:', numpy.__version__)
In [4]:
print(image.format)
print(image.size)
print(image.mode)
JPEG
(200, 200)
RGB
In [5]:
image.show()
In [6]:
import numpy as np
img_data = np.asarray(image)
print(type(img_data))
print(img_data.shape)
<class 'numpy.ndarray'>
(200, 200, 3)
In [9]:
In [7]:
img_data[0:10,0:10,0]
Out[7]:
array([[255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[255, 255, 255, 255, 255, 255, 255, 255, 255, 255],
[254, 254, 254, 254, 254, 254, 254, 254, 254, 254],
[254, 254, 254, 254, 254, 254, 254, 254, 254, 254],
[254, 254, 254, 254, 254, 254, 254, 254, 254, 254],
[255, 255, 255, 255, 255, 255, 255, 255, 254, 254],
[255, 255, 255, 255, 255, 255, 255, 255, 254, 254]], dtype=u
int8)
In [18]:
red_im = Image.fromarray(img_data[:,:,0])
In [19]:
red_im.show()
In [20]:
In [21]:
matB
Out[21]:
array([[10, 2],
[ 3, 4]])
In [22]:
Out[22]:
array([[1, 2],
[3, 4]])
red_data = np.array(img_data)
red_data[:,:,0]=img_data[:,:,0]
red_data[:,:,1:3]=0
Image.fromarray(red_data).show()
In [ ]:
In [30]:
gr_im = Image.fromarray(img_data)
gr_im.show()
In [12]:
In [ ]:
In [18]:
gr_im = Image.fromarray(img_data).save('otro_perro.png')
In [ ]:
Ortogonalizacion de matrices
In [70]:
def gs(A):
(m,n) = A.shape
Q = np.zeros_like(A)
R = np.zeros((n,n))
for j in range(n):
print(f"Columna {j+1}")
v = A[:,j]
for i in range(j):
R[i,j] = np.dot(Q[:,i],A[:,j])
v = v - R[i,j]*Q[:,i]
R[j,j] = np.linalg.norm(v)
Q[:,j] = v/R[j,j]
#print(v/R[j,j],Q[:,j] )
return Q,R
In [71]:
A= np.array([[1,2,3],[3,4,5],[5,6,7]],dtype='f4')
In [72]:
Columna 1
Columna 2
Columna 3
float32
In [73]:
Q@R
Out[73]:
In [75]:
Q.T@Q
Out[75]:
In [76]:
Out[76]:
In [ ]:
In [34]:
A=np.array( [ [1,2,1],[2,2,-1],[1,1,2],[1,-2,1] ])
gs(A)
Columna 1
Columna 2
Columna 3
Out[34]:
array([[0, 0, 0],
[0, 0, 0],
[0, 0, 0],
[0, 0, 0]])
In [ ]:
In [ ]:
In [65]:
def qr(A):
m, n = A.shape
Q = np.zeros((m, n))
R = np.zeros((n, n))
for j in range(n):
v = A[:, j]
norm = np.linalg.norm(v)
Q[:, j] = v / norm
R[j, j] = norm
return Q, R
#A = np.random.rand(4,4) * 1000
A= np.array([[1,2,3],[3,4,5],[5,6,7]])
Q, R = qr(A)
In [66]:
np.linalg.norm(A-Q@R)
Out[66]:
0.0
Ejemplo
127.0.0.1:8888/notebooks/Documentos/2020-1/matrices parte 2.ipynb 13/20
28/1/2021 matrices parte 2 - Jupyter Notebook
Resolver
𝑥 + 2𝑦 + 𝑧 = 1
2𝑥 + 𝑦 − 𝑧 = 4
𝑥 + 𝑦 + 2𝑧 = 2
𝑥 − 2𝑦 + 𝑧 = 0
In [67]:
A=np.array( [ [1,2,1],[2,2,-1],[1,1,2],[1,-2,1] ])
In [68]:
b = np.array( [1,4,2,0])
In [69]:
Q, R = qr(A)
In [70]:
Out[70]:
In [71]:
Out[71]:
array([[2.64575131, 0. , 0.75592895],
[0. , 3.60555128, 0. ],
[0. , 0. , 2.53546276]])
In [73]:
Q.T@Q
Out[73]:
In [76]:
sol=np.linalg.solve(R,Q.T@b)
In [77]:
print(sol)
Factorizacion Cholesky
In [88]:
def chol(A):
m,n = A.shape
L = np.zeros_like(A)
L[0,0]=np.sqrt(A[0,0])
for k in range(n-1):
L[k+1,0] = A[k+1,0]/L[0,0]
for i in range(1,k-1):
L[k+1,i] = ( A[k+1,i] - np.sum( L[k+1,1:i-1]*L[i,1:i-1] ) )/L[i,i]
In [92]:
A = 2*np.eye(4)+np.diag([-1,-1,-1],-1)+np.diag([-1,-1,-1],1)
In [90]:
Out[90]:
In [91]:
chol(A)
Out[91]:
array([[ 1.41421356, 0. , 0. , 0. ],
[-0.70710678, 0. , 0. , 0. ],
[ 0. , 0. , 0. , 0. ],
[ 0. , 1.41421356, 0. , 0. ]])
In [ ]: