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 相关文章推荐
django之常用命令详解
Jun 30 Python
django创建自定义模板处理器的实例详解
Aug 14 Python
python unittest实现api自动化测试
Apr 04 Python
windows下python和pip安装教程
May 25 Python
对Tensorflow中的变量初始化函数详解
Jul 27 Python
python读取目录下最新的文件夹方法
Dec 24 Python
总结python中pass的作用
Feb 27 Python
python 图片去噪的方法示例
Jul 09 Python
python连接PostgreSQL数据库的过程详解
Sep 18 Python
tensorflow多维张量计算实例
Feb 11 Python
Python作用域与名字空间原理详解
Mar 21 Python
python能在浏览器能运行吗
Jun 17 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制作静态网站的模板框架(三)
2006/10/09 PHP
一个简单的自动发送邮件系统(一)
2006/10/09 PHP
非常好的php目录导航文件代码
2006/10/09 PHP
8个PHP数组面试题
2015/06/23 PHP
作为程序员必知的16个最佳PHP库
2015/12/09 PHP
ThinkPHP框架中使用Memcached缓存数据的方法
2018/03/31 PHP
thinkPHP框架RBAC实现原理分析
2019/02/01 PHP
Javascript与flash交互通信基础教程
2008/08/07 Javascript
JavaScript操作XML实例代码(获取新闻标题并分页,并分页)
2010/05/25 Javascript
firefox下jquery ajax返回object XMLDocument处理方法
2014/01/26 Javascript
jQuery中:button选择器用法实例
2015/01/04 Javascript
javascript实现图片自动和可控的轮播切换特效
2015/04/13 Javascript
js控制元素显示在屏幕固定位置及监听屏幕高度变化的方法
2015/08/11 Javascript
让Vue也可以使用Redux的方法
2018/05/23 Javascript
node.js中TCP Socket多进程间的消息推送示例详解
2018/07/10 Javascript
基于element-ui的rules中正则表达式
2018/09/04 Javascript
JavaScript实现Tab标签页切换的最简便方式(4种)
2020/06/28 Javascript
OpenLayers实现图层切换控件
2020/09/25 Javascript
解决vue init webpack 下载依赖卡住不动的问题
2020/11/09 Javascript
[00:43]FTP典藏礼包 DOTA2三大英雄霸气新套装
2014/03/21 DOTA
Python实现对excel文件列表值进行统计的方法
2015/07/25 Python
解决新django中的path不能使用正则表达式的问题
2018/12/18 Python
关于 Python opencv 使用中的 ValueError: too many values to unpack
2019/06/28 Python
python分割一个文本为多个文本的方法
2019/07/22 Python
使用 PyTorch 实现 MLP 并在 MNIST 数据集上验证方式
2020/01/08 Python
Python+Appium实现自动化测试的使用步骤
2020/03/24 Python
Pandas对DataFrame单列/多列进行运算(map, apply, transform, agg)
2020/06/14 Python
Python+Kepler.gl实现时间轮播地图过程解析
2020/07/20 Python
用python查找统一局域网下ip对应的mac地址
2021/01/13 Python
DAWGS鞋官方网站:鞋,凉鞋,靴子
2016/10/04 全球购物
Capitol Lighting的1800lighting.com:住宅和商业照明
2019/04/10 全球购物
德国的大型美妆个护电商:Flaconi
2020/06/26 全球购物
幼师辞职信范文
2015/02/27 职场文书
校园歌手大赛主持词
2015/07/03 职场文书
MySQL约束超详解
2021/09/04 MySQL
HTTP中的Content-type详解
2022/01/18 HTML / CSS