iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >C#中高斯消元法的实现方法
  • 395
分享到

C#中高斯消元法的实现方法

2023-06-18 00:06:42 395人浏览 薄情痞子
摘要

这篇文章主要介绍“C#中高斯消元法的实现方法”,在日常操作中,相信很多人在C#中高斯消元法的实现方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#中高斯消元法的实现方法”的疑惑有所帮助!接下来,请跟着小编

这篇文章主要介绍“C#中高斯消元法的实现方法”,在日常操作中,相信很多人在C#中高斯消元法的实现方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#中高斯消元法的实现方法”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

C#算法应用之高斯消元法实现是如何的呢?我们在工程学习中经常会碰到线性方程组的求解,那么以下就是C#算法应用之高斯消元法实现代码:

// 程 序 名:GaussP1.cs  // 主要功能:利用高斯消元法求线性方程组的解  // 注意:  //     本程序详细地给出了中间过程,以便在调试时分析解题过程,适合于教学。  // 适合于实际计算的另一个程序名为:GuassP1.pas   using System;                                         // 引入System命名空间   namespace GaussP1  {    public class Program    {      public static void Main(string[] args)            // 主函数      {                                                 // 主函数开始        // 为了简化程序,本例只考虑方程组有***解的情况,不对其它情况进行判断。        // n是线性方程组的个数,数组a是增广矩阵,为了方便调试,在这里直接给n和        // 数组a赋值,在实际使用过程中要通过键盘读入它们的值        int n = 3;         double[,] a = {{2, -1, 3, 1}, {4, 2, 5, 4}, {1, 2, 0, 7}};        double[] x = new double[n];         Gauss(n, a, x);         // 输出方程组的解        Console.WriteLine("方程组的解为:");        for(int i = 0; i < n; i++) Console.Write("x({0})={1,8:F3} ", i, x[i]);        Console.WriteLine();      }       // 利用高斯消元法求线性方程组的解      public static void Gauss(int n, double[,] a, double[] x)      {        double d;         Console.WriteLine("高斯消去法解方程组的中间过程");        Console.WriteLine("============================");        Console.WriteLine("中间过程");        Console.WriteLine("增广矩阵:");        printArray(n, a); Console.WriteLine();                // 消元        for(int k = 0; k < n; k++)        {          Console.WriteLine("第{0}步", k + 1);          Console.WriteLine("初始矩阵:");          printArray(n, a); Console.WriteLine();           selectMainElement(n, k, a); // 选择主元素          Console.WriteLine("选择主元素后的矩阵:");          printArray(n, a); Console.WriteLine();           // for (int j = k; j <= n; j++ ) a[k, j] = a[k, j] / a[k, k];          // 若将下面两个语句改为本语句,则程序会出错,因为经过第1次循环          // 后a[k,k]=1,a[k,k]的值发生了变化,所以在下面的语句中先用d          // 将a[k,k]的值保存下来          d = a[k, k];          for (int j = k; j <= n; j++ ) a[k, j] = a[k, j] / d;          Console.WriteLine("将第{0}行中a[{0},{0}]化为1后的矩阵:", k + 1);          printArray(n, a); Console.WriteLine();           // Guass消去法与Jordan消去法的主要区别就是在这一步,Gauss消去法是从k+1          // 到n循环,而Jordan消去法是从1到n循环,中间跳过第k行          for(int i = k + 1; i < n; i++)          {             d = a[i, k];  // 这里使用变量d将a[i,k]的值保存下来的原理与上面注释中说明的一样             for (int j = k; j <= n; j++) a[i, j] = a[i, j] - d * a[k, j];          }           Console.WriteLine("消元后的矩阵:");          printArray(n, a); Console.WriteLine();        }         // 回代        x[n - 1] = a[n - 1, n];        for (int i = n - 1; i >= 0; i--)        {          x[i] = a[i, n];          for (int j = i + 1; j < n; j++) x[i] = x[i] - a[i, j] * x[j];        }      }       // 选择主元素      public static void selectMainElement(int n, int k, double[,] a)      {        // 寻找第k列的主元素以及它所在的行号        double t, mainElement;            // mainElement用于保存主元素的值        int l;                            // 用于保存主元素所在的行号         // 从第k行到第n行寻找第k列的主元素,记下主元素mainElement和所在的行号l        mainElement = Math.Abs(a[k, k]);  // 注意别忘了取绝对值        l = k;        for(int i = k + 1; i < n; i++)        {          if (mainElement < Math.Abs(a[i, k]))          {            mainElement = Math.Abs(a[i, k]);            l = i;                        // 记下主元素所在的行号          }        }         // l是主元素所在的行。将l行与k行交换,每行前面的k个元素都是0,不必交换        if (l != k)        {          for (int j = k; j <= n; j++)          {             t = a[k, j]; a[k, j] = a[l, j]; a[l, j] = t;          }        }      }       // 打印矩阵      public static void printArray(int n, double[,] a)      {        for(int i = 0; i < n; i++)        {          for (int j = 0; j <= n; j++ ) Console.Write("{0,10:F6} ", a[i, j]);          Console.WriteLine();        }      }    }  }

