import numpy as np
import math
from numpy import matrix as mat
from sympy import *
"""
这回是真的一点没看懂,搜了个函数就用了
文件要求的线代水平超过我现有水平了,手算完全不会
"""
'n这回是真的一点没看懂,搜了个函数就用了nn文件要求的线代水平超过我现有水平了,手算完全不会nn'
X0 = (2.5+0.5+2.2+1.9+3.1+2.3+2.0+1.0+1.5+1.1) / 10
Y0 = 1 / 10 * (2.4+0.7+2.9+2.2+3.0+2.7+1.6+1.1+1.6+0.9)
#唯一正确解格式
X = np.array([2.5,
0.5,
2.2,
1.9,
3.1,
2.3,
2.0,
1.0,
1.5,
1.1
])
Y = np.array([2.4,
0.7,
2.9,
2.2,
3.0,
2.7,
1.6,
1.1,
1.6,
0.9
])
X -= X0
Y -= Y0
print(X)
print(Y)
[ 0.69 -1.31 0.39 0.09 1.29 0.49 0.19 -0.81 -0.31 -0.71]
[ 0.49 -1.21 0.99 0.29 1.09 0.79 -0.31 -0.81 -0.31 -1.01]
cov = np.cov(X,Y)
cov
array([[0.61655556, 0.61544444],
[0.61544444, 0.71655556]])
Eigenvalues,Featurevector=np.linalg.eig(cov)
print("特征值:",Eigenvalues)
print("特征向量:",Featurevector)
特征值: [0.0490834 1.28402771]
特征向量: [[-0.73517866 -0.6778734 ]
[ 0.6778734 -0.73517866]]
max_Eigenvalues = np.amax(Eigenvalues)
max_Featurevector = -np.amax(Featurevector)
min_Featurevector = np.amin(Featurevector)
print(min_Featurevector)
print(max_Featurevector)
-0.735178655544408
-0.6778733985280117
XY = np.array([X,Y])
XY
array([[ 0.69, -1.31, 0.39, 0.09, 1.29, 0.49, 0.19, -0.81, -0.31,
-0.71],
[ 0.49, -1.21, 0.99, 0.29, 1.09, 0.79, -0.31, -0.81, -0.31,
-1.01]])
fm = np.array([min_Featurevector,max_Featurevector])
FinalData = np.dot(XY.T,fm.T)
FinalData
array([-0.83943124, 1.78331085, -0.95781434, -0.26274936, -1.68726247,
-0.89575753, 0.07045681, 1.14457216, 0.43804614, 1.20662898])
XY
array([[ 0.69, -1.31, 0.39, 0.09, 1.29, 0.49, 0.19, -0.81, -0.31,
-0.71],
[ 0.49, -1.21, 0.99, 0.29, 1.09, 0.79, -0.31, -0.81, -0.31,
-1.01]])
fm
array([-0.73517866, -0.6778734 ])
fm
array([-0.73517866, 1.28402771])