J,GS,SOR算法解线性方程组的收敛性判别的Python实现

迭代过程是收敛的的充要条件是矩阵B收敛于0,矩阵B收敛于0的充要条件是矩阵B的谱半径小于1
于是在前述J,GS,和SOR算法中的main()函数中可以加入一项判别式,从而判断线性方程组迭代法是否能够算出解
例如在前述SOR算法的main()中,代码如下

import numpy as np
def judgement(A,B):
    if np.linalg.det(A)==0:
        print '矩阵奇异'
        return 0
    else:
        A1 = np.linalg.eigvals(B)
        if max(abs(A1))<1:
            return 1
        else:
            print '矩阵不收敛'
            return 0
 
def main(A,b,x0,e,w):
    U=get_U(A)
    D=get_D(A)
    L=get_L(A,D,U)
    B=get_B(D,L,U,w)
    f=get_f(D,L,w,b)
    _n_= judgement(A,B)
    if _n_=1
	    n=0
	    ans=[]
	    ans.append(x1)
	    ans.append(x0)
	    ans1=[]
	    ans1.append(x1[0])
	    ans1.append(x0[0])
	    while abs(ans[-1][0][1]-ans[-2][0][1])>e:
	        n=n+1
	        x0=roll(B,f,x0)
	        ans.append(x0)
	    for i in ans:
	        ans1.append(i[0])
	    return ans1,len(ans1)-2
	else:
		return 'error'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值