📄 sample3_15.cs
字号:
/*
* 示例程序Sample3_15: Matrix类的实对称三对角阵的全部特征值与特征向量的计算
*/
using System;
using CSharpAlgorithm.Algorithm;
namespace CSharpAlgorithm.Sample
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
// 矩阵数据
double[] mtxData16 = {
10.0,1.0,2.0,3.0,4.0,
1.0,9.0,-1.0,2.0,-3.0,
2.0,-1.0,7.0,3.0,-5.0,
3.0,2.0,3.0,12.0,-1.0,
4.0,-3.0,-5.0,-1.0,15.0};
// 构造矩阵
Matrix mtx16 = new Matrix(5, 5, mtxData16);
// 实对称三对角阵的全部特征值与特征向量的计算
Matrix mtxQ2 = new Matrix();
Matrix mtxT2 = new Matrix();
double[] bArray2 = new double[mtx16.GetNumColumns()];
double[] cArray2 = new double[mtx16.GetNumColumns()];
// 1: 约化对称矩阵为对称三对角阵: 豪斯荷尔德变换法
if (mtx16.MakeSymTri(mtxQ2, mtxT2, bArray2, cArray2))
{
// 2: 计算全部特征值与特征向量
if (mtx16.ComputeEvSymTri(bArray2, cArray2, mtxQ2, 60, 0.0001))
{
Console.WriteLine("特征值=");
String s = "";
for (int i=0; i<mtxQ2.GetNumColumns(); ++i)
{
s += bArray2[i].ToString("F") + ", ";
}
Console.WriteLine(s);
Console.WriteLine("-------------------------------");
Console.WriteLine("对应的特征向量=");
for (int i=0; i<mtxQ2.GetNumColumns(); ++i)
{
Console.WriteLine(mtxQ2.ToStringCol(i, ", "));
}
}
else
{
Console.WriteLine("失败");
}
}
else
{
Console.WriteLine("失败");
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -