C#--Gauss消元之完全主元法
Gauss完全主元法
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();}}
}
![](/assets/blank.gif)
C#--Gauss消元之完全主元法相关推荐
- 线性代数 --- Gauss消元的部分主元法和完全主元法
Gauss消元的部分主元法和完全主元法 心怀二意的人,在他一切所行的路上都没有定见.----雅各书1章8节 笔者的一些话:刚开始写这篇文章的时候,我觉得高斯消元很简单.因为,这时的我已经完成了我一直想 ...
- 51nod1446 Kirchhoff矩阵+Gauss消元+容斥+折半DFS
思路: //By SiriusRen #include <cstdio> #include <cstring> #include <algorithm> using ...
- 【C++】高斯消元算法
矩阵初等行变换法则 任一行可以与另一行进行加减. 任一行可以乘或除以一个非零常数(除其实就是乘一个倒数). 任两行可以交换位置. 线性方程组 形如 a1,1x1+a1,2x2+⋯+a1,nxn=b1a ...
- MIT 18.06 Gilbert Strang《线性代数》L2. 矩阵消元
这里是 MIT 18.06 Gilbert Strang<线性代数>笔记汇总. 消元法 有三元方程组 {x+2y+z=23x+8y+z=124y+z=2\begin{cases}x& ...
- 矩阵消元-线性代数课时2(MIT Linear Algebra , Gilbert Strang)
这是Strang教授的第二讲,讲解了求线性方程组的一种系统方法:消元法(Gaussian elimination),它的核心思想是行变换.本课时的几个核心知识点:消元.回代.消元过程的矩阵描述和逆矩阵 ...
- [学习笔记]高斯消元求解两种特殊问题(带状矩阵/主元法)
本文章是[学习笔记]概率与期望进阶的一部分 由于时间问题我写的比较简略,所以我把大佬的总结链接贴上来了(应该没什么吧qwq). 1 概述 最常见的当然是随机游走问题了- • fu=∑pu,v∗(fv+ ...
- [TopCoder 12984] TorusSailing(高斯消元主元法优化)
文章目录 题面 分析 代码 题面 Vjudge TorusSailing 分析 首先得到一个DP方程dp[i][j]=12(dp[(i+1)mod N][j]+dp[i][(j+1)mod M])+1 ...
- Gauss完全主元法(C#实现)——计算方法
Gauss完全主元法(C#实现)--计算方法 代码思路: Gauss完全主元法是在高斯消元法的基础上增加了找主元,换行,换列这三个方法,因此它可以继承高斯消元法类,如有需要可以看我在计算方法分类专栏写 ...
- 计算机编程 高斯消元,高斯-若尔当消元法
高斯-若尔当消元法(英语:Gauss-Jordan Elimination),或译为高斯-约旦消元法,简称G-J消元法,是数学中的一个算法,是高斯消元法的另一个版本.它在线性代数中用来找出线性方程组的 ...
最新文章
- 什么是生存分析(survival analysis)?
- 全面快速准确地检索医学文献信息的策略
- maven项目,提示One or more constraints have not been satisfied
- python调试器入门教程_PyCharm入门第一步(二)——调试第一个Python应用|python基础教程|python入门|python教程...
- phpstud如何安装mysql新版_MySQL_图解MySQL数据库的安装和操作,一、MySQL下载与安装 1、 - phpStudy...
- python展开 c函数中的宏预处理_C 语言常用的预处理-宏函数
- 不可小视的贝叶斯(一)
- springcloud服务熔断和服务降级的自我理解
- SAP License:第三方运输业务的外币付款处理
- 分布式事务键值数据库 TiKV 加入 CNCF 沙箱孵化器
- Java nginx 双向ssl_nginx配置ssl双向验证 nginx https ssl证书配置
- java同步器有哪些_Java 队列同步器 AQS
- python实现微信机器人: AI智能回复
- 百度CTO李一男:未来五年电子商务是关注重点
- VUE-amap遇到的坑和总结
- 登录模板源码 : bootstrap风格
- 内存管理之:页和页框地址变换结构
- 统计学基础知识(三)
- 群晖NAS的公网、NAT、DDNS、证书等配置三
- k神讲故事-金融的结局