1. LDL分解

1.1. 原理

直接参考链接:https://blog.csdn.net/wanghu213/article/details/83963950这里不赘述。

1.2. python仿真

import numpy as np
np.set_printoptions(linewidth=np.inf)M = 4A = np.array([[3,      2+4j,   4+2.5j,   2+7.2j], [2-4j,   4   ,   7+0.4j,   22+4j], [4-2.5j, 7-0.4j, 5,        42+0.22j],[2-7.2j, 22-4j,  42-0.22j, 6]])U = np.zeros_like(A)
L = np.zeros_like(A)
D = np.zeros_like(A)for i in range(M):L[i, i] = 1for j in range(M):tmp_sum = 0for m in range(j):tmp_sum += U[j, m] * L[j, m].conj()D[j, j] = A[j, j] - tmp_sumtmp_sum = 0for i in range(j+1, M):tmp_sum = 0for m in range(j):tmp_sum += U[i, m] * L[j, m].conj()U[i, j] = A[i, j] - tmp_sumL[i, j] = U[i, j] / D[j, j]print('L:')
print(L)print('D:')
print(D)print('origin:')
print(A)print('LDLH:')
print(np.dot(L, np.dot(D, L.conj().T)))

结果:

L:
[[ 1.        +0.j          0.        +0.j          0.        +0.j          0.        +0.j        ][ 0.66666667-1.33333333j  1.        +0.j          0.        +0.j          0.        +0.j        ][ 1.33333333-0.83333333j -0.375     +1.525j       1.        +0.j          0.        +0.j        ][ 0.66666667-2.4j        -4.15      +0.7j         9.69471154+5.74278846j  1.        +0.j        ]]
D:
[[   3.        +0.00000000e+00j    0.        +0.00000000e+00j    0.        +0.00000000e+00j    0.        +0.00000000e+00j][   0.        +0.00000000e+00j   -2.66666667+0.00000000e+00j    0.        +0.00000000e+00j    0.        +0.00000000e+00j][   0.        +0.00000000e+00j    0.        +0.00000000e+00j    4.16      +0.00000000e+00j    0.        +0.00000000e+00j][   0.        +0.00000000e+00j    0.        +0.00000000e+00j    0.        +0.00000000e+00j -493.56293269+2.84217094e-14j]]
origin:
[[ 3.+0.j    2.+4.j    4.+2.5j   2.+7.2j ][ 2.-4.j    4.+0.j    7.+0.4j  22.+4.j  ][ 4.-2.5j   7.-0.4j   5.+0.j   42.+0.22j][ 2.-7.2j  22.-4.j   42.-0.22j  6.+0.j  ]]
LDLH:
[[ 3.+0.00000000e+00j  2.+4.00000000e+00j  4.+2.50000000e+00j  2.+7.20000000e+00j][ 2.-4.00000000e+00j  4.+0.00000000e+00j  7.+4.00000000e-01j 22.+4.00000000e+00j][ 4.-2.50000000e+00j  7.-4.00000000e-01j  5.+0.00000000e+00j 42.+2.20000000e-01j][ 2.-7.20000000e+00j 22.-4.00000000e+00j 42.-2.20000000e-01j  6.+2.84217094e-14j]]**加粗样式**

可以看出,原始矩阵和LDLHLDL^HLDLH结果一致。

2. Hermitian矩阵求逆

主要思路是已知:
LDLHA−1=ILDL^HA^{-1}=ILDLHA−1=I; 设DLHA−1=BDL^HA^{-1}=BDLHA−1=B,则LB=ILB=ILB=I; 求解BBB, 其

2.1. 仿真代码

