Gauss-Seidel迭代算法的Python实现详解


Posted in Python onJune 29, 2019
import numpy as np
import time

1.1 Gauss-Seidel迭代算法

def GaussSeidel_tensor_V2(A,b,Delta,m,n,M):
start=time.perf_counter()
find=0
X=np.ones(n)
d=np.ones(n)
m1=m-1
m2=2-m
for i in range(M):
print('X',X)
x=np.copy(X)
#迭代更新
for j in range(n):
a=np.copy(A)
for k in range(m-2):
a=np.dot(a,x)
for k in range(n):
d[k]=a[k,k]
a[k,k]=m2*a[k,k] 
x[j]=(b[j]-np.dot(a[j],x))/(m1*d[j])
#判断是否满足精度要求
if np.max(np.fabs(X-x))<Delta:
find=1
break 
X=np.copy(x)
end=time.perf_counter()
print('时间:',end-start)
print('迭代',i)
return X,find,i,end-start

1.2张量A的生成函数和向量b的生成函数:

def Creat_A(m,n):#生成张量A
size=np.full(m, n)
X=np.ones(n)
while 1:
#随机生成给定形状的张量A
A=np.random.randint(-49,50,size=size)
#判断Dx**(m-2)是否非奇异,如果是,则满足要求,跳出循环
D=np.copy(A)
for i1 in range(n):
for i2 in range(n):
if i1!=i2:
D[i1,i2]=0
for i in range(m-2):
D=np.dot(D,X)
det=np.linalg.det(D)
if det!=0:
break
#将A的对角面张量扩大十倍,使对角面占优
for i1 in range(n):
for i2 in range(n):
if i1==i2:
A[i1,i2]=A[i1,i2]*10
print('A:')
print(A)
return A
#由A和给定的X根据Ax**(m-1)=b生成向量b
def Creat_b(A,X,m):
a=np.copy(A)
for i in range(m-1):
a=np.dot(a,X)
print('b:')
print(a)
return a

1.3 对称张量S的生成函数:

def Creat_S(m,n):#生成对称张量B
size=np.full(m, n)
S=np.zeros(size)
print('S',S)
for i in range(4):
#生成n为向量a
a=np.random.random(n)*np.random.randint(-5,6)
b=np.copy(a)
#对a进行m-1次外积,得到秩1对称张量b
for j in range(m-1):
b=outer(b,a)
#将不同的b叠加得到低秩对称张量S
S=S+b
print('S:')
print(S)
return S
def outer(a,b):
c=[]
for i in b:
c.append(i*a)
return np.array(c)
return a

1.4 实验二

def test_2():
Delta=0.01#精度
m=3#A的阶数
n=3#A的维数
M=200#最大迭代步数
X_real=np.array( [2,3,4])
A=Creat_A(m,n) 
b=Creat_b(A,X_real,m)
GaussSeidel_tensor_V2(A,b,Delta,m,n)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python urls.py的三种配置写法实例详解
Apr 28 Python
Python实现识别图片内容的方法分析
Jul 11 Python
Python基于分析Ajax请求实现抓取今日头条街拍图集功能示例
Jul 19 Python
python卸载后再次安装遇到的问题解决
Jul 10 Python
Django的性能优化实现解析
Jul 30 Python
使用python获取邮箱邮件的设置方法
Sep 20 Python
python给图像加上mask,并提取mask区域实例
Jan 19 Python
安装并免费使用Pycharm专业版(学生/教师)
Sep 24 Python
pycharm激活码2020最新分享适用pycharm2020最新版亲测可用
Nov 22 Python
利用python制作拼图小游戏的全过程
Dec 04 Python
Python数据清洗工具之Numpy的基本操作
Apr 22 Python
Python Pandas解析读写 CSV 文件
Apr 11 Python
python异步实现定时任务和周期任务的方法
Jun 29 #Python
python循环定时中断执行某一段程序的实例
Jun 29 #Python
python顺序执行多个py文件的方法
Jun 29 #Python
如何使用python把ppt转换成pdf
Jun 29 #Python
对Python的交互模式和直接运行.py文件的区别详解
Jun 29 #Python
使用python搭建服务器并实现Android端与之通信的方法
Jun 28 #Python
python全栈要学什么 python全栈学习路线
Jun 28 #Python
You might like
分享最受欢迎的5款PHP框架
2014/11/27 PHP
php去除字符串中空字符的常用方法小结
2015/03/17 PHP
PHP实现通过Luhn算法校验信用卡卡号是否有效
2015/03/23 PHP
PHP下载远程图片的几种方法总结
2017/04/07 PHP
网页javascript精华代码集
2007/01/24 Javascript
基于jquery的仿百度搜索框效果代码
2011/04/11 Javascript
jQuery数组处理方法汇总
2011/06/20 Javascript
javascript学习笔记(二) js一些基本概念
2012/06/18 Javascript
jquery插件制作 手风琴Panel效果实现
2012/08/17 Javascript
通过Jquery的Ajax方法读取将table转换为Json
2014/05/31 Javascript
jQuery中$this和$(this)的区别介绍(一看就懂)
2015/07/06 Javascript
Bootstrap每天必学之级联下拉菜单
2016/03/27 Javascript
Javarscript中模块(module)、加载(load)与捆绑(bundle)详解
2017/05/28 Javascript
vuex的module模块用法示例
2018/11/12 Javascript
Python代码的打包与发布详解
2014/07/30 Python
Python-基础-入门 简介
2014/08/09 Python
Python中实现常量(Const)功能
2015/01/28 Python
python将MongoDB里的ObjectId转换为时间戳的方法
2015/03/13 Python
Python断言assert的用法代码解析
2018/02/03 Python
linux安装Python3.4.2的操作方法
2018/09/28 Python
Appium Python自动化测试之环境搭建的步骤
2019/01/23 Python
Python实现将字符串的首字母变为大写,其余都变为小写的方法
2019/06/11 Python
python实现文本进度条 程序进度条 加载进度条 单行刷新功能
2019/07/03 Python
解决Django 在ForeignKey中出现 non-nullable field错误的问题
2019/08/06 Python
浅谈python锁与死锁问题
2020/08/14 Python
Python如何将模块打包并发布
2020/08/30 Python
Python中免验证跳转到内容页的实例代码
2020/10/23 Python
css3 flex布局 justify-content:space-between 最后一行左对齐
2020/01/02 HTML / CSS
英国最大的宠物商店:Pets at Home
2019/04/17 全球购物
英国时尚首饰品牌:Missoma
2020/06/29 全球购物
师德建设实施方案
2014/03/21 职场文书
2014年母亲节寄语
2014/05/07 职场文书
房屋产权证明书
2015/06/19 职场文书
建立共青团委员会的请示
2019/04/02 职场文书
网络安全倡议书(3篇)
2019/09/18 职场文书
MySQL外键约束(FOREIGN KEY)案例讲解
2021/08/23 MySQL