高斯赛德尔迭代法(线性方程组求解)
问题描述
为求解一个线性方程组,使用高斯赛德尔迭代法,采用欧几里得距离判定是否收敛。精度delta为1E-9,最大迭代次数为20。
输入形式
在屏幕上依次输入方阵阶数n,系数矩阵A,常数矩阵B和起始点P。
输出形式
输出实际迭代次数,然后每一行输出一个根。
样例输入
3
4 -1 1
4 -8 1
-2 1 5
7
-21
15
1
2
2
样例输出
10
[[2.]
[4.]
[3.]]
样例说明
输入:第1行为方阵阶数3,第2行至4行为系数矩阵A,第5行至7行为常数矩阵B,第8行至10行为起始点。输出:实际迭代次数为10,然后每行依次输出方程解:x1, x2, x3。
代码
# 高斯赛德尔迭代法
import numpy as np
from numpy.linalg import normdef Input():n = int(input())A = np.zeros([n, n], dtype=np.double())for r in range(n):A[r:] = np.array(input().split(), dtype=np.double)B = np.zeros([n, 1], dtype=np.double)for r in range(n):B[r:] = np.array(input(), dtype=np.double)P = np.zeros([n, 1], dtype=np.double)for r in range(n):P[r:] = np.array(input(), dtype=np.double)return A, B, Pdef Gseid(A, B, P, delta, max_iteration):n = len(B)X = np.zeros((n, 1), dtype=np.double)epslion = np.finfo(np.float32).epsfor i in range(max_iteration):for j in range(n):if j == 0:X[0] = (B[0] - (A[0, 1:n] @ P[1:n])) / A[0, 0]elif j == n - 1:X[n - 1] = (B[n - 1] - (A[n - 1, 0:n - 1] @ X[0:n - 1])) / A[n - 1, n - 1]else:X[j] = (B[j] - A[j, 0:j] @ X[0:j] - A[j, j + 1:n] @ P[j + 1:n]) / A[j, j]err = np.abs(norm(X - P))relerr = err / (norm(X) + epslion)P = X.copy()if err < delta or relerr < delta:return i, Xdef out(x):print(x)def main():A, B, P = Input()delta = 1e-9max_iteration = 20iteration, X = Gseid(A, B, P, delta, max_iteration)out(iteration)out(X)if __name__ == '__main__':main()
高斯赛德尔迭代法(线性方程组求解)相关推荐
- 22(线性方程组求解)高斯赛德尔迭代法
高斯赛德尔迭代法(线性方程组求解) [问题描述]为求解一个线性方程组,使用高斯赛德尔迭代法,采用欧几里得距离判定是否收敛.精度delta为1E-9,最大迭代次数为20. [输入形式]在屏幕上依次输入方 ...
- 【计算方法】雅克比迭代法-高斯赛德尔迭代法求解线性方程组(c语言实现)
计算方法–用雅克比迭代法和高斯赛德尔迭代法求解线性方程组 AX = b 雅克比迭代法的数学基础 x = Gx + b x = (A ^ -1) b A = L + D + U(L是一个下三角阵,他的对 ...
- 用Matlab求解一维非稳态周期性导热问题(有限单元法+隐式离散+高斯赛德尔迭代法)
本次求解不一定对,请先看最后说明 一.问题描述与分析 本次问题条件如下: 计算模拟如下一维常物性无内热源非稳态导热的温度场,以及内外壁面的热流密度,并进行温度场和热流的特点分析,相关参数如下. 室内温 ...
- 【计算方法】迭代法(线性方程组求解)
解线性方程组的方法有如下两类 直接法:高斯消去法,三角分解法等,这些方法可用于求解低阶稠密方程组 迭代法:雅可比迭代法,高斯-赛德尔迭代法等,用于求解高阶稀疏方程组 雅可比迭代法 高斯-赛德尔迭代法 ...
- 科学计算与数学建模-线性方程组求解的迭代法 思维导图
第六章 回归问题-线性方程组求解的迭代法
- C++使用雅可比迭代法(jacobi)和高斯赛德尔迭代法(G-S)解线性方程组
理论部分: 简言之 jacobi迭代法就是把线性方程组化为关于第i行xi的等式,然后利用等式循环计算xi Gauss-Seidel迭代法就是在jacobi迭代的基础上,在计算第i+1行的xi+1时,带 ...
- 六、线性方程组求解--Jacobi和Gauss-Seidel迭代求解
六.线性方程组求解-Gauss消去.Jacobi和Gauss-Seidel迭代求解 1.消去法求解原理 求解Ax = b,首先对增广矩阵(A|b)进行初等行变换为如下三种矩阵对角阵.上三角阵.下三角阵 ...
- matlab中欠定方程组超定方程组_一篇文章入门大规模线性方程组求解
前面介绍过主要的线性方程组求解库,参考附录.求解大规模线性方程组是仿真软件求解器的底层技术,求解器时间基本都消耗在方程组求解上.线性方程组的解法比较成熟,方法也有很多,而且不同的方法对应不同类型方程组 ...
- 大型稀疏线性方程组求解技术——工业仿真的底层核心
背 景 在工业仿真领域,对各种现实世界的问题进行数值模拟时,如流体动力学分析.电磁场仿真.结构力学应力应变分析等,其控制方程通常是偏微分方程组,在经过不同方法的隐式离散之后最终都可转化为大型稀疏线性 ...
最新文章
- 室内设计木地板材质合集包 Arroway – Design Craft Vol.4
- Linux查看实时带宽流量情况
- Anaconda+用conda创建python虚拟环境
- #include 和 #include 的区别
- web开发语言大盘点
- WCF PeerChannel介绍
- 如何添加地图控件到Windows Phone 8的页面中
- Shell编程入门(第二版)(中)
- 前端学习(2810):完成安卓打包
- 怎样改变计算机桌面的特效主题,电脑桌面主题、图片怎么设置的技巧大全
- CAN笔记(6) CAN协议(一)
- springboot转发http请求_Spring Boot2 系列教程(八)Spring Boot 中配置 Https
- nginx学习笔记003---Nginx代理配置_注意,在Windows中路径要用/
- jsp中动态include与静态include的区别
- 你以为你懂MySQL索引?阿里的面试官:你还太嫩!
- 关闭tensorflow运行时的警告信息1
- RecyclerView混合布局
- BZOJ1027[JSOI2007] 合金
- ZigBee模块(DL-20)在调试过程中的问题及解决方案
- Navicat批量修改数据库某一属性初始值
热门文章
- plsql和navicate有什么区别_plsql和navicat连接远程oracle(易错点)
- 大数据技术原理与应用—第1讲 大数据概述(林子雨老师)课后习题
- 第三方软件测试机构如何对软件进行安全性测试?
- Java数字签名校验
- 基于springboot房屋租赁管理系统 (源代码+数据库+需求分析文档) 006
- java计算机毕业设计无人驾驶汽车管理系统源码+数据库+系统+lw文档+mybatis+运行部署
- 基于R语言的Meta分析【全流程、不确定性分析】方法与Meta机器学习技术应用
- 04-Mybatis-增删改查
- 编程的50种基础算法代码,编程常用算法有哪些
- Java框架tk_TKmybatis的框架介绍和原理分析及Mybatis新特性