import numpy as np
import time
np.set_printoptions(linewidth=np.inf)
np.set_printoptions(precision=8,suppress=True)M = 4def LDLH(A):U = np.zeros_like(A)L = np.zeros_like(A)D = np.zeros_like(A)for i in range(M):L[i, i] = 1for j in range(M):tmp_sum = 0for m in range(j):tmp_sum += U[j, m] * L[j, m].conj()D[j, j] = A[j, j] - tmp_sumtmp_sum = 0for i in range(j+1, M):tmp_sum = 0for m in range(j):tmp_sum += U[i, m] * L[j, m].conj()U[i, j] = A[i, j] - tmp_sumL[i, j] = U[i, j] / D[j, j]return L, Ddef LDL_solve(L, D):M = L.shape[0]B = np.zeros_like(L)V = np.zeros_like(L)for i in range(M):B[i, i] = 1for j in range(M-1):B[j+1, j] = -L[j+1, j]for i in range(j+2, M):tmp_sum = 0for m in range(j+1, i):tmp_sum += B[m, j] * L[i, m]B[i, j] = -L[i, j] - tmp_sumfor j in range(M):V[M-1, j] = B[M-1, j] / D[M-1, M-1]V[j, M-1] = V[M-1, j].conj()for i in range(M-2, j-1, -1):tmp_sum = 0for m in range(i+1, M):tmp_sum += L[m, i].conj() * V[m, j]V[i, j] = B[i, j] / D[i, i] - tmp_sumV[j, i] = V[i, j].conj()return VA = np.array([[3,      2+4j,   4+2.5j,   2+7.2j], [2-4j,   4   ,   7+0.4j,   22+4j], [4-2.5j, 7-0.4j, 5,        42+0.22j],[2-7.2j, 22-4j,  42-0.22j, 6]])V_np = np.linalg.inv(A)L, D = LDLH(A)
V = LDL_solve(L, D)print('v_np - v:')
print(V_np - V)print('AV')
print(np.dot(A, V))

结果:

v_np - v:
[[-0.+0.j  0.-0.j -0.+0.j  0.+0.j][ 0.+0.j -0.-0.j -0.-0.j -0.+0.j][ 0.-0.j -0.+0.j -0.+0.j  0.-0.j][-0.-0.j -0.-0.j  0.+0.j -0.+0.j]]
AV
[[ 1.-0.j  0.+0.j -0.+0.j  0.-0.j][-0.-0.j  1.-0.j  0.+0.j -0.-0.j][-0.-0.j  0.-0.j  1.+0.j -0.-0.j][-0.+0.j  0.-0.j  0.+0.j  1.-0.j]]

可以看出求逆的结果和numpy的计算结果一致,且原始矩阵和求逆矩阵乘积为单位阵。

