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 性能优化技巧总结
Nov 01 Python
Python存取XML的常见方法实例分析
Mar 21 Python
浅谈Python中带_的变量或函数命名
Dec 04 Python
Zookeeper接口kazoo实例解析
Jan 22 Python
python素数筛选法浅析
Mar 19 Python
python 对象和json互相转换方法
Mar 22 Python
python用户评论标签匹配的解决方法
May 31 Python
python单线程下实现多个socket并发过程详解
Jul 27 Python
通过python3实现投票功能代码实例
Sep 26 Python
CentOS7下安装python3.6.8的教程详解
Jan 03 Python
django序列化时使用外键的真实值操作
Jul 15 Python
Python使用永中文档转换服务
May 06 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统一页面编码避免乱码问题
2015/04/09 PHP
php中使用gd库实现下载网页中所有图片
2015/05/12 PHP
php实现的用户查询类实例
2015/06/18 PHP
PHP简单实现模拟登陆功能示例
2017/09/15 PHP
PHP封装请求类实例分析【基于Yii框架】
2019/10/17 PHP
JavaScript事件列表解说
2006/12/22 Javascript
js利用div背景,做一个竖线的效果。
2008/11/22 Javascript
JavaScript 组件之旅(四):测试 JavaScript 组件
2009/10/28 Javascript
js arguments对象应用介绍
2012/11/28 Javascript
JavaScript中的this关键字使用方法总结
2015/03/13 Javascript
基于jquery实现在线选座订座之影院篇
2015/08/24 Javascript
移动端点击图片放大特效PhotoSwipe.js插件实现
2016/08/25 Javascript
用jquery快速解决IE输入框不能输入的问题
2016/10/04 Javascript
关于Vue.js一些问题和思考学习笔记(2)
2016/12/02 Javascript
jquery submit()不能提交表单的解决方法
2017/04/24 jQuery
vue组件数据传递、父子组件数据获取,slot,router路由功能示例
2019/03/19 Javascript
Python实现全角半角转换的方法
2014/08/18 Python
Flask框架踩坑之ajax跨域请求实现
2019/02/22 Python
Django中create和save方法的不同
2019/08/13 Python
美国网上花店:JustFlowers
2017/02/12 全球购物
Melijoe美国官网:法国奢侈童装购物网站
2017/04/19 全球购物
Vilebrequin欧洲官网:法国豪华泳装品牌(男士沙滩裤)
2018/04/14 全球购物
NFL欧洲商店(德国):NFL Europe Shop DE
2018/11/03 全球购物
如何用PHP实现邮件发送
2012/12/26 面试题
大学生村官心得体会范文
2014/01/04 职场文书
电焊工工作岗位职责
2014/02/06 职场文书
竞聘书格式及范文
2014/03/31 职场文书
中学生家长评语大全
2014/04/16 职场文书
加强作风建设工作总结
2014/10/23 职场文书
见习报告的格式
2014/10/31 职场文书
成本会计岗位职责
2015/02/03 职场文书
财务年终工作总结大全
2019/06/20 职场文书
SQL Server2019数据库之简单子查询的具有方法
2021/04/27 SQL Server
Python中的套接字编程是什么?
2021/06/21 Python
Java详细解析==和equals的区别
2022/04/07 Java/Android
nginx实现多geoserver服务的负载均衡
2022/05/15 Servers