Untitled
unknown
python
3 years ago
1.5 kB
4
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...