线性代数 --- 矩阵的QR分解,A=QR

矩阵的QR分解,格拉姆施密特过程的矩阵表示

        首先先简单的回顾一下Gram-Schmidt正交化过程的核心思想,如何把一组线性无关的向量构造成一组标准正交向量,即,如何把矩阵A变成矩阵Q的过程。

        给定一组线性无关的向量a,b,c,我们希望构造出一组相互垂直的单位向量。

A=\begin{bmatrix} | & |& |\\ a& b&c \\ | & |& | \end{bmatrix}

第一步:

\mathbf{A=a}

得到一组正交向量中的第一个向量A,这就是说,我们令新的正交向量中的第一个向量A与向量a的方向相同,且大小相同。(这里我们用到了向量a)

第二步:

\mathbf{B=b-\frac{A^{T}b}{A^{T}A}A}

A的已经确定了,第二个向量B必须垂直于A。我们令b减去b在A上的投影Pb,得到我们想要的第二个向量B。a,b与A,B不同,但都在同一个平面内。注意:向量B一定不等于0,否则的话就与a,b线性无关这一事实相左。(这里我们用到了向量b)

第三步:

\mathbf{C=c-\frac{A^{T}c}{A^{T}A}A-\frac{B^{T}c}{B^{T}B}B}

现在我们基于c去找第三个向量C,C必须垂直于A,B所张成的平面,即A,B所在的子空间。我们令c减去c在这个平面上的投影Pc,得到向量C。

如果还有第四个,第五个向量d,e,f,g......的话,我们只需把在这个基础上重复上述过程就能找到新的正交向量D,E,F,G......。

第四步:

\mathbf{q_{1}=\frac{A}{\left \| A \right \|},q_{2}=\frac{B}{\left \| B \right \|},q_{3}=\frac{C}{\left \| C \right \|}}

当我们把前面的正交向量A,B,C全部找完以后,让他们分别除以各自的长度,最终得到一组标准正交向量q1,q2,q3。这最后一步被称为向量的归一化。


例:

        已知一组线性无关的向量a,b,c:

a=\begin{bmatrix} 1\\ -1\\ 0 \end{bmatrix} \; b=\begin{bmatrix} 2\\ 0\\ -2\end{bmatrix} \; b=\begin{bmatrix} 3\\ -3\\ 3 \end{bmatrix}

第一步:令A=a得到

A=\begin{bmatrix} 1\\ -1\\ 0 \end{bmatrix}

第二步:从b中减去b在A上的投影得到

B=b-\frac{A^{T}b}{A^{T}A}A=b-\frac{2}{2}A=\begin{bmatrix} 1\\ 1\\ -2 \end{bmatrix}

第三步:从c中减去c在AB平面上的投影得到

C=c-\frac{A^{T}c}{A^{T}A}A-\frac{B^{T}c}{B^{T}B}B=c-\frac{6}{2}A+\frac{6}{6}B=\begin{bmatrix} 1\\ 1\\ 1 \end{bmatrix}

第四步:归一化

\left \| A \right \|=\sqrt{A^{T}A}=\sqrt{2}, \; \left \| B \right \|=\sqrt{B^{T}B}=\sqrt{6}, \; \left \| C \right \|=\sqrt{C^{T}C}=\sqrt{3}

q_{1}=\frac{A}{\left \| A \right \|}=\frac{1}{\sqrt{2}}\begin{bmatrix} 1\\ -1\\ 0 \end{bmatrix}\; q_{2}=\frac{B}{\left \| B \right \|}=\frac{1}{\sqrt{6}}\begin{bmatrix} 1\\ 1\\ -2 \end{bmatrix}\; q_{3}=\frac{C}{\left \| C \right \|}=\frac{1}{\sqrt{3}}\begin{bmatrix} 1\\ 1\\ 1 \end{bmatrix}\;

一般而言,A,B,C往往会含有分数。而几乎所有的q1,q2,q3都会包含根号。

参考文献(鸣谢):

1,Introduction to Linear Algebra,Fifth Edition - Gilbert Strang

2,线性代数及其应用,候自新,南开大学出版社 1990

