- import numpy as np
- import matplotlib.pylab as plt
- a = [[4,2,1],
- [16,4,1],
- [64,8,1],
- [100,10,1]]
- b = [10,50,75,20]
- for i in range(4):
- plt.plot(a[i][1],b[i],'ro')
-
- b2 = np.matrix(b).transpose()
- a2 = np.matrix(a)
- c = np.linalg.lstsq(a2,b2,rcond=None)
- print("a = ",c[0][0])
- print("b = ",c[0][1])
- print("c = ",c[0][2])
- plt.show()
- #----------------------------
- p = [[8,0], [1,1], [8,3], [7,4], [2,2], [6,3], [3,4], [0,7], [7,7] ,[1,4]]
- n = []
- for i in range(len(p)):
- plt.plot(p[i][0],p[i][1],'ro')
-
- plt.show()
- c=0
- d=0
- for i in range(len(a)):
- c += np.linalg.norm(p[i][0])
- d += np.linalg.norm(p[i][1])
- c = c/10
- d = d/10
- #print(a)
- for i in range(len(p)):
- p[i][0] -= c
- p[i][1] -= d
-
- A = np.matrix(p)
- x = A*A.transpose()
- U,D,V = np.linalg.svd(A)
- print("Q is")
- print(V)
- n = p * V
- for i in range(len(p)):
- plt.plot(n[i,0],n[i,1],'ro')
- plt.show()
複製代碼 |