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正则表达式match和search用法实例
Mar 26 Python
Python基于DES算法加密解密实例
Jun 03 Python
编写Python CGI脚本的教程
Jun 29 Python
Python实现曲线拟合操作示例【基于numpy,scipy,matplotlib库】
Jul 12 Python
python判断字符串或者集合是否为空的实例
Jan 23 Python
Opencv+Python实现图像运动模糊和高斯模糊的示例
Apr 11 Python
Python之Django自动实现html代码(下拉框,数据选择)
Mar 13 Python
python实现按键精灵找色点击功能教程,使用pywin32和Pillow库
Jun 04 Python
python中tkinter窗口位置\坐标\大小等实现示例
Jul 09 Python
解析python 类方法、对象方法、静态方法
Aug 15 Python
Python 解析xml文件的示例
Sep 29 Python
python修改微信和支付宝步数的示例代码
Oct 12 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
非常不错的MySQL优化的8条经验
2008/03/24 PHP
PHP 伪静态隐藏传递参数名的四种方法
2010/02/22 PHP
PHP图片自动裁切应付不同尺寸的显示
2014/10/16 PHP
PHP多进程简单实例小结
2019/11/09 PHP
ext监听事件方法[初级篇]
2008/04/27 Javascript
下载站控制介绍字数显示的脚本 显示全部 隐藏介绍等功能
2009/09/19 Javascript
学习ExtJS TextField常用方法
2009/10/07 Javascript
jquery不会自动回收xmlHttpRequest对象 导致了内存溢出
2012/06/18 Javascript
javaScript使用EL表达式的几种方式
2014/05/27 Javascript
基于JQuery实现图片轮播效果(焦点图)
2016/02/02 Javascript
原生js实现可爱糖果数字时间特效
2016/12/30 Javascript
JavaScript实现自动跳转文本功能
2017/05/25 Javascript
JavaScript判断输入是否为数字类型的方法总结
2017/09/28 Javascript
[03:01]2014DOTA2国际邀请赛 DC:我是核弹粉,为Burning和国土祝福
2014/07/13 DOTA
Python类定义和类继承详解
2015/05/08 Python
Python实现简单多线程任务队列
2016/02/27 Python
Django入门使用示例
2017/12/12 Python
解决seaborn在pycharm中绘图不出图的问题
2018/05/24 Python
Python模拟登录的多种方法(四种)
2018/06/01 Python
python3爬虫获取html内容及各属性值的方法
2018/12/17 Python
Django使用AJAX调用自己写的API接口的方法
2019/03/06 Python
python 将dicom图片转换成jpg图片的实例
2020/01/13 Python
Python脚本如何在bilibili中查找弹幕发送者
2020/06/04 Python
python二维图制作的实例代码
2020/12/03 Python
HTML5之SVG 2D入门9—蒙板及mask元素介绍与应用
2013/01/30 HTML / CSS
惊艳的手工时装首饰:Migonne Gavigan
2018/02/23 全球购物
香港最新科技与优质家居产品购物网站:J SELECT
2018/08/21 全球购物
戴森英国官网:Dyson英国
2019/05/07 全球购物
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
2014/07/27 面试题
学前班评语大全
2014/05/04 职场文书
支部鉴定材料
2014/06/02 职场文书
房屋租赁合同协议书范本
2014/10/19 职场文书
刑事附带民事上诉状
2015/05/23 职场文书
报案材料怎么写
2015/05/25 职场文书
深入浅析python3 依赖倒置原则(示例代码)
2021/07/09 Python
Pyqt5将多个类组合在一个界面显示的完整示例
2021/09/04 Python