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

6.11 极分解

文章目录

  • 计算方法
  • 代码实现

计算方法

  一个复数可以写成极坐标形式:z=reiθz=re^{i\theta}z=reiθ.这种分解,左边代表长度,右边代表角度。由此为灵感来源,前人对矩阵也有类似的分解。就是猜想一个线性变换对矩阵的作用,是不是可以分解为拉长和旋转两部分呢?或者说,一个矩阵是不是可以分解为长度和角度呢?前人经过研究,发现是可以这样分解的。一个矩阵A可以分解为一个酉矩阵和正定埃尔米特阵的乘积,也就是:
A=U∣T∣A=U|T| A=UT
  需要注意的是右边虽然是一个绝对值符号,但是不是一个数字,而是一个矩阵。 它的定义是∣T∣=THT|T|=\sqrt{T^HT}T=THT,虽然我们没学过矩阵函数,但是也能知道给矩阵AAA开根号就是求一个矩阵BBB,它乘自己得到AAA。这个埃尔米特阵用来代表长度。而前面那个酉矩阵用来代表角度。这样就把线性变换的两大作用进行了分解。
  极分解的计算方法严重依赖于奇异值分解。假设已经求出来了奇异值分解,那么矩阵的极分解就很容易得到了:
A=(UVH)(VΣVH)A=(UV^H)(V\Sigma V^H) A=(UVH)(VΣVH)
  比如以下就是一个极分解:
(0100002000030000)=(0100001000011000)(0000010000200003)\begin{pmatrix}0 & 1 & 0 & 0\\ 0 & 0 & 2 & 0\\ 0 & 0 & 0 & 3\\ 0 & 0 & 0 & 0\\ \end{pmatrix}=\begin{pmatrix}0 & 1 & 0 & 0\\ 0 & 0 & 1 & 0\\ 0 & 0 & 0 & 1\\ 1 & 0 & 0 & 0\\ \end{pmatrix} \begin{pmatrix}0 & 0 & 0 & 0\\ 0 & 1 & 0 & 0\\ 0 & 0 & 2 & 0\\ 0 & 0 & 0 & 3\\ \end{pmatrix} 0000100002000030=00011000010000100000010000200003

代码实现

  因为严重依赖奇异值分解,所以极分解的代码相当简单:

    # 极分解def polar_decomposition(self):u, sigma, v = self.svd()v_h = v.hermitian_transpose()return u * v_h, v * sigma * v_h
http://www.lryc.cn/news/4798.html

相关文章:

  • Spring、SpringMVC、Shiro、Maven
  • element-plus 使用笔记
  • 《蓝桥杯每日一题》 前缀和·Acwing 3956. 截断数组
  • 促进关键软件高层次人才培养:平凯星辰与华东师范大学签订联合博士培养合作协议
  • Java程序员的日常——经验贴
  • 电商API社区,商品数据,关键词搜索等
  • LEADTOOLS 22.0.6 UPDATE-Crack
  • 什么是OJ? 东方博宜题库部分题解
  • 企业工程项目管理系统源码的各模块及其功能点清单
  • 【电商开发手册】订单-下单
  • 数据结构 - 优先级队列(堆)
  • PDF内容提取器:ByteScout PDF Extractor SDK Crack
  • 字母板上的路径[提取公共代码,提高复用率]
  • c# winform错误大全
  • AI_News周刊:第一期
  • 搭建mysql主从复制
  • 内存溢出、内存泄露的概述及常见情形
  • Linux 中断实验
  • 【c++】指针
  • 别具一格的婚礼,VR全景+婚礼的优势展现在哪里?
  • 【GD32F427开发板试用】5. SPI驱动TFTLCD屏幕
  • 测试2年还拿实习生的薪资打发我,你后悔去吧····
  • 面向对象程序(C++)设计基础
  • conda安装nodejs版本过低解决方法
  • 前端工程师leetcode算法面试必备-二分搜索算法(下)索算法(下)
  • 使用Autowired为什么会被IDEA警告,应该怎么修改最佳
  • 面向对象(中)
  • 【云原生】promehtheus整合grafana实现可视化监控实战
  • Linux 内核定时器实验
  • 喜欢大屏电视?那就选择酷开系统,实现智能生活享受