|
#include "stdafx.h"
#include "orsciJWVCL.h"
#include "orsciVM.h"
using namespace orsci;
using namespace orsci::vmt;
int main()
{
cout << " orsci: 特征值与特征向量eig_gen(...)与eig_sym(...) ... http://www.orsci.cn" << endl;
cout << endl;
mdouble X;
//X = "-1, 2, 2; 2, -1, -2; 2, -2, -1";
//X = "2,-1,0,0;-1,2,-1,0;0,-1,2,-1;0,0,-1,2";
//X = "2,1,1;1,2,1;1,1,2;";
X = "1, -3, 3; 3, -5, 3; 6, -6, 4";
cout << "矩阵X= " << endl;
cout << X << endl;
cout << "一般方阵的特征值与特征向量:----------" << endl;
vdouble val_real, val_imag;
mdouble vect_real, vect_imag;
bool mFlag = vmt::eig_gen(X, val_real, val_imag, vect_real, vect_imag);
cout << "eig_gen(...)求解成功标记:" << mFlag << endl;
cout << "特征值的实部:" << endl;
cout << val_real << endl;
cout << "特征值的虚部:" << endl;
cout << val_imag << endl;
cout << "特征向量的实部:" << endl;
cout << vect_real << endl;
cout << "特征向量的虚部:" << endl;
cout << vect_imag << endl;
cout << "=======================================" << endl;
cout << "对称矩阵的特征值与特征向量:----------" << endl;
cout << "模拟一个对称矩阵。这里使用sym = X.T() * X来模拟!" << endl;
mdouble sym = X.T() * X;
cout << "sym = " << endl;
cout << sym << endl;
vdouble eigval;
mdouble eigvect;
mFlag = vmt::eig_sym(sym, eigval, eigvect);
cout << "特征值:" << endl;
cout << eigval << endl;
cout << "特征向量:" << endl;
cout << eigvect << endl;
cout << endl;
cout << "press any key to stop..." << endl;
char pp;
cin >> pp;
return 0;
} |
输出 |
(一)运行结果
orsci: 特征值与特征向量eig_gen(...)与eig_sym(...) ... http://www.orsci.cn
矩阵X=
rowCount = 3 colCount = 3
1 -3 3
3 -5 3
6 -6 4
一般方阵的特征值与特征向量:----------
eig_gen(...)求解成功标记:1
特征值的实部:
4 -2 -2
特征值的虚部:
0 1.10466e-015 -1.10466e-015
特征向量的实部:
rowCount = 3 colCount = 3
-0.408248 0.244001 0.244001
-0.408248 -0.416219 -0.416219
-0.816497 -0.66022 -0.66022
特征向量的虚部:
rowCount = 3 colCount = 3
0 -0.407022 0.407022
0 -0.407022 0.407022
0 0 -0
=======================================
对称矩阵的特征值与特征向量:----------
模拟一个对称矩阵。这里使用sym = X.T() * X来模拟!
sym =
rowCount = 3 colCount = 3
46 -54 36
-54 70 -48
36 -48 34
特征值:
0.43968 4 145.56
特征向量:
rowCount = 3 colCount = 3
-0.24283 -0.801784 0.546055
-0.671563 -0.267261 -0.691068
-0.700027 0.534522 0.473549
press any key to stop...
(二)说明:
(1)矩阵的特征值和特征向量,有着较多应用,eig_gen(...)和eig_sym(...)可以完成特征值和特征向量求解。
(2)关于向量与矩阵,请参看书籍:姜维. 《数据分析与数据挖掘》、《数据分析与数据挖掘实践》。
(6)orsci包支持向量和矩阵计算,可下载配套软件orsci-art应用。 |