C# 顺序高斯(Gauss)消去法计算一元多次方程组
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace zblGauss1
{
class Program
{
static void Main(string[] args)
{
double[,] a = { { 8.1, 2.3, -1.5, 6.1 }, { 0.5, -6.23, 0.87, 2.3 }, { 2.5, 1.5, 10.2, 1.8 } };
//double[,] a = { { 2, -1, 3, 1 }, { 4, 2, 5, 4 }, { 1, 2, 0, 7 } };
int n = a.GetLength();//数组a的第一维长度,即行数,3
double[] x = new double[n];//存放解的数组,初始值为0 Gauss1(n, a, x);//调用Gauss1 方法计算用顺序高斯消去法计算一元多次方程组
Console.WriteLine("方程的根为:");//输出方程组的根
for (int i = ; i < n; i++)
{
Console.Write("x{0}={1,10:F10}, ", i, x[i]);
}
} //利用顺序高斯Gauss消元法求一元多次线性方程组的解
public static void Gauss1(int n, double[,] a, double[] x)//写了一个静态方法,方法可以在别的方法中直接调用,不必声明对象然后调用对象中的方法了
{
Console.WriteLine("-----------利用顺序高斯Gauss消元法求线性方程组的解----------");
Console.WriteLine("要计算的增广矩阵a为:");
printArray(n, a); //消元过程
for (int k = ; k < n - ; k++)//k=0 1 ,弄出来两个主元即可 ,两次大循环,此称为1层循环 ---主元---
{
for (int i = k; i < n - ; i++)//每个大循环中 要对主元素下面所有元素变化为零,, ---行--- ,i= 0 1 ,此称为2层循环
{
double m = a[i + , k] / a[k, k];//可能用到多次,在此将化零因子放入m中
for (int j = k; j <= n; j++) //2层循环中要对每行所有元素都做相同变化, ---列--- , j=
{
a[i + , j] = a[i + , j] - m * a[k, j];//由于第一行第一列元素不用化零,故首先从i+1开始,同列所以后面都是j,k处为主元行处
}
Console.WriteLine("第{0}个主元第{1}次变换后增广矩阵为:", k, i);
printArray(n, a);
}
Console.WriteLine();
} //回代过程
for (int k = n - ; k >= ; k--) //k=2 1 0 从最后一行开始往前迭代
{
double addResult = 0.0;//用于存放已知的未知数代入相应式子中之和,换一行计算时需要清零,故放在此处
for (int j = k; j < n - ; j++)//j=2 j 最大值为2,每行未知数可能不止一个,故需要遍历已知的未知数并代入
{
addResult = addResult + x[j + ] * a[k, j + ];//k代表计算的行,j+1代表的列,系数与解要对应,故都为 j+1
}
x[k] = (a[k, n] - addResult) / a[k, k];//本行的未知数用本行最右边数-本行已知未知数代入系数之差 再除以本未知数系数
} }
public static void printArray(int n, double[,] a)
{
for (int i = ; i < n; i++)
{
for (int j = ; j <= n; j++)
{
Console.Write("{0,10:F6}", a[i, j]);
}
Console.WriteLine();
} }
}
}

