平方根法求解正定矩阵的线性方程组的Python实现

本文介绍了平方根法求解正定矩阵线性方程组的原理,包括正定矩阵的LU分解和Cholesky分解,并通过Python实现了该方法,避免过多依赖numpy库,最终解决了一个示例问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

平方根法求解正定矩阵的线性方程组的Python实现
定理:对线性方程组Ax=b,若A唯正定矩阵,则有唯一分解A=LU,且U的对角线元素大于0,而U可以进一步分解为一个对角矩阵D与一个上三角矩阵的乘积,设为U=DM,进而A=LDM,又由于A是一个正定矩阵,因此A’=(LDM)’=M’DL’=A=LDM,于是有M=L’,即A=LDL’,令D=D^0.5 * D0.5,再令G=L*D0.5,则有A=G*G’,这一分解成为cholesky分解。Ax=b转化为Gy=b,G’x=y,这一方法成为平方根法。

给出一个例子,见图片
上半部分是一般公式,下半部分是例子
下面是平方根法的Python实现。尽量少的使用numpy。

# -*- coding: utf-8 -*-
"""
Created on Mon Feb 11 09:31:48 2019

@author: 鹰皇
"""

#平方根法
import numpy as np
A=[[4,2,4],[2,10,-1],[4,-1,6]]
b=[[4,17,0]]
print len(A)
k=0
def get_under(A):#获取A的下三角矩阵
    Under=list(np.zeros((len(A),len(A))))
    for i in A:
        x=A.index(i)
        n=0
        for t in i:
            if n<=x:
                Under[x][n]=A[x][n]
            n=n+1
    d=[]
    for i in Under:
        d.append((list(i)))
    return d

def get_base(m):#给一个矩阵为基,在这个基上修改得到我们的答案
    base=list(np.zeros((len(A),len(A))))
    retur
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值