3,Linear Algebra and Its Applications, Second Edition, Gilbert Strang, 1980

4,Linear Algebra and Its Applications, Fourth Edition, Gilbert Strang, 2005

(配图与本文无关)

版权声明:文中的部分图片,文字或者其他素材,可能来自很多不同的网站和说明,在此没法一一列出,如有侵权,请告知,立即删除。欢迎大家转载,但是,如果有人引用或者COPY我的文章,必须在你的文章中注明你所使用的图片或者文字来自于我的文章,否则,侵权必究。 ----松下J27

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/100831.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Transformer预测 | Pytorch实现基于mmTransformer多模态运动预测(堆叠Transformer)

文章目录 文章概述程序设计参考资料文章概述 Transformer预测 | Pytorch实现基于mmTransformer多模态运动预测(堆叠Transformer) 程序设计 Initialize virtual environment: conda create -n mmTrans python=3.7# -*- coding: utf-8 -*- import argparse import os

推荐高效的电脑磁盘备份解决方案!

该怎样实现电脑磁盘备份? 接下来,我们将为你介绍两种磁盘备份方法。一种是利用操作系统自带的功能,另一种则是通过第三方工具实现。 方法一. Windows自带的备份还原功能 要在Windows 11/10/8/7中备份软件,你可以使…

一文带你了解 Linux 的 Cache 与 Buffer

