当前位置: 首页 > news >正文

数学基础 -- 线性代数之正交矩阵

正交矩阵

正交矩阵是线性代数中的一个重要概念,具有许多优良的性质,在数值计算、线性变换、信号处理等领域有着广泛的应用。

1. 正交矩阵的定义

一个 n × n n \times n n×n 的方阵 Q Q Q 如果满足以下条件:

Q T Q = Q Q T = I Q^T Q = Q Q^T = I QTQ=QQT=I

其中, Q T Q^T QT 是矩阵 Q Q Q 的转置矩阵, I I I n × n n \times n n×n 的单位矩阵,则称矩阵 Q Q Q 是正交矩阵。

换句话说,正交矩阵的行向量(或列向量)是标准正交基,即:

  • 各行向量(或列向量)的长度为1(标准化)。
  • 不同行向量(或列向量)之间是两两正交的,即它们的内积为零。

2. 正交矩阵的性质

2.1 保持内积和长度

正交矩阵在进行线性变换时,不改变向量的内积和长度。即向量 v \mathbf{v} v 通过正交矩阵 Q Q Q 变换后,变换后的向量 Q v Q\mathbf{v} Qv 的长度与原向量相同。

2.2 逆矩阵等于转置矩阵

正交矩阵的逆矩阵与它的转置矩阵相同,即:

Q − 1 = Q T Q^{-1} = Q^T Q1=QT

2.3 保持正交性

正交矩阵乘以另一个正交矩阵,结果仍然是正交矩阵。如果 Q 1 Q_1 Q1 Q 2 Q_2 Q2 都是正交矩阵,那么 Q 1 Q 2 Q_1 Q_2 Q1Q2 也是正交矩阵。

2.4 行列式的绝对值为1

正交矩阵的行列式为 ± 1 \pm 1 ±1

∣ det ( Q ) ∣ = 1 |\text{det}(Q)| = 1 det(Q)=1

3. 正交矩阵的应用

3.1 旋转与反射变换

在几何中,正交矩阵常用于表示旋转和反射变换。例如,在二维空间中,一个旋转矩阵可以表示为:

Q = ( cos ⁡ θ − sin ⁡ θ sin ⁡ θ cos ⁡ θ ) Q = \begin{pmatrix} \cos \theta & -\sin \theta \\ \sin \theta & \cos \theta \end{pmatrix} Q=(cosθsinθsinθcosθ)

3.2 QR分解

正交矩阵在QR分解中扮演重要角色。QR分解将矩阵 A A A 分解为一个正交矩阵 Q Q Q 和一个上三角矩阵 R R R 的乘积,即 A = Q R A = QR A=QR

3.3 信号处理与数据压缩

在信号处理和数据压缩中,正交矩阵用于构造正交基,比如傅里叶变换矩阵和小波变换矩阵。


正交矩阵的例子

例子1:二维旋转矩阵

考虑一个二维旋转矩阵,它表示在平面上旋转一个向量的变换。假设旋转角度为 θ \theta θ,则旋转矩阵可以表示为:

Q = ( cos ⁡ θ − sin ⁡ θ sin ⁡ θ cos ⁡ θ ) Q = \begin{pmatrix} \cos \theta & -\sin \theta \\ \sin \theta & \cos \theta \end{pmatrix} Q=(cosθsinθsinθcosθ)

正交性验证

我们验证这个矩阵是否为正交矩阵。正交矩阵的定义要求 Q T Q = I Q^T Q = I QTQ=I,我们计算 Q T Q^T QT Q T Q Q^T Q QTQ

首先,求 Q Q Q 的转置矩阵 Q T Q^T QT

Q T = ( cos ⁡ θ sin ⁡ θ − sin ⁡ θ cos ⁡ θ ) Q^T = \begin{pmatrix} \cos \theta & \sin \theta \\ -\sin \theta & \cos \theta \end{pmatrix} QT=(cosθsinθsinθcosθ)

接下来,计算 Q T Q Q^T Q QTQ

