问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

旋转矩阵和复数之间的关系构建以及可视化

创作时间:
作者:
@小白创作中心

旋转矩阵和复数之间的关系构建以及可视化

引用
CSDN
1.
https://m.blog.csdn.net/weixin_44114030/article/details/145258349

本文将探讨旋转矩阵和复数之间的关系,并通过MATLAB代码进行可视化展示。通过几何变换和复数代数的推导,我们将揭示旋转矩阵与复数乘法之间的联系。

旋转矩阵和复数之间的关系

旋转矩阵和复数之间的关系可以通过几何变换和复数代数来推导。以下是详细的推导过程,将旋转矩阵与复数乘法联系起来。

一、复数的几何表示

复数z = a + b i z = a + biz=a+bi可以表示为平面上的一个点,实部a aa是横轴坐标,虚部b bb是纵轴坐标。
对于单位复数z = e i θ = cos ⁡ θ + i sin ⁡ θ z = e^{i\theta} = \cos\theta + i\sin\thetaz=eiθ=cosθ+isinθ,它表示复平面上一点以原点为中心逆时针旋转角度θ \thetaθ。

二、复数旋转的作用

设复平面上的任意点z 1 = x + y i z_1 = x + yiz1 =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\thetax′=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θ ]
就是旋转矩阵。

四、复数和旋转矩阵的关系

  1. 复数对应的矩阵
    任意复数z = a + b i z = a + biz=a+bi可以表示为矩阵:
    M ( z ) = [ a − b b a ] M(z) = \begin{bmatrix} a & -b \ b & a \end{bmatrix}M(z)=[ab −ba ]
  2. 单位复数对应的旋转矩阵
    对于单位复数z = e i θ = cos ⁡ θ + i sin ⁡ θ z = e^{i\theta} = \cos\theta + i\sin\thetaz=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θ ]
  3. 复数乘法对应矩阵乘法
    设z 1 = a 1 + b 1 i z_1 = a_1 + b_1iz1 =a1 +b1 i和z 2 = a 2 + b 2 i z_2 = a_2 + b_2iz2 =a2 +b2 i,复数乘法:
    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 =(a1 a2 −b1 b2 )+i(a1 b2 +b1 a2 )
    对应的矩阵乘法:
    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 )=[a1 b1 −b1 a1 ]⋅[a2 b2 −b2 a2 ]
    结果与复数乘法一致。

五、从复数到旋转矩阵的推导总结

  1. 复数z = e i θ z = e^{i\theta}z=eiθ描述平面旋转角度θ \thetaθ。
  2. 复数乘法对点进行旋转,可以通过代数展开得到点的新坐标。
  3. 这种旋转可以用矩阵形式表示,最终得到旋转矩阵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');
  • 代码实现的功能简单说明
  1. 复数旋转
  • 通过复数乘法z 2 = z 1 ⋅ e i θ z_2 = z_1 \cdot e^{i\theta}z2 =z1 ⋅eiθ实现旋转。
  • 将复数点从初始位置旋转一个角度。
  1. 旋转矩阵计算
  • 用二维旋转矩阵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θ ]
  1. 一致性验证
  • 比较复数旋转和矩阵变换的结果,确保数学上等价。
  1. 可视化旋转
  • 在复平面上绘制旋转前后复数点的变化,用蓝线和红线表示旋转前后的向量。
  1. 保存图像
  • 将结果图保存为图片,直观展示旋转过程。
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号