参考书 :

<<振动分析>> 张准 汪凤泉 编著 东南大学出版社 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 振动分析 迭代法计算高阶特征值及特征向量的更多相关文章

  1. 初学 Python(十二)——高阶函数

    初学 Python(十二)--高阶函数 初学 Python,主要整理一些学习到的知识点,这次是高阶函数. #-*- coding:utf-8 -*- ''''' 话说高阶函数: 能用函数作为参数的函数 ...

  2. python学习8—函数之高阶函数与内置函数

    python学习8—函数之高阶函数与内置函数 1. 高阶函数 a. map()函数 对第二个输入的参数进行第一个输入的参数指定的操作.map()函数的返回值是一个迭代器,只可以迭代一次,迭代过后会被释 ...

  3. Python进阶:函数式编程(高阶函数,map,reduce,filter,sorted,返回函数,匿名函数,偏函数)...啊啊啊

    函数式编程 函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计 ...

  4. python递归,装饰器,函数, 高阶函数

    在函数内部,可以调用其它函数,如果一个函数在内部调用自身本身,这个函数就是递归函数 递归特性:1.必须有一个明确的结束条件 2.每次进入更深一层递归时,问题规模比上次递归都有所减少(10-8-5等) ...

  5. (转)Python进阶:函数式编程(高阶函数,map,reduce,filter,sorted,返回函数,匿名函数,偏函数)

    原文:https://www.cnblogs.com/chenwolong/p/reduce.html 函数式编程 函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数 ...

  6. Learning Python 012 函数式编程 1 高阶函数

    Python 函数式编程 1 高阶函数 高阶函数 Q:什么是高阶函数? A:一个函数接收另一个函数作为参数,这种函数就称之为高阶函数. 简单举个例子: def add(x, y, f): return ...

  7. python 把函数作为参数 ---高阶函数

    把函数作为参数 在2.1小节中,我们讲了高阶函数的概念,并编写了一个简单的高阶函数: def add(x, y, f): return f(x) + f(y) 如果传入abs作为参数f的值: add( ...

  8. python基础之常用的高阶函数

    前言 高阶函数指的是能接收函数作为参数的函数或类:python中有一些内置的高阶函数,在某些场合使用可以提高代码的效率. map() map函数可以把一个迭代对象转换成另一个可迭代对象,不过在pyth ...

  9. Python嵌套、递归、高阶函数

    一.嵌套函数 1.嵌套函数简单的理解可以看作是在函数的内部再定义函数,实现函数的“私有”. 2.特点: <1> 函数内部可以再次定义函数. <2> 只有被调用时才会执行(外部函 ...

随机推荐

  1. mongodb(五)

    mongoDB 启动配置祥讲导出,导入,运行时备份Fsync锁,数据修复用户管理,安全认证 1.启动项 mongod --help 1.1利用config配置文件来启动数据库改变端口为8888 mon ...

  2. MyEclipse显示 Install new software 在线安装插件选项

    转自:https://blog.csdn.net/greatpresident/article/details/8950869 昨天不知道怎么就删除了电脑中的eclipse 我x,还原不回来了. 今天 ...

  3. UNITY所谓的异步加载几乎全部是协程,不是线程;MAP3加载时解压非常慢

    实践证明,以下东西都是协程,并非线程(thread): 1,WWW 2,AssetBundle.LoadFromFileAsync 3,LoadSceneAsync 其它未经测试 此问题的提出是由于一 ...

  4. 前端开发之JavaScript基础篇二

    主要内容: 1.流程控制条件语句和switch语句 2.for循环和while循环 3.Break语句和Continue语句 4.数组和数组常用方法 5.函数 6.对象 一.流程控制条件语句和swit ...

  5. CSS选择器的匹配规则

    css选择器是从右向左匹配的, 比如:.list a {color:blue;} 先解析到 a 标签,并将页面上所有 a 标签的字体颜色都按照 color:blue 进行渲染(蓝色),再解析到 .li ...

  6. 配置siebel捕捉SQL语句

    C:\Siebel\15.0.0.0.0\Client\BIN\siebel.exe /c c:\Siebel\15.0.0.0.0\Client\bin\chs\siebel.cfg /B &quo ...

  7. SQLSERVER2012误删数据恢复过程

    由于长时间从事企业应用系统开发,前往用户现场升级.调试系统是比较常做的事情,但是就在周一,由于同事的失误在毫无知觉的情况下误删了生产数据库几乎所有的数据.当我发现的那一刻,感觉头发都立起来了,心想这他 ...

  8. VUE+WebPack游戏设计:欲望都市城市图层的设计

  9. Spark 性能相关参数配置详解-压缩与序列化篇

    随着Spark的逐渐成熟完善, 越来越多的可配置参数被添加到Spark中来, 本文试图通过阐述这其中部分参数的工作原理和配置思路, 和大家一起探讨一下如何根据实际场合对Spark进行配置优化. 由于篇 ...

  10. Flume NG 配置详解

    配置 设置代理 Flume代理配置存储在本地配置文件.这是一个文本文件格式,是Java属性文件格式.在相同的配置文件,可以指定一个或多个代理的配置.配置文件包括每个源,接收器和通道,把它们连接在一起, ...