问题描述

为求解一个线性方程组,使用高斯赛德尔迭代法,采用欧几里得距离判定是否收敛。精度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()

高斯赛德尔迭代法(线性方程组求解)相关推荐

  1. 22(线性方程组求解)高斯赛德尔迭代法

    高斯赛德尔迭代法(线性方程组求解) [问题描述]为求解一个线性方程组,使用高斯赛德尔迭代法,采用欧几里得距离判定是否收敛.精度delta为1E-9,最大迭代次数为20. [输入形式]在屏幕上依次输入方 ...

  2. 【计算方法】雅克比迭代法-高斯赛德尔迭代法求解线性方程组(c语言实现)

    计算方法–用雅克比迭代法和高斯赛德尔迭代法求解线性方程组 AX = b 雅克比迭代法的数学基础 x = Gx + b x = (A ^ -1) b A = L + D + U(L是一个下三角阵,他的对 ...

  3. 用Matlab求解一维非稳态周期性导热问题(有限单元法+隐式离散+高斯赛德尔迭代法)

    本次求解不一定对,请先看最后说明 一.问题描述与分析 本次问题条件如下: 计算模拟如下一维常物性无内热源非稳态导热的温度场,以及内外壁面的热流密度,并进行温度场和热流的特点分析,相关参数如下. 室内温 ...

  4. 【计算方法】迭代法(线性方程组求解)

    解线性方程组的方法有如下两类 直接法:高斯消去法,三角分解法等,这些方法可用于求解低阶稠密方程组 迭代法:雅可比迭代法,高斯-赛德尔迭代法等,用于求解高阶稀疏方程组 雅可比迭代法 高斯-赛德尔迭代法 ...

  5. 科学计算与数学建模-线性方程组求解的迭代法 思维导图

    第六章 回归问题-线性方程组求解的迭代法

  6. C++使用雅可比迭代法(jacobi)和高斯赛德尔迭代法(G-S)解线性方程组

    理论部分: 简言之 jacobi迭代法就是把线性方程组化为关于第i行xi的等式,然后利用等式循环计算xi Gauss-Seidel迭代法就是在jacobi迭代的基础上,在计算第i+1行的xi+1时,带 ...

  7. 六、线性方程组求解--Jacobi和Gauss-Seidel迭代求解

    六.线性方程组求解-Gauss消去.Jacobi和Gauss-Seidel迭代求解 1.消去法求解原理 求解Ax = b,首先对增广矩阵(A|b)进行初等行变换为如下三种矩阵对角阵.上三角阵.下三角阵 ...

  8. matlab中欠定方程组超定方程组_一篇文章入门大规模线性方程组求解

    前面介绍过主要的线性方程组求解库,参考附录.求解大规模线性方程组是仿真软件求解器的底层技术,求解器时间基本都消耗在方程组求解上.线性方程组的解法比较成熟,方法也有很多,而且不同的方法对应不同类型方程组 ...

  9. 大型稀疏线性方程组求解技术——工业仿真的底层核心

    背  景 在工业仿真领域,对各种现实世界的问题进行数值模拟时,如流体动力学分析.电磁场仿真.结构力学应力应变分析等,其控制方程通常是偏微分方程组,在经过不同方法的隐式离散之后最终都可转化为大型稀疏线性 ...

最新文章

  1. 室内设计木地板材质合集包 Arroway – Design Craft Vol.4
  2. Linux查看实时带宽流量情况
  3. Anaconda+用conda创建python虚拟环境
  4. #include 和 #include 的区别
  5. web开发语言大盘点
  6. WCF PeerChannel介绍
  7. 如何添加地图控件到Windows Phone 8的页面中
  8. Shell编程入门(第二版)(中)
  9. 前端学习(2810):完成安卓打包
  10. 怎样改变计算机桌面的特效主题,电脑桌面主题、图片怎么设置的技巧大全
  11. CAN笔记(6) CAN协议(一)
  12. springboot转发http请求_Spring Boot2 系列教程(八)Spring Boot 中配置 Https
  13. nginx学习笔记003---Nginx代理配置_注意,在Windows中路径要用/
  14. jsp中动态include与静态include的区别
  15. 你以为你懂MySQL索引?阿里的面试官:你还太嫩!
  16. 关闭tensorflow运行时的警告信息1
  17. RecyclerView混合布局
  18. BZOJ1027[JSOI2007] 合金
  19. ZigBee模块(DL-20)在调试过程中的问题及解决方案
  20. Navicat批量修改数据库某一属性初始值

热门文章

  1. plsql和navicate有什么区别_plsql和navicat连接远程oracle(易错点)
  2. 大数据技术原理与应用—第1讲 大数据概述(林子雨老师)课后习题
  3. 第三方软件测试机构如何对软件进行安全性测试?
  4. Java数字签名校验
  5. 基于springboot房屋租赁管理系统 (源代码+数据库+需求分析文档) 006
  6. java计算机毕业设计无人驾驶汽车管理系统源码+数据库+系统+lw文档+mybatis+运行部署
  7. 基于R语言的Meta分析【全流程、不确定性分析】方法与Meta机器学习技术应用
  8. 04-Mybatis-增删改查
  9. 编程的50种基础算法代码,编程常用算法有哪些
  10. Java框架tk_TKmybatis的框架介绍和原理分析及Mybatis新特性