Q T Q = ( cos ⁡ 2 θ + sin ⁡ 2 θ 0 0 cos ⁡ 2 θ + sin ⁡ 2 θ ) = ( 1 0 0 1 ) = I Q^T Q = \begin{pmatrix} \cos^2 \theta + \sin^2 \theta & 0 \\ 0 & \cos^2 \theta + \sin^2 \theta \end{pmatrix} = \begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix} = I QTQ=(cos2θ+sin2θ00cos2θ+sin2θ)=(1001)=I

因此, Q Q Q 是一个正交矩阵。

性质

  • 保持向量长度:向量经过矩阵 Q Q Q 的旋转变换后,长度不变。
  • 逆矩阵为转置矩阵:由于 Q T Q = I Q^T Q = I QTQ=I,我们有 Q − 1 = Q T Q^{-1} = Q^T Q1=QT

例子2:三维反射矩阵

考虑一个三维反射矩阵,它表示相对于某一平面的反射。假设我们要相对于 x x x- y y y 平面进行反射,则反射矩阵可以表示为:

Q = ( 1 0 0 0 1 0 0 0 − 1 ) Q = \begin{pmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & -1 \end{pmatrix} Q= 100010001

正交性验证

同样地,我们验证这个矩阵是否为正交矩阵。计算 Q T Q^T QT Q T Q Q^T Q QTQ

转置矩阵 Q T Q^T QT 为:

Q T = ( 1 0 0 0 1 0 0 0 − 1 ) Q^T = \begin{pmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & -1 \end{pmatrix} QT= 100010001

计算 Q T Q Q^T Q QTQ

Q T Q = ( 1 0 0 0 1 0 0 0 1 ) = I Q^T Q = \begin{pmatrix} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{pmatrix} = I QTQ= 100010001 =I

因此, Q Q Q 是一个正交矩阵。

性质

  • 保持向量长度:向量经过矩阵 Q Q Q 的反射变换后,长度不变。
  • 逆矩阵为转置矩阵 Q − 1 = Q T Q^{-1} = Q^T Q1=QT

QR分解的例子

例子:QR分解

我们选择一个简单的 2 × 2 2 \times 2 2×2 矩阵 A A A 进行QR分解。假设矩阵 A A A 为:

A = ( 1 1 1 − 1 ) A = \begin{pmatrix} 1 & 1 \\ 1 & -1 \end{pmatrix} A=(1111)

步骤 1:构造矩阵 Q Q Q

通过 Gram-Schmidt 正交化过程构造正交矩阵 Q Q Q

  1. 取矩阵 A A A 的第一列 a 1 \mathbf{a}_1 a1 作为向量 u 1 \mathbf{u}_1 u1

    u 1 = ( 1 1 ) \mathbf{u}_1 = \begin{pmatrix} 1 \\ 1 \end{pmatrix} u1=(11)

    归一化 u 1 \mathbf{u}_1 u1 得到 q 1 \mathbf{q}_1 q1

    q 1 = u 1 ∥ u 1 ∥ = 1 2 ( 1 1 ) = ( 1 2 1 2 ) \mathbf{q}_1 = \frac{\mathbf{u}_1}{\|\mathbf{u}_1\|} = \frac{1}{\sqrt{2}} \begin{pmatrix} 1 \\ 1 \end{pmatrix} = \begin{pmatrix} \frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} \end{pmatrix} q1=u1u1=2 1(11)=(2 12 1)

  2. 计算矩阵 A A A 的第二列 a 2 \mathbf{a}_2 a2 q 1 \mathbf{q}_1 q1 上的投影,并减去这部分,得到 u 2 \mathbf{u}_2 u2

    u 2 = a 2 − ( q 1 T a 2 ) q 1 = ( 1 − 1 ) \mathbf{u}_2 = \mathbf{a}_2 - (\mathbf{q}_1^T \mathbf{a}_2) \mathbf{q}_1 = \begin{pmatrix} 1 \\ -1 \end{pmatrix} u2=a2(q1Ta2)q1=(11)

    归一化 u 2 \mathbf{u}_2 u2 得到 q 2 \mathbf{q}_2 q2

    q 2 = u 2 ∥ u 2 ∥ = 1 2 ( 1 − 1 ) = ( 1 2 − 1 2 ) \mathbf{q}_2 = \frac{\mathbf{u}_2}{\|\mathbf{u}_2\|} = \frac{1}{\sqrt{2}} \begin{pmatrix} 1 \\ -1 \end{pmatrix} = \begin{pmatrix} \frac{1}{\sqrt{2}} \\ -\frac{1}{\sqrt{2}} \end{pmatrix} q2=u2u2=2 1(11)=(2 12 1)

最终得到正交矩阵 Q Q Q 为:

Q = ( 1 2 1 2 1 2 − 1 2 ) Q = \begin{pmatrix} \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}} \end{pmatrix} Q=(2 12 12 12 1)

