实验一:Guass列选主元消去法之C语言代码
虽然数值老师让我们用图形化进行编程,但由于自己对于GUI编程了解的比较少,这里暂时还是在dos窗口实现吧.实验题目:
1,Guass列选主元消去法
|2.5 2.3 -5.1| | x1 | |3.7|
|5.3 9.6 1.5 | | x2 | = |3.8|
|8.1 1.7 -4.3| | x3 | |5.5|
对于AX=b;根据课本39面的算法描述:
首先:输入方程组的维数n,矩阵A,右端项b,控制精度这里我们先不管:...
后面bb的啥选主元,交换两行,消元,没啥好说明的,下面直接上代码:
/*************************************************************************> File Name: guass.c> Author:chendiyang> School:WUST_CST_1501班> Myblog:www.chendsir.com> Mail:1441353519@qq.com > Created Time: 2017年04月17日 星期一 11时01分51秒************************************************************************/#include <stdio.h>
#include <math.h>
#define MAX 20 //最大维数 int main()
{int n;int i,j,k;int mi;double mx,tmp;static double a[MAX][MAX],b[MAX],x[MAX];printf("\n 输入方程组的维数:");//输入AX=b的维数scanf("%d",&n);if(n>MAX){return 1;} if(n<=0){return 1;}//输入矩阵的值printf("\n请输入A矩阵的值:"); for(i=0;i<n;i++)for(j=0;j<n;j++) scanf("%lf",&a[i][j]);//输入b矩阵 printf("\n请输入B矩阵的值:"); for(i=0;i<n;i++)scanf("%lf",&b[i]);for(i=0;i<n-1;i++){//找主元素 for(j=i+1,mi=i,mx=fabs(a[i][i]);j<n;j++)if(fabs(a[j][i])>mx){mi=j;mx=fabs(a[j][i]);}//交换两行 if(i<mi){tmp=b[i];b[i]=b[mi];b[mi]=tmp;for(j=i;j<n;j++){tmp=a[i][j];a[i][j]=a[mi][j];a[mi][j]=tmp;}} //高斯消元 for(j=i+1;j<n;j++){tmp=-a[j][i]/a[i][i];b[j]+=b[i]*tmp;for(k=i;k<n;k++)a[j][k]+=a[i][k]*tmp;}}//求解方程 x[n-1]=b[n-1]/a[n-1][n-1];for(i=n-2;i>=0;i--){x[i]=b[i];for(j=i+1;j<n;j++)x[i]-=a[i][j]*x[j];x[i]/=a[i][i];}//输出运行结果 printf("solution is :\n");for(i=0;i<n;i++)printf("%lf\n",x[i]);return 0; }
运行结果如图:
可以看到图中运行的guass.c源文件(./guass代表运行这个程序,这是Linux上的gcc编译和运行命令),同时又运行了sequence.c源文件(./sequence代表运行这个程序)两个结果都是相同的,代表之前的顺序消去法和列选主元消去法的输出的solution结果都是相同的,这表明两种方法产生的误差都一样....
实验一:Guass列选主元消去法之C语言代码相关推荐
- 数值作业:Guass全选主元消去法之C语言代码
全选主元的基本思想:当变换到第K步时,从系数矩阵的右下角(n-k+1)阶子阵中选取绝对值最大的元素,然后通过行变换与列变换将它交换到主元素a[k][k]的位置上.行变换是不影响最后求解的结果的,但是列 ...
- Guass列选主元消去法和三角分解法
最近数值计算学了Guass列主消元法和三角分解法解线性方程组,具体原理如下: 1.Guass列选主元消去法对于AX =B 1).消元过程:将(A|B)进行变换为,其中是上三角矩阵.即: k从1到n-1 ...
- 数值计算(一)之解线性方程组(高斯消去法,列选主元消去法,全选主元消去法,杜立特尔分解,克洛特分解,乔里斯基分解)
解线性方程组即解一个多元一次方程组,例如 目录 消去法 分解法 消去法 原理 没有学过高级的解法也没关系,凭借我们初高中的知识足以解决这个问题 这是一个多元一次方程组,拥有n个未知量,也有n方程 我们 ...
- 实验二:Lagrange拉格朗日插值法之C语言代码
拉格朗日插值多项式的算法就比前面的简单些,30行代码左右可以搞定,不过为了通俗易懂,这里我写了比较多的注释.题目:已知下列函数表: x | 0.56160 | 0.56280 | 0.56401 | ...
- Matlab实现 LU分解法解线性方程组(全选主元列选主元)
选主元LU分解 实验内容:列选主元LU分解和全选主元LU分解求解线性方程组 计算方法: 全选主元消元法 1.1 初始化 根据参数A.b,记录下矩阵.右端项的尺寸n: 以得到的尺寸n初始化解向量x: 同 ...
- py实现高斯列选主元消元法
什么是高斯列选主元消元法 高斯消元法解决的问题是线性方程组的求解问题. 比如下面这个方程组 x+2y = 3 x+4y = 8 我们大学之前学习的方法其实就是高斯消元法. 上面的方程组我们还可以写成矩 ...
- Python02 雅克比迭代法 Gauss-Seidel迭代法 列选主元法 LU分解法(附代码)
1. 实验结果 (1)在定义的矩阵类中设置需要求解的方程为: (2)在 test.py 中选择雅克比迭代法求解: 输入:最大容许迭代次数和精度要求: 输出:根据谱半径判断方法是否收敛,收敛时得到满足精 ...
- 解线性方程组的python实现(1)——高斯主元消去法
解线性方程组的python实现1--高斯主元消去法 1. 高斯(顺序)主元消去法 1.1 消去过程 1.2 回代过程求解 实现代码 2 列主元消去法 实现代码 3 高斯-约旦(Gauss-Jordan ...
- 部分选主元matlab,列选主元的高斯消去法-matlab
大家对高斯消去法应该比较了解了,高代和线性代数中做的已经不少了,但是计算机实现的时候还是要注意一些东西, %列选主元的高斯消去法 function X=lufact_my(A,B) %Inpiut A ...
- C#实现Gauss完全主元消去法
一.目的 1.掌握高斯完全主元消去法基础原理 2.掌握高斯完全主元消去法解方程组的步骤 3.能用程序语言对Gauss完全主元消去法进行编程实现 二.代码 1.Program.cs using Syst ...
最新文章
- 还在为cximage编译问题而发愁吗?
- 数据库设计的酸(ACID)碱(BASE)原则
- 程序员大牛必备的装逼神器
- 一个月后的2016产品汪温馨提示
- 学习组合模式,转载一段有关组合模式的详解
- Unity搭建简单的图片服务器
- 在tornado中使用异步mysql操作
- bzoj 1014: 洛谷 P4036: [JSOI2008]火星人
- PPT文件如何大幅度瘦身、减小所占空间、提高播放速度?
- 计算机组成原理中ID是什么,计算机组成原理
- Appium下载及环境搭建
- 基于multisim14的函数信号发生器仿真
- 一根网线实现双机互联共享文件
- sift论文_ImageNet一作邓嘉最佳论文,ECCV2020奖项全公布
- 戴尔台式机装linux系统,在戴尔(Dell)台式机上安装深度Deepin系统的BIOS设置方法...
- ffmpeg源码简析(十)libswscale中的SwsContext,sws_scale()
- android高分段进阶攻略(9)——ViewPager补间动画实现京东广告Banner
- 详解 Jenkins 自动化部署平台
- mysql中Tinyint(1)和Tinyint(4)的区别
- 深圳大澳湾度假团建攻略