Untitled
unknown
python
2 years ago
1.5 kB
0
Indexable
# -*- coding: utf-8 -*- """ Created on Wed Oct 5 14:45:01 2022 @author: Jonatan """ from numpy import * import scipy as scipy import scipy.linalg import math import pylab n = 41 theta = 1.2 S = zeros((n,n)) R = zeros((n,n)) for i in range(0,n): S[i,i] = math.sin(theta)**i for i in range(0,n): for j in range(0,n): if i == j: R[i,j] = 1 elif j > i: R[i,j] = -math.cos(theta) Kahan = (S@R).T@(S@R) def rankLU(A, tol): n,m = shape(A) _, _, U = scipy.linalg.lu(A) rank = 0 print(U) c = -1 for i in range(0,n): j = i while j < m and abs(U[i,j]) < tol: j += 1 if j != m and c != j: rank += 1 c = j return rank def rankQR(A,tol): n,m = shape(A) Q, R = scipy.linalg.qr(A) rank = 0 for i in range(0,n): if abs(R[i,i]) > tol: rank += 1 return rank def rankSVD(A,tol): n,m = shape(A) _, S, _ = scipy.linalg.svd(A) rank = 0 print(S) for i in range(0,n): if abs(S[i]) > tol: rank += 1 return rank def sumRow(r, tol): m = shape(r) for k in r: if k > tol: return True return False A = array([[5, 0, 0, 0],[0, 0, 0, 0], [0, 0, -2, 0], [0, 0, 0, -3]]) A = random.rand(90,90) A[3,:] = A[6,:] print(rankLU(A, 10**(-9))) print(linalg.matrix_rank(A))
Editor is loading...