C#算法应用之高斯消元法实现程序的运行结果:

高斯消去法解方程组的中间过程
中间过程

增广矩阵:

000000 -1.000000  3.000000  1.000000

000000  2.000000  5.000000  4.000000

000000  2.000000  0.000000  7.000000

第1步

初始矩阵:

000000 -1.000000  3.000000  1.000000

000000  2.000000  5.000000  4.000000

000000  2.000000  0.000000  7.000000

选择主元素后的矩阵:
4.000000  2.000000  5.000000  4.000000

000000 -1.000000  3.000000  1.000000

000000  2.000000  0.000000  7.000000

将第1行中a[1,1]化为1后的矩阵

000000  0.500000  1.250000  1.000000

000000 -1.000000  3.000000  1.000000

000000  2.000000  0.000000  7.000000

消元后的矩阵

000000  0.500000  1.250000  1.000000

0.000000 -2.000000  0.500000 -1.000000

0.000000  1.500000 -1.250000  6.000000

第2步

初始矩阵:

000000  0.500000  1.250000  1.000000

0.000000 -2.000000  0.500000 -1.000000

0.000000  1.500000 -1.250000  6.000000

选择主元素后的矩阵:

000000  0.500000  1.250000  1.000000

0.000000 -2.000000  0.500000 -1.000000

0.000000  1.500000 -1.250000  6.000000

将第2行中a[2,2]化为1后的矩阵

000000  0.500000  1.250000  1.000000

0.000000  1.000000 -0.250000  0.500000

0.000000  1.500000 -1.250000  6.000000

消元后的矩阵

000000  0.500000  1.250000  1.000000

0.000000  1.000000 -0.250000  0.500000

0.000000  0.000000 -0.875000  5.250000

第3步

初始矩阵:

000000  0.500000  1.250000  1.000000

0.000000  1.000000 -0.250000  0.500000

0.000000  0.000000 -0.875000  5.250000

选择主元素后的矩阵:

000000  0.500000  1.250000  1.000000

0.000000  1.000000 -0.250000  0.500000

0.000000  0.000000 -0.875000  5.250000

将第3行中a[3,3]化为1后的矩阵

000000  0.500000  1.250000  1.000000

0.000000  1.000000 -0.250000  0.500000

0.000000  0.000000  1.000000 -6.000000

消元后的矩阵

000000  0.500000  1.250000  1.000000

0.000000  1.000000 -0.250000  0.500000

0.000000  0.000000  1.000000 -6.000000

方程组的解为:

x(1)=9.000  x(2)=-1.000  x(3)=-6.000

到此,关于“C#中高斯消元法的实现方法”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: C#中高斯消元法的实现方法

