OpenCascade Eigenvalues and Eigenvectors of Square Matrix
OpenCascade Eigenvalues and Eigenvectors of Square Matrix
Abstract. OpenCascade use the Jacobi method to find the eigenvalues and the eigenvectors of a real symmetric square matrix. Use class math_Jacobi to computes all eigenvalues and eigenvectors by using Jacobi method. The exception NotSquare is raised if the matrix is not square. No verification that the matrix is really symmetric is done.
Key words. Eigenvalues, Eigenvectors, OpenCascade, Matrix, Jacobi method,
1. Introduction
工程技术中的一些问题,如振动问题和稳定性问题,常可归结为求一个方阵的特征值和特征向量的问题。数学中诸如方阵的对角化及解常微分方程等问题,也都有要用到特征值的理论。
定义:设A是n阶矩阵,如果数λ和n维非零列向量x使关系式 Ax = λx成立,那么这样的数λ称为方阵A的特征值,非零向量x称为A对应于特征值λ的特征向量。
推论:若n阶矩阵A与对角阵
![]()
相似,则λ1,λ2,...,λn即是A的n个特征值。
定理:n阶矩阵A与对角阵相似(即A能对角化)的充分必要条件是A有n个线性无关的特征向量。
推论:如果n阶矩阵A的n个特征值互不相等,则A与对角阵相似。
当A的特征方程有重根时,就不一定有n个线性无关的的特征向量,从而不一定能对角化。一个n阶矩阵具备什么条件才能对角化呢?这是一个较复杂的问题。
定理:设A为n阶对称阵,则有正交阵P,使
![]()
其中∧是以A的n个特征值为对角元的对角阵。
OpenCascacde中使用了Jacobi方法来计算对称方阵的特征值和特征向量。本文对math_Jacobi的使用进行详细说明。
2. Code Example
结合同济第四版《线性代数》中的例子,来验证Jacobi方法计算的结果。示例程序如下所示:
/*
* Copyright (c) 2014 eryar All Rights Reserved.
*
* File : Main.cpp
* Author : eryar@163.com
* Date : 2014-06-22 21:46
* Version : 1.0v
*
* Description : Demonstrate how to find the eigenvalues and
* eigenvectors for a symmetric square Matrix.
* 题目来自《线性代数》同济 第四版
*
*/ #define WNT #include <math_Jacobi.hxx> #pragma comment(lib, "TKernel.lib")
#pragma comment(lib, "TKMath.lib") /**
* OpenCascade use Jacobi method to find the eigenvalues and
* the eigenvectors of a real symmetric square matrix.
*/
void EvalEigenvalue(const math_Matrix &A)
{
math_Jacobi J(A); std::cout << A << std::endl; if (J.IsDone())
{
std::cout << "Jacobi: \n" << J << std::endl;
//std::cout << "Eigenvalues: \n" << J.Values() << std::endl;
//std::cout << "Eigenvectors: \n" << J.Vectors() << std::endl; for (Standard_Integer i = A.LowerRow(); i <= A.UpperRow(); ++i)
{
math_Vector V(, A.RowNumber()); J.Vector(i, V); std::cout << "Eigenvalue: " << J.Value(i) << std::endl;
std::cout << "Eigenvector: " << V << std::endl;
}
}
} void TestJacobi(void)
{
// 1. P120 Example 5:
math_Matrix A1(, , , , 0.0); A1(, ) = 3.0; A1(, ) = -1.0;
A1(, ) = -1.0; A1(, ) = 3.0; EvalEigenvalue(A1); // 2. P120 Example 6:
math_Matrix A2(, , , , 0.0); A2(, ) = -1.0; A2(, ) = 1.0; A2(, ) = 0.0;
A2(, ) = -4.0; A2(, ) = 3.0; A2(, ) = 0.0;
A2(, ) = 1.0; A2(, ) = 0.0; A2(, ) = 2.0; EvalEigenvalue(A2); // 3. P120 Example 7:
math_Matrix A3(, , , , 0.0); A3(, ) = -2.0; A3(, ) = 1.0; A3(, ) = 1.0;
A3(, ) = 0.0; A3(, ) = 2.0; A3(, ) = 0.0;
A3(, ) = -4.0; A3(, ) = 1.0; A3(, ) = 3.0; EvalEigenvalue(A3); // 4. P127 Example 12:
math_Matrix A4(, , , , 0.0); A4(, ) = 0.0; A4(, ) = -1.0; A4(, ) = 1.0;
A4(, ) = -1.0; A4(, ) = 0.0; A4(, ) = 1.0;
A4(, ) = 1.0; A4(, ) = 1.0; A4(, ) = 0.0; EvalEigenvalue(A4); // 5. P138 Execise 5(3);
math_Matrix A5(, , , , 0.0); A5(, ) = 1.0; A5(, ) = 2.0; A5(, ) = 3.0;
A5(, ) = 2.0; A5(, ) = 1.0; A5(, ) = 3.0;
A5(, ) = 3.0; A5(, ) = 3.0; A5(, ) = 6.0; EvalEigenvalue(A5);
} int main(int argc, char* argv[])
{
// The Jacobi method to find the eigenvalues and
// eigenvectors of a real symmetric square matrx.
// The exception NotSquare is raised if the matrix is not square.
// No verification that the matrix is really symmetric is done.
TestJacobi(); return ;
}
计算结果部分如下图所示:
![]()
Figure 2.1 Jacobi method Result
3. Conclusion
矩阵的特征值和特征向量的理论能用来求解微分方程组的问题。振动分析、现代控制理论中的数学模型都可归结为对微分方程组的求解。因此,对特征值和特征向量的数值计算有重要的意义。
OpenCascade中提供了使用Jacobi方法来计算特征值和特征向量的类math_Jacobi。从计算结果可以看出,math_Jacobi只对对称方阵的计算结果准确,若不是对称阵,则计算结果是不准确的。
会使用OpenCascade中现成的算法是一回事,能实现这些算法又是另外一回事。对计算特征值和特征向量的数值方法感兴趣的读者,可以参考《计算方法》或《数值分析》等相关书籍。
4. References
1. 同济大学应用数学系. 线性代数. 高等教育出版社. 2003
2. 易大义, 沈云宝, 李有法. 计算方法. 浙江大学出版社. 2002
3. 杨明, 李先忠. 矩阵论. 华中科技大学出版社. 2005
PDF Version: Eigenvalues and Eigenvectors of Square Matrix
OpenCascade Eigenvalues and Eigenvectors of Square Matrix的更多相关文章
- 方差variance, 协方差covariance, 协方差矩阵covariance matrix | scatter matrix | weighted covariance | Eigenvalues and eigenvectors
covariance, co本能的想到双变量,用于描述两个变量之间的关系. correlation,相关性,covariance标准化后就是correlation. covariance的定义: 期望 ...
- A.Kaw矩阵代数初步学习笔记 10. Eigenvalues and Eigenvectors
“矩阵代数初步”(Introduction to MATRIX ALGEBRA)课程由Prof. A.K.Kaw(University of South Florida)设计并讲授. PDF格式学习笔 ...
- m*n matrix min rank square matrix
m*n matrix m*n=1000 f(A)=25 https://www.cs.princeton.edu/courses/archive/spring12/cos598C/svdchapter ...
- <<Numerical Analysis>>笔记
2ed, by Timothy Sauer DEFINITION 1.3A solution is correct within p decimal places if the error is l ...
- <Numerical Analysis>(by Timothy Sauer) Notes
2ed, by Timothy Sauer DEFINITION 1.3A solution is correct within p decimal places if the error is l ...
- OpenCascade Matrix
OpenCascade Matrix eryar@163.com 摘要Abstract:本文对矩阵作简要介绍,并结合代码说明OpenCascade矩阵计算类的使用方法. 关键字Key Words:Op ...
- Matrix Factorization SVD 矩阵分解
Today we have learned the Matrix Factorization, and I want to record my study notes. Some kownledge ...
- A geometric interpretation of the covariance matrix
A geometric interpretation of the covariance matrix Contents [hide] 1 Introduction 2 Eigendecomposit ...
- What is an eigenvector of a covariance matrix?
What is an eigenvector of a covariance matrix? One of the most intuitive explanations of eigenvector ...
随机推荐
- 采用Lambda表达式快速实现实体模型对象转换到DTO
在项目中,采用code first时建立的模型对象不能直接用于数据传输,需要从新根据需求建立Dto对象 为什么需要建立Dto对象呢? DTO即数据传输对象.之前不明白有些框架中为什么要专门定义DTO来 ...
- [ACM训练] 算法初级 之 搜索算法 之 广度优先算法BFS (POJ 3278+1426+3126+3087+3414)
BFS算法与树的层次遍历很像,具有明显的层次性,一般都是使用队列来实现的!!! 常用步骤: 1.设置访问标记int visited[N],要覆盖所有的可能访问数据个数,这里设置成int而不是bool, ...
- Java技术体系图
Java程序员高级特性 反射.泛型.注释符.自动装箱和拆箱.枚举类.可变 参数.可变返回类型.增强循环.静态导入 核心编程 ...
- Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,Dubbo是一个分布式服务框架,在这种情况下诞生的.现在核心业务抽取出来,作为独立的服务,使 ...
- 前端工具之-- Sublime
开始学习前端知识,做一些笔记来记录下- 之前学习都是使用的dw 现在前端开发工具既轻便功能也够强大. 下面记录下常用的前端工具: Sublime3:需要安装第三方包,一般 Atom:继承度非常好 VS ...
- 一个简单的路由,用javascript实现
前端路由在很多开源的js类库框架中都得到支持,如angularJS,Backbone,Reactjs等等.前端路由和后端路由原理一样,是让所有的交互和展现在一个页面运行以达到减少服务器请求,提高客户体 ...
- Android 怎么退出整个应用程序?
方法一: 我们在写android应用程序时,经常会遇到想退出当前Acitivity,或者直接退出应用程序.我之前的一般操作是按返回键,或者直接按home键直接返回,其实这两种操作都没有关闭当前应用程序 ...
- VIPM 发布功能总结
前言 上一篇中,我们分析介绍了LabVIEW自带的安装发布功能,今天总结一下VIPM的发布功能. VIPM 提到LabVIEW,不能不提VI Package Manager (VIPM)这个工具包 ...
- WebP 原理和 Android 支持现状介绍(转)
本文为腾讯Bugly开发者社区 投稿,作者:soonlai,版权归原作者所有,未经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/582939577ef9c5b70855 ...
- USACO翻译:USACO 2014 DEC Silver三题
USACO 2014 DEC SILVER 一.题目概览 中文题目名称 回程 马拉松 奶牛慢跑 英文题目名称 piggyback marathon cowjog 可执行文件名 piggyback ma ...