旋转矩阵和复数之间的关系
旋转矩阵和复数之间的关系可以通过几何变换和复数代数来推导。以下是详细的推导过程,将旋转矩阵与复数乘法联系起来。
一、复数的几何表示
复数 z = a + b i z = a + bi z=a+bi 可以表示为平面上的一个点,实部 a a a 是横轴坐标,虚部 b b b 是纵轴坐标。
对于单位复数 z = e i θ = cos θ + i sin θ z = e^{i\theta} = \cos\theta + i\sin\theta z=eiθ=cosθ+isinθ,它表示复平面上一点以原点为中心逆时针旋转角度 θ \theta θ。
二、复数旋转的作用
设复平面上的任意点
z
1
=
x
+
y
i
z_1 = x + yi
z1=x+yi,将其与单位复数
e
i
θ
e^{i\theta}
eiθ 相乘:
z
2
=
e
i
θ
⋅
z
1
=
(
cos
θ
+
i
sin
θ
)
(
x
+
y
i
)
z_2 = e^{i\theta} \cdot z_1 = (\cos\theta + i\sin\theta)(x + yi)
z2=eiθ⋅z1=(cosθ+isinθ)(x+yi)
展开复数乘法:
z
2
=
(
x
cos
θ
−
y
sin
θ
)
+
i
(
x
sin
θ
+
y
cos
θ
)
z_2 = (x\cos\theta - y\sin\theta) + i(x\sin\theta + y\cos\theta)
z2=(xcosθ−ysinθ)+i(xsinθ+ycosθ)
从几何上看,这个操作将点
(
x
,
y
)
(x, y)
(x,y) 逆时针旋转了角度
θ
\theta
θ,得到新的点
(
x
′
,
y
′
)
(x', y')
(x′,y′):
x
′
=
x
cos
θ
−
y
sin
θ
,
y
′
=
x
sin
θ
+
y
cos
θ
x' = x\cos\theta - y\sin\theta, \quad y' = x\sin\theta + y\cos\theta
x′=xcosθ−ysinθ,y′=xsinθ+ycosθ
三、旋转矩阵的构造
将上述变换写成矩阵形式:
[
x
′
y
′
]
=
[
cos
θ
−
sin
θ
sin
θ
cos
θ
]
[
x
y
]
\begin{bmatrix} x' \\ y' \end{bmatrix}= \begin{bmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{bmatrix} \begin{bmatrix} x \\ y \end{bmatrix}
[x′y′]=[cosθsinθ−sinθcosθ][xy]
这里的矩阵:
R
(
θ
)
=
[
cos
θ
−
sin
θ
sin
θ
cos
θ
]
R(\theta) = \begin{bmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{bmatrix}
R(θ)=[cosθsinθ−sinθcosθ]
就是旋转矩阵。
四、复数和旋转矩阵的关系
-
复数对应的矩阵:
任意复数 z = a + b i z = a + bi z=a+bi 可以表示为矩阵:
M ( z ) = [ a − b b a ] M(z) = \begin{bmatrix} a & -b \\ b & a \end{bmatrix} M(z)=[ab−ba] -
单位复数对应的旋转矩阵:
对于单位复数 z = e i θ = cos θ + i sin θ z = e^{i\theta} = \cos\theta + i\sin\theta z=eiθ=cosθ+isinθ,对应的矩阵正是旋转矩阵:
M ( e i θ ) = [ cos θ − sin θ sin θ cos θ ] M(e^{i\theta}) = \begin{bmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{bmatrix} M(eiθ)=[cosθsinθ−sinθcosθ] -
复数乘法对应矩阵乘法:
设 z 1 = a 1 + b 1 i z_1 = a_1 + b_1i z1=a1+b1i 和 z 2 = a 2 + b 2 i z_2 = a_2 + b_2i z2=a2+b2i,复数乘法:
z 1 ⋅ z 2 = ( a 1 a 2 − b 1 b 2 ) + i ( a 1 b 2 + b 1 a 2 ) z_1 \cdot z_2 = (a_1a_2 - b_1b_2) + i(a_1b_2 + b_1a_2) z1⋅z2=(a1a2−b1b2)+i(a1b2+b1a2)
对应的矩阵乘法:
M ( z 1 ) ⋅ M ( z 2 ) = [ a 1 − b 1 b 1 a 1 ] ⋅ [ a 2 − b 2 b 2 a 2 ] M(z_1) \cdot M(z_2) = \begin{bmatrix} a_1 & -b_1 \\ b_1 & a_1 \end{bmatrix} \cdot \begin{bmatrix} a_2 & -b_2 \\ b_2 & a_2 \end{bmatrix} M(z1)⋅M(z2)=[a1b1−b1a1]⋅[a2b2−b2a2]
结果与复数乘法一致。
五、从复数到旋转矩阵的推导总结
- 复数 z = e i θ z = e^{i\theta} z=eiθ 描述平面旋转角度 θ \theta θ。
- 复数乘法对点进行旋转,可以通过代数展开得到点的新坐标。
- 这种旋转可以用矩阵形式表示,最终得到旋转矩阵
R
(
θ
)
R(\theta)
R(θ):
R ( θ ) = [ cos θ − sin θ sin θ cos θ ] R(\theta) = \begin{bmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{bmatrix} R(θ)=[cosθsinθ−sinθcosθ]
六、MATLAB可视化代码
% MATLAB代码:复数旋转的可视化
clc;
clear;
close all;
% 原点
origin = [0, 0];
% 定义初始复数点 z1
z1 = 1 + 1i; % 实部为1,虚部为1
x1 = real(z1);
y1 = imag(z1);
% 定义旋转角度(单位:弧度)
theta = pi/6; % 旋转角度30度
rotation_matrix = [cos(theta), -sin(theta); sin(theta), cos(theta)]; % 旋转矩阵
% 使用复数进行旋转
z2 = z1 * exp(1i * theta); % 旋转后的复数
x2 = real(z2);
y2 = imag(z2);
% 使用旋转矩阵进行旋转
rotated_point = rotation_matrix * [x1; y1];
x2_matrix = rotated_point(1);
y2_matrix = rotated_point(2);
% 检查复数计算和矩阵计算是否一致
assert(abs(x2 - x2_matrix) < 1e-10 && abs(y2 - y2_matrix) < 1e-10, ...
'复数计算和矩阵计算结果不一致');
% 绘图
figure;
hold on;
grid on;
axis equal;
xlabel('Real Axis');
ylabel('Imaginary Axis');
title('Visualization of Complex Rotation and Matrix Transformation');
% 绘制原点和复数点
plot([origin(1), x1], [origin(2), y1], 'b-', 'LineWidth', 1.5); % 初始复数点的连线
plot([origin(1), x2], [origin(2), y2], 'r--', 'LineWidth', 1.5); % 旋转后的复数点的连线
plot(real([z1, z2]), imag([z1, z2]), 'ko', 'MarkerSize', 8, 'MarkerFaceColor', 'k'); % 点z1和z2
% 标注
text(x1, y1, ' z_1', 'FontSize', 12, 'Color', 'b');
text(x2, y2, ' z_2', 'FontSize', 12, 'Color', 'r');
legend({'Initial Complex Point', 'Rotated Complex Point'}, 'Location', 'Best');
% 绘制坐标轴
line([-1.5, 1.5], [0, 0], 'Color', 'k', 'LineWidth', 1); % 实轴
line([0, 0], [-1.5, 1.5], 'Color', 'k', 'LineWidth', 1); % 虚轴
% 保存图像
saveas(gcf, 'Complex_Rotation_Visualization.png');
- 代码实现的功能简单说明
-
复数旋转:
- 通过复数乘法 z 2 = z 1 ⋅ e i θ z_2 = z_1 \cdot e^{i\theta} z2=z1⋅eiθ 实现旋转。
- 将复数点从初始位置旋转一个角度。
-
旋转矩阵计算:
- 用二维旋转矩阵
R
(
θ
)
R(\theta)
R(θ) 对复数点的实部和虚部进行线性变换,计算旋转结果。
R ( θ ) = [ cos θ − sin θ sin θ cos θ ] R(\theta) = \begin{bmatrix} \cos\theta & -\sin\theta \\ \sin\theta & \cos\theta \end{bmatrix} R(θ)=[cosθsinθ−sinθcosθ]
- 用二维旋转矩阵
R
(
θ
)
R(\theta)
R(θ) 对复数点的实部和虚部进行线性变换,计算旋转结果。
-
一致性验证:
- 比较复数旋转和矩阵变换的结果,确保数学上等价。
-
可视化旋转:
- 在复平面上绘制旋转前后复数点的变化,用蓝线和红线表示旋转前后的向量。
-
保存图像:
- 将结果图保存为图片,直观展示旋转过程。