步骤 2:计算矩阵 R R R

矩阵 R R R 是通过计算 Q T A Q^T A QTA 得到的:

R = Q T A = ( 2 0 0 2 ) R = Q^T A = \begin{pmatrix} \sqrt{2} & 0 \\ 0 & \sqrt{2} \end{pmatrix} R=QTA=(2 002 )

最终结果

通过QR分解,我们将矩阵 A A A 分解为正交矩阵 Q Q Q 和上三角矩阵 R R R 的乘积:

A = Q R = ( 1 2 1 2 1 2 − 1 2 ) ( 2 0 0 2 ) = ( 1 1 1 − 1 ) A = QR = \begin{pmatrix} \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{2}} & -\frac{1}{\sqrt{2}} \end{pmatrix} \begin{pmatrix} \sqrt{2} & 0 \\ 0 & \sqrt{2} \end{pmatrix} = \begin{pmatrix} 1 & 1 \\ 1 & -1 \end{pmatrix} A=QR=(2 12 12 12 1)(2 002 )=(1111)

验证分解结果正确,QR分解成功。

相关文章:

数学基础 -- 线性代数之正交矩阵

正交矩阵 正交矩阵是线性代数中的一个重要概念,具有许多优良的性质,在数值计算、线性变换、信号处理等领域有着广泛的应用。 1. 正交矩阵的定义 一个 n n n \times n nn 的方阵 Q Q Q 如果满足以下条件: Q T Q Q Q T I Q^T Q Q Q^T …...

PostgreSQL 17即将发布,新功能Top 3

按照计划,PostgreSQL 17 即将在 2024 年 9 月 26 日发布,目前已经发布了第一个 RC 版本,新版本的功能增强可以参考 Release Notes。 本文给大家分享其中 3 个重大的新增功能。 MERGE 语句增强 MERGE 语句是 PostgreSQL 15 增加的一个新功能…...

心觉:别再做单线程的打工人!换个思路突破

Hi,我是心觉,与你一起玩转潜意识、脑波音乐和吸引力法则,轻松搞定人生挑战,实现心中梦想! 挑战日更写作161/1000(完整记录在下面) 公门洞开纳百川 众心逐梦越千山 号召引领潜力绽 心觉潜意识无间 想让财富翻个2倍…...

深度学习-用神经网络NN实现足球大小球数据分析软件

文章目录 前言一、 数据收集1.1特征数据收集代码实例 二、数据预处理清洗数据特征工程: 三、特征提取四、模型构建五、模型训练与评估总结 前言 预测足球比赛走地大小球(即比赛过程中进球总数是否超过某个预设值)的深度学习模型是一个复杂但有…...

linux 9系统分区扩容

1.可以看到我的是9.2的系统,系统分区:/dev/mapper/rl-root 83G 8.0G 75G 10% / 2.接下来,我们新增一块新的硬盘,而不是直接对这个硬盘的基础上再扩容。 关机,加30G硬盘,再开机 fdisk -l fdisk /dev/…...

Solidity初体验

一、概念知识 什么是智能合约? 智能合约是仅在满足特定条件时才在区块链上部署和执行的功能,无需任何第三方参与。 由于智能合约本质上是不可变的和分布式的,因此它们在编写和部署后无法修改或更新。此外,分布式的意义在于任何…...

