Jacobi迭代算法的Python实现详解


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

1.1 Jacobi迭代算法

def Jacobi_tensor_V2(A,b,Delta,m,n,M):
start=time.perf_counter()#开始计时
find=0#用于标记是否在规定步数内收敛
X=np.ones(n)#迭代起始点
x=np.ones(n)#用于存储迭代的中间结果
d=np.ones(n)#用于存储Ax**(m-2)的对角线部分
m1=m-1
m2=2-m
for i in range(M):
print('X',X)
a=np.copy(A)
#得Ax**(m-2)
for j in range(m-2):
a=np.dot(a,X)
#得d 和 (2-m)Dx**(m-2)+(L'+U')x**(m-2)
for j in range(n):
d[j]=a[j,j]
a[j,j]=m2*a[j,j]
#迭代更新
for j in range(n):
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_1():
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)
Jacobi_tensor_V2(A,b,Delta,m,n)

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

Python 相关文章推荐
Python中使用ConfigParser解析ini配置文件实例
Aug 30 Python
python访问mysql数据库的实现方法(2则示例)
Jan 06 Python
利用python发送和接收邮件
Sep 27 Python
selenium python浏览器多窗口处理代码示例
Jan 15 Python
python微信公众号开发简单流程
Mar 23 Python
python3实现windows下同名进程监控
Jun 21 Python
windows10下安装TensorFlow Object Detection API的步骤
Jun 13 Python
基于Python批量生成指定尺寸缩略图代码实例
Nov 20 Python
python实现tail实时查看服务器日志示例
Dec 24 Python
借助Paramiko通过Python实现linux远程登陆及sftp的操作
Mar 16 Python
Python无头爬虫下载文件的实现
Apr 02 Python
Python机器学习之基于Pytorch实现猫狗分类
Jun 08 Python
Gauss-Seidel迭代算法的Python实现详解
Jun 29 #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
You might like
在服务端进行目录建立、删除,文件上传、删除的过程的php代码
2008/09/10 PHP
基于php实现长连接的方法与注意事项的问题
2013/05/10 PHP
详细解读php的命名空间(一)
2018/02/21 PHP
PHP常用的类封装小结【4个工具类】
2019/06/28 PHP
javascript编程起步(第四课)
2007/02/27 Javascript
JS启动应用程序的一个简单例子
2008/05/11 Javascript
基于jquery实现的类似百度搜索的输入框自动完成功能
2011/08/23 Javascript
javaScript 删除字符串空格多种方法小结
2012/10/24 Javascript
JavaScript建立一个语法高亮输入框实现思路
2013/02/26 Javascript
javascript圆盘抽奖程序实现原理和完整代码例子
2014/06/03 Javascript
JS实现关键字搜索时的相关下拉字段效果
2014/08/05 Javascript
jQuery实现文章图片弹出放大效果
2017/04/06 jQuery
利用jqprint插件打印页面内容的实现方法
2018/01/09 Javascript
详解用Node.js写一个简单的命令行工具
2018/03/01 Javascript
JavaScript文本特效实例小结【3个示例】
2018/12/22 Javascript
解决Angularjs异步操作后台请求用$q.all排列先后顺序问题
2019/11/29 Javascript
node.js开发辅助工具nodemon安装与配置详解
2020/02/06 Javascript
Element Dialog对话框的使用示例
2020/07/26 Javascript
python使用urlparse分析网址中域名的方法
2015/04/15 Python
Python实现TCP/IP协议下的端口转发及重定向示例
2016/06/14 Python
python正则表达式的使用
2017/06/12 Python
Python加密方法小结【md5,base64,sha1】
2017/07/13 Python
tensorflow saver 保存和恢复指定 tensor的实例讲解
2018/07/26 Python
python正向最大匹配分词和逆向最大匹配分词的实例
2018/11/14 Python
浅谈python 中类属性共享的问题
2019/07/02 Python
MoviePy常用剪辑类及Python视频剪辑自动化
2020/12/18 Python
在线购买廉价折扣书籍和小说:BookOutlet.com
2018/02/19 全球购物
.NET里面什么时候需要调用垃圾回收
2015/06/01 面试题
机械制造与自动化应届生求职信
2013/11/16 职场文书
感恩寄语大全
2014/04/11 职场文书
医学专业毕业生求职信
2014/06/20 职场文书
银行招聘自荐信
2015/03/06 职场文书
幼儿园迎新生欢迎词
2015/09/30 职场文书
2016元旦文艺汇演主持词(开场白+结束语)
2015/12/03 职场文书
2016学雷锋优秀志愿者事迹材料
2016/02/25 职场文书
MySQL GRANT用户授权的实现
2021/06/18 MySQL