jacobi迭代-python

相关公式:(老师的ppt)

代码:

import numpy as np
#输入A、b
n=3
A=np.array([[10,-2,-1],
            [-2,10,-1],
            [-1,-2,5]],dtype=np.float_)
b=np.array([[3,15,10]]).T

#初始化xk+1,xk
xk=np.zeros((3,1),dtype=np.float_)
xk1=np.zeros((3,1),dtype=np.float_)



#生成D、L、U
D=np.diag(np.diag(A))
#  D=[[10,0,0],
#     [0,10,0],
#     [0,0,5]]

L=-np.tril(A,k=-1)
#  L=[[0,0,0],
#     [-1,0,0],
#     [-1,-1,0]]

U=-np.triu(A,k=1)
#  U=[[0,-1,-2],
#     [0,0,-2],
#     [0,0,0]]


#计算M、g
M=np.linalg.inv(D)@(L+U)
g=np.linalg.inv(D)@b

#迭代
for i in range(10):
    print(xk)
    xk1=M@xk+g
    xk=xk1

#结果
print(xk.T)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值