大模型笔记01--基于ollama和open-webui快速部署chatgpt

大模型笔记01--基于ollama和open-webui快速部署chatgpt 介绍部署&测试安装ollama运行open-webui测试 注意事项说明 介绍 近年来AI大模型得到快速发展,各种大模型如雨后春笋一样涌出,逐步融入各行各业。与之相关的各类开源大模型系统工具也得到了快速…...

html前段小知识点

1. 什么是HTML? 超文本标记语言是一种 用于创建网页的标准标记语言 HTML 文档包含了HTML 标签及文本内容 也叫文档1.什么是css? CSS (层叠样式表),是一种用来为结构化文档添加样式的计算机语言,CSS 文件扩展名为 .css。 可以设…...

AD7606工作原理以及FPGA控制验证(串行和并行模式)

文章目录 一、AD7606介绍二、AD7606采集原理2.1 AD7606功能框图2.2 AD7606管脚说明 三、AD7606并行模式时序分析以及实现3.1 并行模式时序图3.2 并行模式时序要求3.3 代码编写3.4 仿真观察 四、AD7606串行模式时序分析以及实现4.1 串行模式时序图4.2 串行模式时序要求4.3 代码编…...

如何查看Pod的Container资源占用情况

云原生学习路线导航页(持续更新中) 方法一:直接查看pod的资源占用 kubectl top pods ${pod-name} -n ${ns} 方法二:通过运行的进程,查看pod的某个容器资源占用 1.找到pod所在node容器号:kubectl descri…...

WordPress上可以内容替换的插件

插件下载地址:WordPress内容替换插件 – 果果开发 类型 替换的类型:文章、自定义文章类型、分类、标签、媒体库、页面、评论、数据库表,不同的类型可以替换不同的字段。 替换字段 替换的字段,哪些字段内容需要替换。除了数据库…...

C++ | Leetcode C++题解之第355题设计推特

题目&#xff1a; 题解&#xff1a; class Twitter {struct Node {// 哈希表存储关注人的 Idunordered_set<int> followee;// 用链表存储 tweetIdlist<int> tweet;};// getNewsFeed 检索的推文的上限以及 tweetId 的时间戳int recentMax, time;// tweetId 对应发送…...

构建并训练卷积神经网络(CNN)对CIFAR-10数据集进行分类

深度学习实践&#xff1a;构建并训练卷积神经网络&#xff08;CNN&#xff09;对CIFAR-10数据集进行分类 引言 在计算机视觉领域中&#xff0c;CIFAR-10数据集是一个经典的基准数据集&#xff0c;广泛用于图像分类任务。本文将介绍如何使用PyTorch框架构建一个简单的卷积神经…...

flowable 根据xml 字符串生成流程图

//获取xml InputStream stream repositoryService.getProcessModel(processDefinitionId); String result IOUtils.toString(stream, StandardCharsets.UTF_8); // 创建 XMLInputFactory XMLInputFactory factory XMLInputFactory.newInstance(); // 从字符…...

AI建模——AI生成3D内容算法产品介绍与模型免费下载

说明&#xff1a; 记录AI文生3D模型、图生3D模型的相关产品&#xff1b;记录其性能、功能、收费与免费方法 0.AI建模产品 Rodin MeshAnything Meshy 生成效果比较&#xff1a; Rodin效果最好、Meshy其次 1.Rodin 官网&#xff1a;gHyperHuman 支持&#xff1a;文生模型、…...

在Go中迅速使用RabbitMQ

