-
Notifications
You must be signed in to change notification settings - Fork 0
/
QR_factorisation.py
59 lines (53 loc) · 1.32 KB
/
QR_factorisation.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
import numpy as np
''' linalg.norm'''
no_of_col = int(input("n: "))
no_of_rows = int(input("m: "))
A_ = np.array([[1, 4, 4, 5], [2, 5, 6, 6], [3, 6, 7, 8]])
# for i in range(no_of_rows):
# rowi = []
# for j in range(no_of_col):
# rowi.append(float(input("entry: ")))
# A_.append(rowi)
A = np.array(A_)
Q_1 = []
Q = []
'''[
[1, 4],
[2, 5],
[3, 6]
]
for j i
u = [3, 6]
if i am using column no2:
for k in range(2):
[3, 6] - numpy.dot(matrix[k], matrix[2])*matrix[k]//np.dot(matrix[2], matrix[2])
OR
listy = work_A[0]
Q.append(listy)
for i in range(1, no_of_col):
lum = work_A[i] - (numpy.dot(Q[i - 1], work_A[i])/np.dot(Q[i-1],Q[i - 1]))*Q[i - 1]
Q.append(listy - )
'''
work_A = A.transpose()
for num in A:
num = np.array(num)
listy = work_A[0]
Q.append(listy/np.linalg.norm(listy))
for i in range(no_of_col):
t = np.array(work_A[i][:])
#
# for j in range(i):
# work_A[j] = np.array(work_A[j])
# listy = listy - np.dot(t, )
for i in range(1, no_of_col):
#lum = work_A[i] - (np.dot(Q[i - 1], work_A[i])/np.dot(Q[i-1],Q[i - 1]))*Q[i - 1]
lum = work_A[i][:]
j = i
while j > 0:
j = j - 1
lum = lum - np.dot(Q[j], work_A[i])/np.dot(Q[j], Q[j])*Q[j]
Q.append(lum/np.linalg.norm(lum))
Qs = np.array(Q)
Qt = Qs.transpose()
for num in Qt:
print(num)