参考书 :

<<振动分析>> 张准 汪凤泉 编著 东南大学出版社 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. LInux命令执行http请求

    Linux下提供了一些命令可以直接执行http请求,下面举例来介绍几个命令. http // GET请求 http http://127.0.0.1:2379/version http GET htt ...

  2. Thymeleaf 条件语句

    Thymeleaf 条件语句  Posted on 2017-09-15 if 与 unless 假如现在有一个商品列表,当商品有评论时,显示view按钮,否则不显示.这时候就可以使用Thymelea ...

  3. Java Tutorial

    http://www.tutorialspoint.com/java/index.htm

  4. __str__&__repr__

    [__str__&__repr__] object.__str__(self): Called by the str() built-in function and by the print  ...

  5. MyCat的安装及基本使用(MySQL分库分表)

    1.Mycat的简介 1.1 数据库集群产生的背景 如今随着互联网的发展,数据的量级也是成指数的增长,从GB到TB到PB.对数据的各种操作也是愈加的困难,传统的关系性数据库已经无法满足快速查询与插入数 ...

  6. 欲望都市游戏设计 背景图层和UI图层的设计

  7. 92. Reverse Linked List II (List)

    Reverse a linked list from position m to n. Do it in-place and in one-pass. For example: Given 1-> ...

  8. jquery简单ajax示例_读取json文件数据

    来自于<jquery权威指南> -------------------------------------- 点击button后,获取到json文件数据,显示如下: Json文件: [ { ...

  9. [Fiddler] 在 Composer 中对HTTP报文进行编辑,重新执行

    如果想要对某个HTTP请求进行编辑,然后重新执行观察结果,可以将这个报文从左侧拖放到右侧的Composer里面 这样就可以很方便的修改HTTP请求的方法,报文头,报文体 在用 SoapUI 做 API ...

  10. Java 前台后台数据传递、中文乱码解决方法

    1.向前台传递数据;2.向后台传递数据;3.ajax post 提交数据到服务端时中文乱码解决方法;4.数组类型参数传递; 1.向前台传递数据:1.1 字符串数据传递:  这种方式只是单一的向前台传递 ...