目录 前言一、Cache二、Buffer三、Linux 系统中的 Cache 与 Buffer总结 前言 内存的作用是什么?简单的理解,内存的存在是为了解决高速传输设备与低速传输设备之间数据传输速度不和谐而设立的中间层(学过计算机网络的应该都知道,这…

【内网穿透】Docker部署Drupal并实现公网访问

目录 前言 1. Docker安装Drupal 2. 本地局域网访问 3 . Linux 安装cpolar 4. 配置Drupal公网访问地址 5. 公网远程访问Drupal 6. 固定Drupal 公网地址 前言 Dupal是一个强大的CMS,适用于各种不同的网站项目,从小型个人博客到大型企业级门户网站。…

【Python】实现excel文档中指定工作表数据的更新操作

在做数值计算时,个人比较习惯利用excel文档的公式做数值计算进行对比,检查异常,虽然计算量大后,excel计算会比较缓慢,但设计简单,易排错 但一般测试过程中使用到的数据都不是最终数值,会不停根据…

红队专题-从零开始VC++远程控制软件RAT-C/S-[1]远控介绍及界面编写

红队专题 招募六边形战士队员[1]---远控介绍及界面编写1.远程控制软件演示及教程简要说明主程序可执行程序 服务端生成器主机上线服务端程序 和 服务文件管理CMD进程服务自启动主程序主对话框操作菜单列表框配置信息 多线程操作非模式对话框 2.环境:3.界面编程新建项…

实现基于 GitLab 的数据库 CI/CD 最佳实践

数据库变更一直是整个应用发布过程中效率最低、流程最复杂、风险最高的环节,也是 DevOps 流程中最难以攻克的阵地。那我们是否能在具体的 CI/CD 流程中,像处理代码那样处理数据库变更呢? DORA 调研报告 DORA(DevOps Research &am…

前后端分离项目-基于springboot+vue的足球青训俱乐部管理后台系统的设计与实现(内含代码+文档+报告)

博主介绍:✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久,选择我们就是选择放心、选择安心毕业✌ 🍅由于篇幅限制,想要获取完整文章或者源码,或者代做&am…

Netty深入浅出Java网络编程学习笔记(一) Netty入门篇

目录 一、概述 1、什么是Netty 2、Netty的优势 二、入门案例 1、服务器端代码 2、客户端代码 3、运行流程 组件解释 三、组件 1、EventLoop 处理普通与定时任务 关闭 EventLoopGroup 处理IO任务 服务器代码 客户端代码 分工细化 划分Boss 和Work 增加自定义EventLoopGroup 切换…

银河麒麟安装arm架构mysql8

1. 准备工作 2. 查看麒麟系统版本 使用命令 Linux version 4.19.90-25.21.v2101.ky10.aarch64 (KYLINSOFTlocalhost.localdomain) (gcc version 7.3.0 (GCC)) #1 SMP Wed Sep 28 16:37:42 CST 2022可以看出这是麒麟 v10 ,aarch64 (ARM 架构的&#xff…

【d2l动手学深度学习】 Lesson 10 多层感知机 + 代码实现 试验结果对比

文章目录 1. 介绍2. 单层Softmax回归2.1 手写Softmax训练效果 2.2 调用pytorch内置的softmax回归层实现调用pytorch内置softmax实验结果总结 3. 一层感知机(MLP) Softmax实验结果 Reference写在最后 1. 介绍 在第十节课 多层感知机 的代码实现部分&…

机器学习1:k 近邻算法

k近邻算法(k-Nearest Neighbors, k-NN)是一种常用的分类和回归算法。它基于一个简单的假设:如果一个样本的k个最近邻居中大多数属于某一类别,那么该样本也很可能属于这个类别。 k近邻算法的步骤如下: 输入&#xff1a…

JVM第二讲:JVM 基础 - 字节码详解

JVM 基础 - 字节码详解 本文是JVM第二讲,JVM 基础-字节码详解。源代码通过编译器编译为字节码,再通过类加载子系统进行加载到JVM中运行。 文章目录 JVM 基础 - 字节码详解1、多语言编译为字节码在JVM运行2、Java字节码文件2.1、Class文件的结构属性2.2、…

Linux shell编程学习笔记10:expr命令 和 算术运算

Linux Shell 脚本编程和其他编程语言一样,支持算数、关系、布尔、字符串、文件测试等多种运算。上节我们研究了 Linux shell编程 中的 字符串运算,今天我们研究 Linux shell编程的算术运算 ,为了方便举例,我们同时对expr命令进行…

TomCat关键技术

一、Tomcat 是什么 Tomcat 是一个 HTTP 服务器。通过前面的学习,我们知道HTTP 协议就是 HTTP 客户端和 HTTP 服务器之间的交互数据的格式,同时也通过 ajax 和 Java Socket 分别构造了 HTTP 客户端。HTTP 服务器我们也同样可以通过 Java Socket 来实现. 而 Tomcat 就是基于 J…

hive add columns 后查询不到新字段数据的问题

分区表add columns 查询不到新增字段数据的问题; 5.1元数据管理 (1)基本架构 Hive的2个重要组件:hiveService2 和metastore,一个负责转成MR进行执行,一个负责元数据服务管理 beeline-->hiveService2/spar…

优思学院|八大浪费深度剖析

在工作流程中消除浪费是精益思想的目标。在深入探讨八大浪费之前,了解浪费的定义至关重要。浪费是指工作流程中的任何行动或步骤,这些行动或步骤不为客户增加价值。换句话说,浪费是客户不愿意为其付费的任何过程。 最初的七大浪费&#xff0…

竞赛选题 深度学习 python opencv 火焰检测识别

文章目录 0 前言1 基于YOLO的火焰检测与识别2 课题背景3 卷积神经网络3.1 卷积层3.2 池化层3.3 激活函数:3.4 全连接层3.5 使用tensorflow中keras模块实现卷积神经网络 4 YOLOV54.1 网络架构图4.2 输入端4.3 基准网络4.4 Neck网络4.5 Head输出层 5 数据集准备5.1 数…

KdMapper扩展实现之SOKNO S.R.L(speedfan.sys)

1.背景 KdMapper是一个利用intel的驱动漏洞可以无痕的加载未经签名的驱动,本文是利用其它漏洞(参考《【转载】利用签名驱动漏洞加载未签名驱动》)做相应的修改以实现类似功能。需要大家对KdMapper的代码有一定了解。 2.驱动信息 驱动名称spee…

Excel恢复科学技术法显示的数据

Excel中输入位数较大的数据时,软件会自动使用科学计数法显示。很多时候并不需要这样的计数格式,所以需要把它转变为普通的数字格式 操作方法 选中单元格/列/行》右键》设置单元格式 在打开的窗口中,切换到“数字”选项卡,点击“自…