高斯消去法由消元和回代两个过程组成。消元就是对增广矩阵做有限次的初等行变换,使它的系数矩阵部分变为一个上三角矩阵。所用的初等行变换主要有两种:第一种,交换两行的位置;第二种,用一个数乘某一行加到另一行上。
经过n-1次消元后,原增广矩阵变为行阶梯矩阵。
高斯消去法分为顺序高斯消去法和列主元素消去法两种。
顺序高斯消去法:在消元过程中对增广矩阵只做前述的第二种初等行变换就形成了顺序Gauss消去法。
原创, 转载请注明出处,谢谢。
C# 顺序高斯(Gauss)消去法计算一元多次方程组的更多相关文章
- C# 列主元素(Gauss)消去法 计算一元多次方程组
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- (原创)列主元Gauss消去法的通用程序
import numpy as np np.set_printoptions(precision=5) A = np.array([[31., -13., 0., 0., 0., -10., 0., ...
- C语言简单计算一元二次方程
#include <stdio.h> #include <math.h> /*计算一元二次方程的根*/ void Cal(double a,double b,double c) ...
- 计算一元一次方程Y=kX+b
开发过程中用不到一元一次方程吗?非也,iOS开发中经常会遇到根据某个ScrollView动态偏移量的值来实时设置一个View的透明度,你敢说你不用一元一次方程你能搞定? 想把一个动画效果做好,经常会遇 ...
- poj 2065 高斯消元(取模的方程组)
SETI Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 1735 Accepted: 1085 Description ...
- python3 练手实例2 解一元二次方程组
import math def y(): a,b,c=map(float,input('请输入一元二次方程式ax^2+bx+c=0,abc的值,用空格隔开:').split()) d=math.pow ...
- 【dfs】【高斯消元】【异或方程组】bzoj1770 [Usaco2009 Nov]lights 燈 / bzoj2466 [中山市选2009]树
经典的开关灯问题. 高斯消元后矩阵对角线B[i][i]若是0,则第i个未知数是自由元(S个),它们可以任意取值,而让非自由元顺应它们,得到2S组解. 枚举自由元取0/1,最终得到最优解. 不知为何正着 ...
- 【高斯消元】【异或方程组】poj1222 EXTENDED LIGHTS OUT
由于每个点的状态受到其自身和周围四个点的影响,所以可以这样建立异或方程组: 引用题解: http://hi.baidu.com/ofeitian/item/9899edce6dc6d3d2974452 ...
- 【高斯消元】【异或方程组】【bitset】bzoj1923 [Sdoi2010]外星千足虫
Xor方程组解的个数判定: ——莫涛<高斯消元解Xor方程组> 使用方程个数判定:消去第i个未知数时,都会记录距第i个方程最近的第i位系数不为0の方程是谁,这个的max就是使用方程个数. ...
随机推荐
- 高DPI设置时禁用显示的方法
在注册表 [HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers] 中添加exe的完 ...
- JavaScript原型理解
这东西我还不是很理解,但是把自己实践的过程记录下来,希望积累到一定程度,能自然而而然的理解了.很多东西我是这样慢慢理解的,明白为啥是那样子,真的很神奇哦.少说废话,开始吧. 可以先阅读这篇文章 fun ...
- javascript百度地图添加一个普通标注点(2014-3-8 记)
1.导入jquery.js文件:<script type="text/javascript" src="js/jquery.js"></scr ...
- Dinic算法模板
详解:http://blog.csdn.net/wall_f/article/details/8207595 算法时间复杂度:O(E * V * V) #include <cstdio> ...
- win7 APPCRASH问题解决!
真是废了老劲了..什么清理插件,各种运行msconfig/启动都试了 问题:**.exe已停止工作 问题事件名称: APPCRASH 应用程序名: compute_image_mean.exe 应用程 ...
- Prince2的七大原则(6)
Prince2科普_Prince2的七大原则(6) 按照惯例我们先来回顾一下,PRINCE2七大原则分别是指:持续的业务验证,经验学习,角色与责任,按阶段管理,例外管理,关注产品,剪裁. 今天讲第六个 ...
- zigbee学习之路(九):串口(发送)
一.前言 今天,我们来学习和实验串口模块方面的,串口通信是我们常用的通信手段,通过串口交互,我们可以很容易的和pc机进行数据的交换和发送,所以我们今天就来学习一下.这个实验所进行的功能是一开始CC25 ...
- 使用git建立远程仓库,让别人git clone下来
首先, 如果你的ssh没有安装的话,要安装ssh服务端.ubuntu是很简单 sudo apt-get install openssh-server 1,建立你的git 目录. ourunix@ubu ...
- 来自苹果的编程语言——Swift简介转载】
关于 这篇文章简要介绍了苹果于WWDC 2014发布的编程语言——Swift. 原文作者: Lucida Blog 新浪微博 豆瓣 转载前请保留出处链接,谢谢. 前言 在这里我认为有必要提一下Brec ...
- Autofac 解释第一个例子 《第一篇》
Autofac是一个轻量级的依赖注入的框架,同类型的框架还有Spring.NET,Unity,Castle等. Autofac的使用有一个非常让人郁闷的地方,就是服务器要求安装有Microsoft . ...