python牛顿迭代法_Jacobi迭代算法的Python实现详解
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))
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牛顿迭代法_Jacobi迭代算法的Python实现详解相关推荐
- kmeans python interation flag_机器学习经典算法-logistic回归代码详解
一.算法简要 我们希望有这么一种函数:接受输入然后预测出类别,这样用于分类.这里,用到了数学中的sigmoid函数,sigmoid函数的具体表达式和函数图象如下: 可以较为清楚的看到,当输入的x小于0 ...
- python实验原理_Python实现蒙特卡洛算法小实验过程详解
蒙特卡洛算法思想 蒙特卡洛(Monte Carlo)法是一类随机算法的统称,提出者是大名鼎鼎的数学家冯·诺伊曼,他在20世纪40年代中期用驰名世界的赌城-摩纳哥的蒙特卡洛来命名这种方法. 通俗的解释一 ...
- python牛顿迭代法求根例题_1.3求根之牛顿迭代法
目录 [TOC] 前言 今天我们讲的是具有收敛速度快,能求重根的解方程之法,牛顿迭代法. (一)牛顿迭代法的分析 1.定义 迭代公式如下: 迭代函数是: 由于 与原方程 等价. 当 时, 就是 的近似 ...
- 有限元学习笔记-虚功平衡方程的线性化及牛顿-拉普森迭代算法
有限元学习笔记-虚功平衡方程的线性化及牛顿-拉普森迭代算法 张量微分是解连续介质物理问题的利器.
- python数据挖掘课程】二十一.朴素贝叶斯分类器详解及中文文本舆情分析
#2018-04-06 13:52:30 April Friday the 14 week, the 096 day SZ SSMR python数据挖掘课程]二十一.朴素贝叶斯分类器详解及中文文本舆 ...
- python数据挖掘笔记】二十.KNN最近邻分类算法分析详解及平衡秤TXT数据集读取
#2018-04-06 07:57:00 April Friday the 14 week, the 096 day SZ SSMR python数据挖掘笔记]二十.KNN最近邻分类算法分析详解及平衡 ...
- 【Python养成】常用内置函数 — 2(详解25个内置函数)
图片来自互联网 文章目录 前言 二.内置函数详解 1.函数:chr(x) 2.函数:dir([obj]) 3.函数:divmod(x,y) 4.函数:enumerate(sequence, [star ...
- python代码案例详解-我用Python抓取了7000 多本电子书案例详解
安装 安装很简单,只要执行: pip install requests-html 就可以了. 分析页面结构 通过浏览器审查元素可以发现这个电子书网站是用 WordPress 搭建的,首页列表元素很简单 ...
- python 命令-python解析命令行参数的三种方法详解
这篇文章主要介绍了python解析命令行参数的三种方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 python解析命令行参数主要有三种方法: ...
最新文章
- $portfolio.isotope is not a function
- 序列到序列网络seq2seq与注意力机制attention浅析
- hashlib模块使用详情
- [资料]pthreads PHP
- easyui datagrid oncheck 修改行样式_100 种 PPT 图表样式送给你
- 重置系统_开课了,如何重置电脑系统?1分钟教会你!
- [LeetCode] Permutations II
- bzoj5056:OI游戏
- maven项目,在spring中整合mybatis
- paip.C#.net 悬浮窗口的建立总结
- 招聘senior.net software engineer
- linux bridge 添加fdb,Linux协议栈--网桥设备的实现
- JZOJ5460. 【NOIP2017提高A组冲刺11.7】士兵训练
- HTML ASP VBSCRIPT JAVASCRIPT SKILLS 常见问题
- ceph 代码分析 读_Ceph代码分析
- 全网最全编程学习网站汇总来了,还不赶快收藏
- 前端中DOM是什么,怎样理解dom
- Window XP驱动开发(十) 驱动程序的基本结构
- vue中使用微信jssdk语音聊天功能,实现语音输入内容的van-field输入框组件
- 学计算机减肥,电脑瘦身(教你一分钟让电脑瘦身)
热门文章
- okHttp记录---response.body().string()输出的结构是乱码
- js 请求接口获取不到登录cookie xhrFields 配置
- 【Python】Python库之游戏开发
- C#LeetCode刷题-数组
- 硅谷历史_使其新颖:硅谷设计的历史
- 向圣诞老人和他的精灵学习Google Analytics(分析)
- node.js ejs_如何在Node.js应用程序中使用EJS模板
- 利用 Python 写个七夕表白神器
- python爬虫框架Scrapy采集数据,并制作词云图分析!
- Vue与服务端数据交互 [ axios ]