一、目的

1、掌握高斯完全主元消去法基础原理
2、掌握高斯完全主元消去法解方程组的步骤
3、能用程序语言对Gauss完全主元消去法进行编程实现

二、代码

1、Program.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace 高斯完全主元
{class Program{//列互换static void ExchangeCol(int k,int jk,int n, double[,] a2,int[] iz){if (k == jk)return;for (int i = 1; i <= n; i++){double t = a2[i,k];a2[i,k] = a2[i,jk];a2[i,jk] = t;}//X下标互换int m = iz[k];iz[k] = iz[jk];iz[jk]=m;//Console.WriteLine("{0}列--{1}列--互换", k, jk);}//行互换static void ExchangeRow(int k,int ik,int n,double[,]a2){if (k == ik)return;for(int j=k;j<=n+1;j++){double t = a2[k, j];a2[k, j] = a2[ik, j];a2[ik, j] = t;}//Console.WriteLine("{0}行--{1}行--互换",k,ik);}//找主元static double  FindMaxIkJk(int k,int n,double[,]a,ref int ik,ref int jk){//ik = k;//jk = k;double max =Math.Abs( a[k, k]);for(int i=k;i<=n;i++){for (int j = k; j <= n; j++){if (max < Math.Abs(a[i, k])){ik = i;jk = j;max = Math.Abs(a[i, j]);}}}return max;}//输入static void Input(ref int n,ref double[,] a2,ref int[] iz){Console.WriteLine("请输入方程的阶数");n = int.Parse(Console.ReadLine());a2 = new double[n + 1, n + 2];iz = new int[n + 1];//  x=new double[n+1];Console.WriteLine("请输入方程的系数");for (int i=1;i<=n;i++){iz[i]= i;string r = Console.ReadLine();string[] rs = r.Split(' ');for (int j=1; j<=n+1; j++){a2[i, j] = double.Parse(rs[j - 1]);}}}//输出Astatic void OutputA( int n,  double[,] a){Console.WriteLine("A[i,j]如下");for (int i=1;i<=n;i++){for (int j = 1; j <= n+1; j++) {Console.Write("{0,8:f2}", a[i, j]);}Console.WriteLine();}}//消元static void CalcuA(int n,ref double[,]a,int []iz){Console.WriteLine("完全主元素消元");for(int k=1;k<=n-1;k++){Console.WriteLine("第{0}次消元",k);//找主元int ik=k, jk=k;double max = FindMaxIkJk(k, n, a,ref ik,ref jk);//行互换ExchangeRow(k, ik, n, a);ExchangeCol(k, jk, n, a,iz);for (int i=k+1;i<=n;i++){double lik = a[i, k] / a[k, k];for (int j=k+1;j<=n+1;j++){a[i, j] = a[i, j] - lik * a[k, j];}a[i, k] = 0;}OutputA(n,a);}Console.WriteLine("消元过程完毕,结果见下");}static void CalcuX(int n, double[,] a, ref double[] x,int []iz){x = new double[n + 1];//正在计算回代过程for (int i = n; i >= 1; i--){double sum = 0;for (int j = i + 1; j <= n; j++){sum += a[i, j] * x[iz[j]];}x[iz[i]] = (a[i, n + 1] - sum) / a[i, i];}}static void OutputX(double[] x){int n = x.Length - 1;Console.WriteLine("方程解如下");for(int i=1;i<=n; i++){Console.WriteLine("X[{0}]={1,8:f2}", i, x[i]);}}static void Main(string[] args){int n = 0;double[,] a = null;double[] x = null;int[] IZ = null;Input(ref n, ref a,ref IZ);OutputA(n, a);//消元CalcuA(n,ref a,IZ);OutputA(n, a);CalcuX(n, a, ref x,IZ);OutputX(x);Console.Read();}}
}

三、程序运行截图

C#实现Gauss完全主元消去法相关推荐

  1. 解线性方程组的python实现(1)——高斯主元消去法

    解线性方程组的python实现1--高斯主元消去法 1. 高斯(顺序)主元消去法 1.1 消去过程 1.2 回代过程求解 实现代码 2 列主元消去法 实现代码 3 高斯-约旦(Gauss-Jordan ...

  2. 数值分析—行主元消去法解线性方程组—FORTRAN程序

    数值分析-行主元消去法解线性方程组-FORTRAN程序 program main implicit none real8,dimension( :,: ),allocatable::A real8,d ...

  3. Gauss完全主元法(C#实现)——计算方法

    Gauss完全主元法(C#实现)--计算方法 代码思路: Gauss完全主元法是在高斯消元法的基础上增加了找主元,换行,换列这三个方法,因此它可以继承高斯消元法类,如有需要可以看我在计算方法分类专栏写 ...

  4. 数值计算(一)之解线性方程组(高斯消去法,列选主元消去法,全选主元消去法,杜立特尔分解,克洛特分解,乔里斯基分解)

    解线性方程组即解一个多元一次方程组,例如 目录 消去法 分解法 消去法 原理 没有学过高级的解法也没关系,凭借我们初高中的知识足以解决这个问题 这是一个多元一次方程组,拥有n个未知量,也有n方程 我们 ...

  5. 数值作业:Guass全选主元消去法之C语言代码

    全选主元的基本思想:当变换到第K步时,从系数矩阵的右下角(n-k+1)阶子阵中选取绝对值最大的元素,然后通过行变换与列变换将它交换到主元素a[k][k]的位置上.行变换是不影响最后求解的结果的,但是列 ...

  6. 计算机科学计算矩阵答案,计算机科学计算答案.doc

    计算机科学计算答案.doc 1. 上(下)三角矩阵的乘积.逆仍为上(下)三角矩阵 2. AB 与 BA 迹相同 trABtrBA,如果 A 或者 B 可逆,则 AB 与 BA 特征值相同 1. 1 1 ...

  7. 数值分析原理课程实验——(高斯)Gauss列主元消去法

    高斯(Gauss)列主元消去法 方法概要 待求问题 程序流程 程序代码 /*Matlab函数 function Result = Gauss(n, A, b)for k = 1:n-1max = ab ...

  8. C#--Gauss消元之完全主元法

    Gauss完全主元法 在k次消元的基础上加了换列操作,其他都一样. 主要部分换行换列: public double Findikjk(int k, ref int ik, ref int jk){do ...

  9. Guass列选主元消去法和三角分解法

    最近数值计算学了Guass列主消元法和三角分解法解线性方程组,具体原理如下: 1.Guass列选主元消去法对于AX =B 1).消元过程:将(A|B)进行变换为,其中是上三角矩阵.即: k从1到n-1 ...

最新文章

  1. 特斯拉遇上 CPU:程序员的心思你别猜
  2. 算法竞赛入门第二版解题报告
  3. SQL语言之索引(Oracle)
  4. vue中父子组件通信的坑
  5. SpringMVC的数据响应-回写数据-直接回写字符串(应用)
  6. SSH(Spring+Struts2+Hibernate)框架搭建步骤(含配置文件以及运行结果)
  7. 第123天:移动web开发中的常见问题
  8. tomcat报404
  9. 小强的HTML5移动开发之路(27)—— JavaScript回顾2
  10. java c 泛型 区别_为什么Javac会抱怨与类的类型参数无关的泛型?
  11. Android通过webservice连接SQLServer 详细教程(数据库+服务器+客户端)
  12. MSF-17010(永恒之蓝)复现
  13. 一个关于Linux Bridge配置的吐嘈
  14. 小米路由器显示无法连接到服务器,小米路由无法连接WIFI的五种解决方法【图解】...
  15. Linux中如何切换中文英文
  16. R计算两列数据的相关系数_使用R语言中的corrplot来绘制相关系数矩阵热图
  17. 1.1需求调研(一) - 需求调研的目的
  18. js实现简单打地鼠小游戏
  19. android 调用oracle,Android 调用WCF实例详解
  20. 乘法器的实现(阵列、Booth、Wallace)

热门文章

  1. 林轩田机器学习基石笔记6 - Theory of Generalization
  2. (function(){})()后面的()含义
  3. SharePoint2010资源库-视频库的使用
  4. 网站架构设计实战项目一
  5. [乡土民间故事_徐苟三传奇]第九回_小机灵撒谎没功夫
  6. 初学安装oracle11g遇到的问题,以及解决方案
  7. exchange java ews_Exchange服务器之使用EWS读取Exchange邮件
  8. [原创]分析某app直播地址的过程
  9. 理解C语言中的a++、a--和++a、--a
  10. 技术美术知识学习5200:光追相关概念介绍