1.正交矩阵的性质
a,逆等于转置,行列式值为±1。
b,各行以及各列是单位向量且两两正交,标准正交基经正交变换后仍为标准正交基。
c,变换前后内积不变即向量的模长与夹角不变。
2.二阶正交矩阵的几何意义
是绕坐标原点的旋转,或是通过原点直线的反射。
根据它的行列式是否为正常或非正常来确定。
t1.png
3.旋转矩阵是正交矩阵
通过三角函数推导出旋转矩阵后,发现旋转矩阵是正交矩阵中的一种
Good_旋转矩阵的推导.png
4.实现函数旋转变换的python代码
import numpy as np
import matplotlib.pyplot as plt
#T = np.array([[3,1],[1,-1]])
T = np.array([[-1,0],[0,1]])
x = np.arange(0, 10,0.2)[:,np.newaxis]
print (x)
y = 4*(x-1)
# horizontal stack 合并x和y成为一组数据,制作合集D
D = np.hstack((x,y))
mylist = []
for i in range(len(D)):
xy_new = T.dot(D[i]) # 对每一组x和y组成的向量,和矩阵T进行内积运算
mylist.append(xy_new.tolist()) # 每个numpy.array转List
#print (mylist)
# 所有list转为numpy
xy_newAll = np.array(mylist)
#print (xy_newAll)
x_new = xy_newAll[:,0] # 取出新的x
#print(x_new)
y_new = xy_newAll[:,1] # 取出新的x
#print(y_new)
#创建figure窗口
plt.figure()
#设置坐标轴的文字标签
# plt.xlabel('X axis...')
# plt.ylabel('Y axis...')
# 设置x轴的取值范围为:-1到2
plt.xlim(-10, 10)
# 设置y轴的取值范围为:-1到3
plt.ylim(-10, 10)
# 设置x轴刻度
# new_ticks = np.linspace(-10, 20, 5)
# plt.xticks(new_ticks)
# get current axis 获得坐标轴对象
ax = plt.gca()
# 将右边 上边的两条边颜色设置为空 其实就相当于抹掉这两条边
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
# 指定下边的边作为 x 轴 指定左边的边为 y 轴
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
#指定 data 设置的bottom(也就是指定的x轴)绑定到y轴的0这个点上
ax.spines['bottom'].set_position(('data', 0))
ax.spines['left'].set_position(('data', 0))
plt.plot(x, y, color='red',linestyle='--')
plt.plot(x_new, y_new)
plt.show()
111.png
网友评论