LDL分解并对厄而米特矩阵求逆(python仿真)相关推荐

  1. cholesky分解_Time Series Analysis-1.2 LDL分解

    最近考完两个小quiz,停了一段时间,今晚抽空继续来分享这门课的笔记. 1.前言 上一期分享了Cholesky分解的基本步骤和伪代码,本期介绍另外一种矩阵分解的方法--LDL分解. 首先补充一下,近几 ...

  2. LDL分解的Fortran代码

    LDL分解的Fortran代码 LDL分解是将一个对称矩阵分解为一个对角矩阵 DDD 和两个互为转置的三角阵 LLL, LTL^TLT 的乘积 A=LDLTA=LDL^TA=LDLT. 具体做法可以看 ...

  3. matlab hermitian,Hermitian 不定矩阵的分块 LDL 分解

    ldl Hermitian 不定矩阵的分块 LDL 分解 语法 L = ldl(A) [L,D] = ldl(A) [L,D,P] = ldl(A) [L,D,p] = ldl(A,'vector') ...

  4. 米云平台Python调用

    米云平台Python调用 https://gitee.com/angel-dream/miyun-platform-python-call 介绍 米云平台Python调用,登录,获取余额,获取手机号, ...

  5. 稀疏表示与非负矩阵分解(3)矩阵分解基本原理和chirp信号处理的简单python实现

    稀疏表示与非负矩阵分解(3)矩阵分解基本原理和chirp信号处理的简单python实现 1. 非负矩阵分解 2. 时频图制作 2.1 时频图的指标与方法比较 2.1.1 时间分辨率和频域分辨率 2.1 ...

  6. 矩阵分解---LDL分解

    若一个矩阵A是正定的,那么该矩阵也可以唯一分解为 其中L是对角元素都为1的下三角矩阵,D是对角元素都为正数的对角矩阵.还是以三维矩阵进行简单说明 接着按照Cholesky分解推导的思路可以得到下面两个 ...

  7. 整数分解为若干项之和python_SVD奇异值分解及Python实例

    1. 普通方阵的矩阵分解(EVD) 我们知道如果一个矩阵 A 是方阵,即行列维度相同(mxm),一般来说可以对 A 进行特征分解: 其中,U 的列向量是 A 的特征向量,Λ 是对角矩阵,Λ 对角元素是 ...

  8. 光学仿真案例(4) 基于纳米微粒激发平面波的米氏散射FDTD仿真模拟

    目录 案例内容 案例获取 案例内容 本案例展示了一个基于纳米粒子激发平面波的米氏散射仿真模型(mie scattering),计算其散射和吸收截面.局域场增强和远场散射分布,同时将截面和远场结果与解析 ...

  9. 图像分解python_将图像等分为两部分python open

    您可以将图像的顶部和底部水平裁剪到中间. 打开图像.import cv2 import numpy as np image = cv2.imread('images/blobs1.png') cv2. ...

最新文章

  1. Java_中快速获取系统时间
  2. CISSP的成长之路(二):为什么要获得CISSP认证
  3. Zookeeper 典型应用场景介绍
  4. 从代理机制到Spring AOP,这篇给你安排的明明白白的
  5. php 没有libmysql.dll,PHP5.3以上版本没有libmysql.dll,以及由此带来的困扰
  6. java.util.Properties类的介绍-配置文件的读写【-Z-】
  7. Error--解决使用Application Loader提交ipa包审核时的报错:ERROR ITMS-90168: The binary you uploaded was invalid....
  8. (转)Page.ClientScript.RegisterStartupScript 与Page.ClientScript.RegisterClientScriptBlock 之间的区别...
  9. 全国计算机等级考试3月份报名时间,2021年3月全国计算机等级考试报名时间公布...
  10. MySQL中explain用法含义说明
  11. 麦乐积分:积分兑换系统对于积分运营的重要性
  12. 英伟达RTX 4070最新测评来了!光追效果更棒,但仅限于2k游戏
  13. 【HGNN】北邮循序渐进研究HGNN
  14. 计算机教师结构化方式面试,市计算机:17名学生通过全国教师资格证结构化面试...
  15. 【Linux】E: Release file for http://ports.ubuntu.comxxxxxxxxxxxxxInRelease is not valid关于时间设置的问题解决
  16. 腾讯王巨宏:“未来+教育”,以智能技术助力人才培养新模式
  17. python制作会动的表情包_利用python图片生成,需10几行代码,生成的动态表情包(小黄鸭)...
  18. 百度短网址开始收费了,这是真的吗?
  19. python中使用gdal,osgeo
  20. MTK平台设置不同的预览Size

热门文章

  1. 火山引擎云服务器ECS规格大全及性能测试
  2. 明泰风行N907震撼演绎
  3. 从一到二:利用mnist训练集生成的caffemodel对mnist测试集与自己手写的数字进行测试...
  4. 收藏艺术家作品的最好时机,不容错过!
  5. 用php向新年问候,新年问候短信真诚简短
  6. Mac 电脑能联网但打不开网页
  7. 从这11个维度下手,你可以快速发现宝宝的天赋
  8. 教你快速输入六角符号
  9. netsh的工具的利用
  10. 深入c语言pdf,深入体验C语言项目开发1.pdf