📄 class1.cs
字号:
using System;
namespace ConsoleApplication1
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
class Class1
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
Console.WriteLine("\t*************线性方程组求解事例:***************\n");
MLinearEquation LinearEquation=new MLinearEquation();
//////////////////////////////////////////////////////////////////////////////////
/////1全选主元高斯消去法求AX=b的解
double [,] dma1=new double [,] //实系数矩阵
{
{0.2368, 0.2471, 0.2568, 1.2671},
{0.1968, 0.2071, 1.2168, 0.2271},
{0.1581, 1.1675, 0.1768, 0.1871},
{1.1161, 0.1254, 0.1397, 0.1490}
};
double [] dmb1 = new double []
{1.8471, 1.7471, 1.6471, 1.5471};
MMatrix Matrix_a1=new MMatrix(dma1);
Console.WriteLine("事例1:用全选主元高斯消去法求AX=b的解");
Console.WriteLine("其中A为:");
Matrix_a1.MMatrixLinePrint();
Console.WriteLine("其中b为:");
for(int i=0;i<4;i++)
Console.WriteLine(dmb1[i]);
LinearEquation.MLE_TotalChoiceGauss(Matrix_a1,dmb1);//****************数组b的值改变用来存储结果
Console.WriteLine("求解的X为:");
for(int i=0;i<4;i++)
Console.WriteLine(dmb1[i]);
///////////////////////////////////////////////////////////////////////
///2全选主元高斯-约当消去法求AX=B的解
double[,] dma2 =new double[,]
{
{1.0, 3.0, 2.0, 13.0},
{7.0, 2.0, 1.0, -2.0},
{9.0, 15.0, 3.0, -2.0},
{-2.0, -2.0, 11.0, 5.0}
};
double[,] dmb2 =new double[,]
{
{9.0, 0.0},
{6.0, 4.0},
{11.0, 7.0},
{-2.0, -1.0}
};
MMatrix Matrix_a2=new MMatrix(dma2);
MMatrix Matrix_b2=new MMatrix(dmb2);
Console.WriteLine("\n事例2:用全选主元高斯-约当消去法求AX=B的解");
Console.WriteLine("其中A为:");
Matrix_a2.MMatrixLinePrint();
Console.WriteLine("其中B为:");
Matrix_b2.MMatrixLinePrint();
LinearEquation.MLE_TotalChoiceGaussJordan(Matrix_a2,Matrix_b2);/////////////////////Matrix_b2用来存储结果
Console.WriteLine("求解的X为:");
Matrix_b2.MMatrixLinePrint();
//////////////////////////////////////////////////////////////////////////////////
///////3三对角方程组的追赶法
double [] dmb3 = new double []
{
13.0, 12.0,
11.0, 10.0, 9.0,
8.0, 7.0, 6.0,
5.0, 4.0, 3.0,
2.0, 1.0
};
double [] dmd3 = new double []
{3.0, 0.0, -2.0, 6.0, 8.0};
Console.WriteLine("\n事例3:用三对角方程组的追赶法求AX=D的解");
LinearEquation.MLE_TridiagonalEquationGauss(dmb3,dmd3);/////////////////////dmd3用来存储结果
Console.WriteLine("求解的X为:");
for(int j=0;j<5;j++)
Console.WriteLine(dmd3[j]);
//////////////////////////////////////////////////////////////////////////////////
///////4一般带型方程组求解其中il=2l+1s
double [,] dmb4 = new double [,]
{
{ 3.0, -4.0, 1.0, 0.0, 0.0},
{-2.0, -5.0, 6.0, 1.0, 0.0},
{ 1.0, 3.0, -1.0, 2.0, -3.0},
{ 2.0, 5.0, -5.0, 6.0, -1.0},
{-3.0, 1.0, -1.0, 2.0, -5.0},
{ 6.0, 1.0, -3.0, 2.0, -9.0},
{-4.0, 1.0, -1.0, 2.0, 0.0},
{ 5.0, 1.0, -7.0, 0.0, 0.0}
};
double [,] dmd4 = new double [,]
{
{ 13.0, 29.0, -13.0},
{ -6.0, 17.0, -21.0},
{-31.0, -6.0, 4.0},
{ 64.0, 3.0, 16.0},
{-20.0, 1.0, -5.0},
{-22.0, -41.0, 56.0},
{-29.0, 10.0, -21.0},
{ 7.0, -24.0, 20.0}
};
MMatrix Matrix_b4=new MMatrix(dmb4);
MMatrix Matrix_d4=new MMatrix(dmd4);
Console.WriteLine("\n事例4:一般带型方程组求解AX=D的解");
Console.WriteLine("其中A为:");
Matrix_b4.MMatrixLinePrint();
Console.WriteLine("其中D为:");
Matrix_d4.MMatrixLinePrint();
LinearEquation.MLE_StrapEquationGauss(Matrix_b4,Matrix_d4,2,5);////////////////Matrix_d4要被改变用来存储结果
Console.WriteLine("求解的X为:");
Matrix_d4.MMatrixLinePrint();
//////////////////////////////////////////////////////////////////////////////////
///////5对称方程组的分解法
double [,] dma5 = new double [,]
{
{5.0, 7.0, 6.0, 5.0, 1.0},
{7.0, 10.0, 8.0, 7.0, 2.0},
{6.0, 8.0, 10.0, 9.0, 3.0},
{5.0, 7.0, 9.0, 10.0, 4.0},
{1.0, 2.0, 3.0, 4.0, 5.0}
};
double [,] dmc5 = new double [,]
{
{24.0, 96.0},
{34.0, 136.0},
{36.0, 144.0},
{35.0, 140.0},
{15.0, 60.0}
};
MMatrix Matrix_a5=new MMatrix(dma5);
MMatrix Matrix_c5=new MMatrix(dmc5);
Console.WriteLine("\n事例5:对称方程组的分解法求解AX=C的解,其中A为对称矩阵");
Console.WriteLine("其中A为:");
Matrix_a5.MMatrixLinePrint();
Console.WriteLine("其中C为:");
Matrix_c5.MMatrixLinePrint();
LinearEquation.MLE_SymmetryEquation(Matrix_a5,Matrix_c5);//////////Matrix_c5要被改变用来存储结果
Console.WriteLine("求解的X为:");
Matrix_c5.MMatrixLinePrint();
//////////////////////////////////////////////////////////////////////////////////
///////6对称正定方程组的平方根法
double [,] dma6 = new double [,]
{
{5.0, 7.0, 6.0, 5.0},
{7.0, 10.0, 8.0, 7.0},
{6.0, 8.0, 10.0, 9.0},
{5.0, 7.0, 9.0, 10.0}
};
double [,] dmd6 = new double [,]
{
{23.0, 92.0},
{32.0, 128.0},
{33.0, 132.0},
{31.0, 124.0}
};
MMatrix Matrix_a6=new MMatrix(dma6);
MMatrix Matrix_d6=new MMatrix(dmd6);
Console.WriteLine("\n事例6:对称正定方程组的平方根法求解AX=D的解,其中A为对称矩阵");
Console.WriteLine("其中A为:");
Matrix_a6.MMatrixLinePrint();
Console.WriteLine("其中D为:");
Matrix_d6.MMatrixLinePrint();
Console.WriteLine("求解的X为:");
LinearEquation.MLE_SymmetryRegularEuationSquareRoot(Matrix_a6,Matrix_d6);//////////Matrix_d6用来存储结果
Matrix_d6.MMatrixLinePrint();
//////////////////////////////////////////////////////////////////////////////////
/////7大型稀疏方程组全选主元高斯-约当(Gauss-Jordan)法
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -