python迭代法求解方程组_10-07:Python线性方程组J、GS和超松弛迭代

为什么今天会这么冷。今天上了数学的两节理论课,第一节课先是推导迭代法的通式,然后从迭代误差推导出收敛条件。第二节课介绍雅克比迭代和高斯-赛德尔迭代。下面是我的雅克比迭代、高斯赛德尔迭代和超松弛迭代的代码,主要运行numpy的矩阵运算。def Jocobi(A,b,initial,delta):'''输入:A是系数矩阵,N阶方阵b是N*1列向量initial是解的初始值,N*1大小输出:迭代后的解析...
摘要由CSDN通过智能技术生成

为什么今天会这么冷。

今天上了数学的两节理论课,第一节课先是推导迭代法的通式,然后从迭代误差推导出收敛条件。第二节课介绍雅克比迭代和高斯-赛德尔迭代。

下面是我的雅克比迭代、高斯赛德尔迭代和超松弛迭代的代码,主要运行numpy的矩阵运算。

def Jocobi(A,b,initial,delta):

'''

输入:A是系数矩阵,N阶方阵

b是N*1列向量

initial是解的初始值,N*1大小

输出:迭代后的解析解

'''

D = np.diag(np.diag(A)) # 获得D矩阵

L = -np.tril(A,-1) # 获得L矩阵

U = -np.triu(A,1) # 获得U矩阵

d = np.linalg.inv(D) # 对D矩阵求逆

BJ = np.dot(d,L+U) # 迭代矩阵BJ

lamda,_ = np.linalg.eig(BJ)

if np.max(lamda)<1: # 谱半径小于1

f = np.dot(d,b)

X = np.dot(BJ,initial)+f # 初次的解

times = 0

while np.linalg.norm(X - initial) > delta:

initial = X

X = np.dot(BJ,initial) + f

times = times +1

return X,times

else:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值