文章目录 1 认识1.1 MQ分类1.2 安装1.3 基本流程 2 [Work模型](https://www.rabbitmq.com/tutorials/tutorial-two-go#preparation)3 交换机3.1 fanout3.2 direct3.3 [topic](https://www.rabbitmq.com/tutorials/tutorial-five-go) 4 Golang创建交换机/队列/Publish/Consume/B…...

Windows JDK安装详细教程

一、关于JDK 1.1 简介 Java是一种广泛使用的计算机编程语言&#xff0c;拥有跨平台、面向对象、泛型编程的特性&#xff0c;广泛应用于企业级Web应用开发和移动应用开发。 JDK&#xff08;Java Development Kit&#xff09;是用于开发 Java 应用程序的工具包。它由以下几个主要…...

Ribbon负载均衡底层原理

springcloude服务实例与服务实例之间发送请求&#xff0c;首先根据服务名注册到nacos&#xff0c;然后发送请求&#xff0c;nacos可以根据服务名找到对应的服务实例。 SpringCloudRibbon的底层采用了一个拦截器&#xff0c;拦截了openfeign发出的请求&#xff0c;对地址做了修…...

【C语言可变参数函数的使用与原理分析】

文章目录 1 前言2 实例2.1实例程序2.2程序执行结果2.3 程序分析 3 补充4 总结 1 前言 在编程过程中&#xff0c;有时会遇到需要定义参数数量不固定的函数的情况。 C语言提供了一种灵活的解决方案&#xff1a;变参函数。这种函数能够根据实际调用时的需求&#xff0c;接受任意…...

【笔记】Java EE应用开发环境配置(JDK+Maven+Tomcat+MySQL+IDEA)

一、安装JDK17 1.下载JDK17 https://download.oracle.com/java/17/archive/jdk-17.0.7_windows-x64_bin.zip 2.配置环境变量 下载后&#xff0c;解压到本地&#xff08;目录中最好不要有中文或特殊字符&#xff09; 打开【控制面板】-【系统和安全】-【系统】-【高级系统…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

利用ngx_stream_return_module构建简易 TCP/UDP 响应网关

一、模块概述 ngx_stream_return_module 提供了一个极简的指令&#xff1a; return <value>;在收到客户端连接后&#xff0c;立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量&#xff08;如 $time_iso8601、$remote_addr 等&#xff09;&a…...

TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案

一、TRS收益互换的本质与业务逻辑 &#xff08;一&#xff09;概念解析 TRS&#xff08;Total Return Swap&#xff09;收益互换是一种金融衍生工具&#xff0c;指交易双方约定在未来一定期限内&#xff0c;基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

Python如何给视频添加音频和字幕

在Python中&#xff0c;给视频添加音频和字幕可以使用电影文件处理库MoviePy和字幕处理库Subtitles。下面将详细介绍如何使用这些库来实现视频的音频和字幕添加&#xff0c;包括必要的代码示例和详细解释。 环境准备 在开始之前&#xff0c;需要安装以下Python库&#xff1a;…...

【JavaWeb】Docker项目部署

引言 之前学习了Linux操作系统的常见命令&#xff0c;在Linux上安装软件&#xff0c;以及如何在Linux上部署一个单体项目&#xff0c;大多数同学都会有相同的感受&#xff0c;那就是麻烦。 核心体现在三点&#xff1a; 命令太多了&#xff0c;记不住 软件安装包名字复杂&…...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

Unity VR/MR开发-VR开发与传统3D开发的差异

视频讲解链接&#xff1a;【XR马斯维】VR/MR开发与传统3D开发的差异【UnityVR/MR开发教程--入门】_哔哩哔哩_bilibili...

【HarmonyOS 5】鸿蒙中Stage模型与FA模型详解

一、前言 在HarmonyOS 5的应用开发模型中&#xff0c;featureAbility是旧版FA模型&#xff08;Feature Ability&#xff09;的用法&#xff0c;Stage模型已采用全新的应用架构&#xff0c;推荐使用组件化的上下文获取方式&#xff0c;而非依赖featureAbility。 FA大概是API7之…...

用 Rust 重写 Linux 内核模块实战:迈向安全内核的新篇章

用 Rust 重写 Linux 内核模块实战&#xff1a;迈向安全内核的新篇章 ​​摘要&#xff1a;​​ 操作系统内核的安全性、稳定性至关重要。传统 Linux 内核模块开发长期依赖于 C 语言&#xff0c;受限于 C 语言本身的内存安全和并发安全问题&#xff0c;开发复杂模块极易引入难以…...