Python 振动分析 迭代法计算高阶特征值及特征向量
参考书 :
<<振动分析>> 张准 汪凤泉 编著 东南大学出版社 ISBN 7-80123-583-4
参考章节 : 4.6.2 和 4.6.3
<<数值分析>> 崔瑞彩 谢伟松 天津大学出版社 ISBN 7-5618-1366-X
参考章节 : 3.1
参考资料:
<<交替使用幂法和降阶法求解矩阵全部特征值>> 下载地址:https://pan.baidu.com/s/1fmNMnS8zyaMv4B_6jd7rnQ
2018-03-11 笔记
1 求解器代码
import numpy as np class EigenValueModule(object) :
K=np.mat([[1]]) #K矩阵
M=np.mat([[1]]) #M矩阵
s=1 #前s阶
Lambdas=[]
Xs=[]
def GetMax(self,Mat):
position=np.argmax(Mat)
row,column=Mat.shape
row,column=divmod(position, column)
Result=Mat[row,column]
return Result
def IsValid(self,LambdaLast,LambdaNext):
#用于判断迭代出的特征值是否满足要求
#要求 Abs(LambdaLast-LambdaNext)/LambdaLast < Epsilon
myResult=False
Epsilon=1e-3 #0.001
Ratio=abs(LambdaLast-LambdaNext)/LambdaLast
if Ratio<Epsilon :
myResult=True
return myResult
def ReduceOrder(self,A,X):
a=A[0]
X=X/X[0,0]
aX=X*a
myResult=A-aX
myResult=np.delete(myResult,0,0)
myResult=np.delete(myResult,0,1)
return myResult
def solve(self):
self.Lambdas=[]
self.Xs=[]
#导入外部变量
K=self.K
M=self.M
s=self.s
#初始化
R=K.I
A=R*M
#进行计算
for i in range(s):
X=self.ChildSolve(A)
A=self.ReduceOrder(A,X)
def solveA(self,A):
self.Lambdas=[]
self.Xs=[]
s=self.s
#进行计算
for i in range(s):
X=self.ChildSolve(A)
print(A)
A=self.ReduceOrder(A,X) def ChildSolve(self,A): #单个计算过程
n=len(A)
X=np.mat(np.ones((1,n))).T #创建试算向量
XMax=self.GetMax(X)
LambdaLast=XMax #第一个Lambda
Y=X/XMax
X=A*Y
XMax=self.GetMax(X)
LambdaNext=XMax #下一个Lambda
while self.IsValid(LambdaLast,LambdaNext)!=True : #Lambda不符合要求
LambdaLast=LambdaNext #更新Lambda
Y=X/XMax
X=A*Y
XMax=self.GetMax(X)
LambdaNext=XMax #更新Lambda
self.Lambdas.append(LambdaNext)
self.Xs.append(X)
return X
2 调试代码
调试代码1
import numpy as np
from SolveEigenValue import EigenValueModule
Figure=EigenValueModule()
Figure.M=np.mat([[1,0,0],[0,1,0],[0,0,1]])
Figure.K=np.mat([[2,-1,0],[-1,2,-1],[0,-1,1]])
Figure.s=3
Figure.solve()
print(Figure.Lambdas)
调试代码2
import numpy as np
from SolveEigenValue import EigenValueModule
Figure=EigenValueModule()
Figure.s=3
A=np.mat([[1,7,8,9,3],[0,2,5,8,6],[0,2,4,2,2],[0,0,1,6,5],[0,0,0,0,9]])
Figure.solveA(A)
print(Figure.Lambdas)
转发请标明来源:https://www.cnblogs.com/nanyunan/p/8546933.html
Python 振动分析 迭代法计算高阶特征值及特征向量的更多相关文章
- 初学 Python(十二)——高阶函数
初学 Python(十二)--高阶函数 初学 Python,主要整理一些学习到的知识点,这次是高阶函数. #-*- coding:utf-8 -*- ''''' 话说高阶函数: 能用函数作为参数的函数 ...
- python学习8—函数之高阶函数与内置函数
python学习8—函数之高阶函数与内置函数 1. 高阶函数 a. map()函数 对第二个输入的参数进行第一个输入的参数指定的操作.map()函数的返回值是一个迭代器,只可以迭代一次,迭代过后会被释 ...
- Python进阶:函数式编程(高阶函数,map,reduce,filter,sorted,返回函数,匿名函数,偏函数)...啊啊啊
函数式编程 函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计 ...
- python递归,装饰器,函数, 高阶函数
在函数内部,可以调用其它函数,如果一个函数在内部调用自身本身,这个函数就是递归函数 递归特性:1.必须有一个明确的结束条件 2.每次进入更深一层递归时,问题规模比上次递归都有所减少(10-8-5等) ...
- (转)Python进阶:函数式编程(高阶函数,map,reduce,filter,sorted,返回函数,匿名函数,偏函数)
原文:https://www.cnblogs.com/chenwolong/p/reduce.html 函数式编程 函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数 ...
- Learning Python 012 函数式编程 1 高阶函数
Python 函数式编程 1 高阶函数 高阶函数 Q:什么是高阶函数? A:一个函数接收另一个函数作为参数,这种函数就称之为高阶函数. 简单举个例子: def add(x, y, f): return ...
- python 把函数作为参数 ---高阶函数
把函数作为参数 在2.1小节中,我们讲了高阶函数的概念,并编写了一个简单的高阶函数: def add(x, y, f): return f(x) + f(y) 如果传入abs作为参数f的值: add( ...
- python基础之常用的高阶函数
前言 高阶函数指的是能接收函数作为参数的函数或类:python中有一些内置的高阶函数,在某些场合使用可以提高代码的效率. map() map函数可以把一个迭代对象转换成另一个可迭代对象,不过在pyth ...
- Python嵌套、递归、高阶函数
一.嵌套函数 1.嵌套函数简单的理解可以看作是在函数的内部再定义函数,实现函数的“私有”. 2.特点: <1> 函数内部可以再次定义函数. <2> 只有被调用时才会执行(外部函 ...
随机推荐
- Can only modify an image if it contains a bitmap
Can only modify an image if it contains a bitmap Image1装载了JPG文件后下面都报错,因为. Image1.Canvas.CopyRect(dre ...
- LUA和C#关于字符串中\0的处理
LUA中: local s = "hello\0\0dddddddd" print(s) --hello C#中: string s = "hello\0\0dddddd ...
- IDEA2017 破解方式
1. 到网站 http://idea.lanyus.com/ 获取注册码. 2.填入下面的license server: http://intellij.mandroid.cn/ http://ide ...
- 使用net.sf.fjep.fatjar插件将第三方JAR包打包进自已的JAR包中
一般单个工程,在没有应用别人的jar包时导出为jar很简单,只要设置一个Main-Class就行了,也就是选择程序入口(main所在类).但是涉及到了数据库或需要用到第三方的JAR,就需要用到相应的数 ...
- FreeSWITCH--配置代接电话
配置代接电话,需要更改 分机.拨号计划.外线 的配置 一.配置分机 代接组内分机的这个“组”, 不是“conf/directory/default.xml"中配置的 group,而是要在分机 ...
- 高性能Web服务器Nginx的配置与部署研究(9)核心模块之HTTP模块基本常用指令
一.HTTP模块的作用是什么? Nginx的HTTP模块用于控制Nginx的HTTP进程. 二.指令 1. alias 含义:指定location使用的路径,与root类似,但不改变文件的跟路径,仅适 ...
- centOS系统安装MySQL教程
如何卸载CentOS系统自带MySQL 1.1. 查找以前是否装有MySQL 命令:rpm -qa|grep -i mysql 可以看到如下图的所示:(图片来自互联网,仅做参考使用) 说明系统自带: ...
- 更改IDEA高亮字体背景颜色
IDEA工具中依次进入file -> settings -> editor -> colors Scheme -> general,在右侧窗口中将result.i 都改成自己 ...
- 监控服务器cpu、磁盘、模板以及自定义key
一.检测主机存活 net.tcp.service.perf[tcp,,] Float型 返回0代表端口挂了 zabbix fping要开启sudo权限之类比较不方便 二.监控CPU负载 监控load ...
- OCFS2 Fencing
OCFS2 FencingPosted on February 8, 2011 by Abdulhameed Basha I am very excited to start writing my e ...