Gauss完全主元法

在k次消元的基础上加了换列操作,其他都一样。
主要部分换行换列;
public double  Findikjk(int k, ref int ik, ref int jk){double max = 0;ik = 0; jk = 0;for (int i = k; i < n; i++){for (int j = k; j < n; j++){if (Math.Abs(A[i, j]) > max){max = Math.Abs(A[i, j]);ik = i; jk = j;}}}return max;}public void Exchangi(int k,int ik){if ( k!= ik) //换行{for (int j = k; j < n + 1; j++){double t = a[k, j];a[k, j] = a[ik, j];a[ik, j] = t;}}else return;}public void Exchangj(int k,int jk){if (k != jk) //换列{for (int i = k; i < n; i++){double t = a[i, k];a[i, k] = a[i, jk];a[i, jk] = t;}int r = z[k];z[k] = z[jk];z[jk] = r;Console.WriteLine("---第{0}列和第{1}列交换----", k, jk);}else return;}
完整部分:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace Guass3
{public class Guass3{int[] z;private int n;public int N{get { return n; }set { n = value; }}private double[,] a;public double[,] A{get { return a; }set { a = value; }}private double[] x;public double[] X{get { return x; }set { x = value; }}//构造函数public void Input(){Console.WriteLine("请输入阶数:");n = Convert.ToInt32(Console.ReadLine());a = new double[n, n + 1];x = new double[n];z = new int[n + 1];Console.WriteLine("请输入各行系数:");for (int i = 0; i < n; i++){string s = Console.ReadLine();string[] ss = s.Split(' ', ',');for (int j = 0; j < n + 1; j++){a[i, j] = Convert.ToDouble(ss[j]);}}}public double  Findikjk(int k, ref int ik, ref int jk){double max = 0;ik = 0; jk = 0;for (int i = k; i < n; i++){for (int j = k; j < n; j++){if (Math.Abs(A[i, j]) > max){max = Math.Abs(A[i, j]);ik = i; jk = j;}}}return max;}public void Exchangi(int k,int ik){if ( k!= ik) //换行{for (int j = k; j < n + 1; j++){double t = a[k, j];a[k, j] = a[ik, j];a[ik, j] = t;}}else return;}public void Exchangj(int k,int jk){if (k != jk) //换列{for (int i = k; i < n; i++){double t = a[i, k];a[i, k] = a[i, jk];a[i, jk] = t;}int r = z[k];z[k] = z[jk];z[jk] = r;Console.WriteLine("---第{0}列和第{1}列交换----", k, jk);}else return;}public void Xiaoyuan3(){double max;int ik = 0, jk = 0;z = new int[n];for (int i=0;i<n;i++){z[i] = i;}for (int k = 0; k < n - 1; k++){max = Findikjk(k, ref ik, ref jk);if (max == 0) return;Exchangi(k, ik);Exchangj(k, jk);for (int i = k + 1; i < n; i++){double suma = 0; suma+= a[i, k] / a[k, k];for (int j = k; j < n + 1; j++)a[i, j] = a[i, j] - suma * a[k, j];}Console.WriteLine("\n第{0}次消元,系数为:", k + 1);for (int i = 0; i < n; i++){string s = null;for (int j = 0; j < n + 1; j++){s += string.Format("{0,8:f2}", a[i, j]);}Console.WriteLine(s);}}}public void Huidai3(){for (int i = n - 1; i >= 0; i--){double sum = 0;for (int j = i + 1; j < n; j++){sum+= a[i, j] * x[z[j]];}x[z[i]] = (a[i, n] - sum) / a[i, i];}Console.WriteLine("方程组的解为:");for (int i = 0; i < n; i++){Console.WriteLine("x{0}={1,6:f2};", i + 1, x[z[i]]);}}}class Program{static void Main(string[] args){Guass3 abc = new Guass3();abc.Input();abc.Xiaoyuan3();abc.Huidai3();}}
}
最终结果:
谢谢!!

C#--Gauss消元之完全主元法相关推荐

  1. 线性代数 --- Gauss消元的部分主元法和完全主元法

    Gauss消元的部分主元法和完全主元法 心怀二意的人,在他一切所行的路上都没有定见.----雅各书1章8节 笔者的一些话:刚开始写这篇文章的时候,我觉得高斯消元很简单.因为,这时的我已经完成了我一直想 ...

  2. 51nod1446 Kirchhoff矩阵+Gauss消元+容斥+折半DFS

    思路: //By SiriusRen #include <cstdio> #include <cstring> #include <algorithm> using ...

  3. 【C++】高斯消元算法

    矩阵初等行变换法则 任一行可以与另一行进行加减. 任一行可以乘或除以一个非零常数(除其实就是乘一个倒数). 任两行可以交换位置. 线性方程组 形如 a1,1x1+a1,2x2+⋯+a1,nxn=b1a ...

  4. MIT 18.06 Gilbert Strang《线性代数》L2. 矩阵消元

    这里是 MIT 18.06 Gilbert Strang<线性代数>笔记汇总. 消元法 有三元方程组 {x+2y+z=23x+8y+z=124y+z=2\begin{cases}x& ...

  5. 矩阵消元-线性代数课时2(MIT Linear Algebra , Gilbert Strang)

    这是Strang教授的第二讲,讲解了求线性方程组的一种系统方法:消元法(Gaussian elimination),它的核心思想是行变换.本课时的几个核心知识点:消元.回代.消元过程的矩阵描述和逆矩阵 ...

  6. [学习笔记]高斯消元求解两种特殊问题(带状矩阵/主元法)

    本文章是[学习笔记]概率与期望进阶的一部分 由于时间问题我写的比较简略,所以我把大佬的总结链接贴上来了(应该没什么吧qwq). 1 概述 最常见的当然是随机游走问题了- • fu=∑pu,v∗(fv+ ...

  7. [TopCoder 12984] TorusSailing(高斯消元主元法优化)

    文章目录 题面 分析 代码 题面 Vjudge TorusSailing 分析 首先得到一个DP方程dp[i][j]=12(dp[(i+1)mod N][j]+dp[i][(j+1)mod M])+1 ...

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

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

  9. 计算机编程 高斯消元,高斯-若尔当消元法

    高斯-若尔当消元法(英语:Gauss-Jordan Elimination),或译为高斯-约旦消元法,简称G-J消元法,是数学中的一个算法,是高斯消元法的另一个版本.它在线性代数中用来找出线性方程组的 ...

最新文章

  1. 什么是生存分析(survival analysis)?
  2. 全面快速准确地检索医学文献信息的策略
  3. maven项目,提示One or more constraints have not been satisfied
  4. python调试器入门教程_PyCharm入门第一步(二)——调试第一个Python应用|python基础教程|python入门|python教程...
  5. phpstud如何安装mysql新版_MySQL_图解MySQL数据库的安装和操作,一、MySQL下载与安装 1、 - phpStudy...
  6. python展开 c函数中的宏预处理_C 语言常用的预处理-宏函数
  7. 不可小视的贝叶斯(一)
  8. springcloud服务熔断和服务降级的自我理解
  9. SAP License:第三方运输业务的外币付款处理
  10. 分布式事务键值数据库 TiKV 加入 CNCF 沙箱孵化器
  11. Java nginx 双向ssl_nginx配置ssl双向验证 nginx https ssl证书配置
  12. java同步器有哪些_Java 队列同步器 AQS
  13. python实现微信机器人: AI智能回复
  14. 百度CTO李一男:未来五年电子商务是关注重点
  15. VUE-amap遇到的坑和总结
  16. 登录模板源码 : bootstrap风格
  17. 内存管理之:页和页框地址变换结构
  18. 统计学基础知识(三)
  19. 群晖NAS的公网、NAT、DDNS、证书等配置三
  20. k神讲故事-金融的结局

热门文章

  1. DB2 For AS400 字符函数
  2. 超级炫酷的idea特效power mode
  3. 考研邱关源电路总结第一章
  4. Android引入QMUI框架
  5. 30行代码,让27吨发电机原地爆炸
  6. 该掌握什么知识才能成为大数据架构师?
  7. mac本地忘记mysql数据库密码解决方案
  8. Solidworks 不能设置或者编辑材料,提示参数错误
  9. selenium3.x无头模式(headless)设置
  10. Zebra 打印机模板实现模板标签打印