⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 class1.cs

📁 通过托管实现的数值算法(线性方程组)
💻 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 + -