本文链接: https://www.lsjlt.com/news/294864.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C#中高斯消元法的实现方法
    这篇文章主要介绍“C#中高斯消元法的实现方法”,在日常操作中,相信很多人在C#中高斯消元法的实现方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#中高斯消元法的实现方法”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-06-18
  • C#算法之实现阿姆斯特朗数
    阿姆斯特朗数 阿姆斯特朗数是一个数字,等于每个数字的幂乘以总位数。 例如,诸如0、1、153、370、371和407、1634、8208、9474的数字是阿姆斯特朗数。 例如: 37...
    99+
    2024-04-02
  • python基于pygame实现俄罗斯方块的方法
    小编给大家分享一下python基于pygame实现俄罗斯方块的方法,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一、简单说明90后的小伙伴都玩过“俄罗斯方块”,那种“叱咤风云”场景 偶尔闪现在脑海 真的是太爽了;如果没有来...
    99+
    2023-06-06
  • css中实现元素垂直居中的方法
    本篇文章给大家分享的是有关css中实现元素垂直居中的方法,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。【一】知道居中元素的宽高absolute + 负margin代码实现.wr...
    99+
    2023-06-08
  • css实现渐渐消失的方法
    这篇文章主要介绍css实现渐渐消失的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!css中可用“@keyframes”规则和animation属性配合opacity属性实现渐渐消失效果;首先用“@keyframe...
    99+
    2023-06-14
  • CSS元素居中布局的实现方法
    本篇内容主要讲解“CSS元素居中布局的实现方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“CSS元素居中布局的实现方法”吧!首先我们需要知道元素都有哪些种类?...
    99+
    2024-04-02
  • CSS高阶技巧:实现图片渐隐消的多种方法
    当然,对于现在这个效果,有个很大的缺陷,那就是缺少了动画。图片是瞬间消失的。所以,我们还需要给上述的借助 mask 实现的图片消失效果添加上动画。而这,就需要用上 CSS @property 了。强大的 CSS @propertyCSS @...
    99+
    2023-05-14
    前端 CSS JavaScript
  • C++ normal_distribution高斯正态分布函数的用法示例
    图 1 显示的是正态(或高斯)分布。它是一条连续的贝尔曲线,期望两边的值是相等的,可以理解为期望就是平均值。它是一个概率分布,因此曲线下方的面积是1。正态分布是由两个参数完全定义的:...
    99+
    2024-04-02
  • HTML5实现元素拖拽的方法
    这篇文章将为大家详细讲解有关HTML5实现元素拖拽的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。先上示例:index.htmlXML/HTML Code复制内容到剪...
    99+
    2024-04-02
  • 朴素贝叶斯算法的Python实现
    注意:1、代码中的注释请不要放在源程序中运行,会报错。    2、代码中的数据集来源于http://archive.ics.uci.edu/ml/datasets/Car+Evaluation     3、对于朴素贝叶斯的原理,可以查看我的...
    99+
    2023-01-31
    朴素 算法 贝叶斯
  • C#指针的实现方法
    本篇内容介绍了“C#指针的实现方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. 指针类型可以是实体变量(int,double)也可以是...
    99+
    2023-06-18
  • C#九九乘法表的实现方法
    本篇内容介绍了“C#九九乘法表的实现方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!C#九九乘法表的算法实现是如何的呢?首先我们看看代码的...
    99+
    2023-06-17
  • CSS行内元素和块级元素的居中的实现方法
    本篇内容介绍了“CSS行内元素和块级元素的居中的实现方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一....
    99+
    2024-04-02
  • c#调用c++的DLL的实现方法
    目录1.采用托管的方式进行调用,就和正常调用c#的dll一样2.非托管的方式进行调用C#是托管型代码,创建的对象会自动回收。C++是非托管型代码,创建的对象需要手动回收(有时不手动回...
    99+
    2024-04-02
  • C/C++最短路径算法之迪杰斯特拉Dijkstra的实现详解
    目录前言一、迪杰斯特拉(Dijkstra)算法是什么二、实现步骤1.算法思路2.进入主函数ShortestPath()1.创建final数组并且初始化path[]、dist[]数组2...
    99+
    2024-04-02
  • 如何进行图片JNI C++\Java高斯模糊的实现
    这篇文章将为大家详细讲解有关如何进行图片JNI C++\Java高斯模糊的实现,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。开工吧说明:其中代码大部分来源于网络,不过都是开源的。最原始的代码...
    99+
    2023-06-19
  • C#使用CancellationTokenSource取消Task的方法
    本篇的内容也很重要,因为涉及到了日常经常会碰到的取消任务操作。 从我个人了解到的情况,基本上大家都采用CancellationTokenSource方法来取消任务,因此这里就举几个简...
    99+
    2024-04-02
  • SpringBoot+TestNG单元测试的实现方法
    这篇文章主要讲解了“SpringBoot+TestNG单元测试的实现方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringBoot+TestNG单元测试的实现方法”吧!目录背景接口测...
    99+
    2023-06-20
  • CSS实现HTML元素透明的方法
    本篇内容主要讲解“CSS实现HTML元素透明的方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“CSS实现HTML元素透明的方法”吧!CSS是一组格式设置规则,...
    99+
    2024-04-02
  • C语言实现高精度的加法
    本文实例为大家分享了C语言实现高精度的加法,供大家参考,具体内容如下 由键盘输入两个位数很长的整数(一行一个,最多不超过80位),试计算并输出这两个数的和。 输入样例 1234567...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作