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制作最美应用的爬虫
Oct 28 Python
Python利用Beautiful Soup模块修改内容方法示例
Mar 27 Python
Python实现多进程共享数据的方法分析
Dec 04 Python
python range()函数取反序遍历sequence的方法
Jun 25 Python
python删除字符串中指定字符的方法
Aug 13 Python
python+selenium 定位到元素,无法点击的解决方法
Jan 30 Python
python获取微信企业号打卡数据并生成windows计划任务
Apr 30 Python
使用python实现简单五子棋游戏
Jun 18 Python
基于Python绘制美观动态圆环图、饼图
Jun 03 Python
python中scrapy处理项目数据的实例分析
Nov 22 Python
python 利用panda 实现列联表(交叉表)
Feb 06 Python
Python-typing: 类型标注与支持 Any类型详解
May 10 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 Session存储到Redis的方法
2013/11/04 PHP
php ImageMagick windows下安装教程
2015/01/26 PHP
ZF框架实现发送邮件的方法
2015/12/03 PHP
php与c 实现按行读取文件实例代码
2017/01/03 PHP
PHP编程实现微信企业向用户付款的方法示例
2017/07/26 PHP
PHP实现绘制二叉树图形显示功能详解【包括二叉搜索树、平衡树及红黑树】
2017/11/16 PHP
通用于ie和firefox的函数 GetCurrentStyle (obj, prop)
2006/12/27 Javascript
常用简易JavaScript函数
2009/04/09 Javascript
关于js中window.location.href,location.href,parent.location.href,top.location.href的用法与区别
2010/10/18 Javascript
Javascript new Date().valueOf()的作用与时间戳由来详解
2013/04/24 Javascript
淘宝网提供的国内NPM镜像简介和使用方法
2014/04/17 Javascript
js调试系列 断点与动态调试[基础篇]
2014/06/18 Javascript
Window.Open如何在同一个标签页打开
2014/06/20 Javascript
JavaScript插件化开发教程(五)
2015/02/01 Javascript
深入浅出分析javaScript中this用法
2015/05/09 Javascript
javascript电商网站抢购倒计时效果实现
2015/11/19 Javascript
JavaScript数组实现数据结构中的队列与堆栈
2016/05/26 Javascript
JS与HTML结合使用marquee标签实现无缝滚动效果代码
2016/07/05 Javascript
微信小程序 数据封装,参数传值等经验分享
2017/01/09 Javascript
总结js中的一些兼容性易错的问题
2017/12/18 Javascript
python转换摩斯密码示例
2014/02/16 Python
Python SQLAlchemy基本操作和常用技巧(包含大量实例,非常好)
2014/05/06 Python
python处理文本文件并生成指定格式的文件
2014/07/31 Python
python爬虫面试宝典(常见问题)
2018/03/02 Python
python分数表示方式和写法
2019/06/26 Python
使用html2canvas将页面转成图并使用用canvas2image下载
2019/04/04 HTML / CSS
Under Armour澳大利亚官网:美国知名的高端功能性运动品牌
2018/02/22 全球购物
美国知名眼镜网站:Target Optical
2020/04/04 全球购物
医学生就业推荐表自我鉴定
2014/03/26 职场文书
超市活动计划书
2014/04/24 职场文书
陈胜吴广起义口号
2014/06/20 职场文书
会议室使用管理制度
2015/08/06 职场文书
安全教育主题班会教案
2015/08/12 职场文书
加强党性修养心得体会
2016/01/21 职场文书
Python使用scapy模块发包收包
2021/05/07 Python
Python进程池与进程锁之语法学习
2022/04/11 Python