9512.net
甜梦文库
当前位置:首页 >> 数学 >>

高斯列主元消元法解线性方程组


数值计算课程设计

1. 高斯列主元法解线性方程组
1.1 算法说明 首先列出线性方程组的增广矩阵, 对增广矩阵进行初等行变换。 主要步骤有: 求主元、换行、消元,具体操作为:对元素 aii ,在第 i 列中,第 i 行及以下的 元素选取绝对值最大的元素, 将该元素所在的行与第 i 行交换,然后采用高斯消 元法将新得到的 aii 消去第 i 行以下的元素。一次进行直到 ann 。从而得到上三角 矩阵。 再对得到的上三角矩阵进行回代操作,即可以得到方程组的解。 1.2 高斯列主元算法流程图
开始

输入方程组 维数 n

输入增广矩阵

高斯列主元法变换 为上三角矩阵

如果矩阵退化

回代求解

结束 图 1-1 高斯列主元法解线性方程组算法流程图

1.3 高斯列主元算法程序调试 以下列线性方程组为例进行算法调试,调试界面如下所示:

x1+2x2+x3+4x4=13 2x1+0x2+4x3+3x4=28 4x1+2x2+2x3+x4=20 -3x1+x2+3x3+2x4=6

高斯列主元法解线性方程组

图 1-2 1-3 1-4 高斯列主元法解线性方程组程序调试界面

数值计算课程设计

1.4 高斯列主元算法程序代码 #include<iostream> #include<iomanip> #include<cmath> #define m 10 using namespace std; double A[m][m],b[m],Aug[m][m+1]; void equ(double A[m][m],double b[m],double x[m],int n) { int i,i1,j,k; double Aug[m][m+1],maxele,Temp,l,s; for (i=0;i<n;i++) //构建增广矩阵 Aug { for (j=0;j<n;j++) Aug[i][j]=A[i][j]; Aug[i][n]=b[i]; } for (i=0;i<n;i++) { for (j=0;j<n;j++) cout<<Aug[i][j]<<" "; cout<<Aug[i][n]<<endl; } //输出增广矩阵 Aug

for (i1=0;i1<n-1;i1++) //求主元 { maxele=fabs(Aug[i1][i1]); k=i1; for(i=i1;i<n;i++) if (maxele<fabs(Aug[i][i1])) { maxele=fabs(Aug[i][i1]); k=i; cout<<"i1="<<i1<<" "<<"maxele="<<maxele<<" "<<Aug[i][i1]<<" "<<endl; }

"<<"k="<<k<<"

for (j=i1;j<n+1;j++) { Temp=Aug[i1][j];

//换行

高斯列主元法解线性方程组

Aug[i1][j]=Aug[k][j]; Aug[k][j]=Temp; } for (i=0;i<n;i++) //换行后输出增广矩阵 Aug { for (j=0;j<n;j++) cout<<Aug[i][j]<<" "; cout<<Aug[i][n]<<endl; } for (k=i1+1;k<n;k++) { l=-Aug[k][i1]/Aug[i1][i1]; for (j=i1;j<n+1;j++) Aug[k][j]=Aug[k][j]+l*Aug[i1][j]; } cout<<"每次消元结束输出增广矩阵 Aug"<<endl; for (i=0;i<n;i++) //每次消元结束输出增广矩阵 Aug { for (j=0;j<n;j++) cout<<Aug[i][j]<<" "; cout<<Aug[i][n]<<endl; } } x[n-1]=Aug[n-1][n]/Aug[n-1][n-1]; //x[n-2]=(Aug[n-2][n]-Aug[n-2][n-1]*x[n-1])/Aug[n-2][n-2]; for (i=n-2;i>=0;i=i-1) { s=0; for (j=i+1;j<n;j++) s=s+Aug[i][j]*x[j]; cout<<"s="<<s<<endl; x[i]=(Aug[i][n]-s)/Aug[i][i]; cout<<"x["<<i<<"]="<<x[i]<<endl; } } int main() { void equ(double A[m][m],double b[m],double x[m],int n);

数值计算课程设计

double A[m][m],b[m],x[m]; int i,j,n; cout<<"输入未知量的个数"<<endl; cin>>n; if (n>m) { cout<<"问题规模太大,需更改原程序中符号常量 m"<<endl; return 0 ; } for (i=0;i<n;i++) { cout<<"请输入 A 的第"<<i+1<<"行:"; for(j=0;j<n;j++) cin>>A[i][j]; cout<<"请输入 b 的第"<<i+1<<"行:"; cin>>b[i]; } equ( A,b, x,n); for (i=0;i<n;i++) cout<<x[i]<<" "; cout<<endl; return(0); }


赞助商链接

更多相关文章:
一 编写 Gauss 列主元消元法求解线性方程组的程序
一 编写 Gauss 列主元消元法求解线性方程组的程序_数学_自然科学_专业资料 暂无评价|0人阅读|0次下载|举报文档 一 编写 Gauss 列主元消元法求解线性方程组的...
高斯列主元消元法解线性方程组
高斯列主元法解线性方程组 1.1 算法说明 首先列出线性方程组的增广矩阵, 对增广矩阵进行初等行变换。 主要步骤有: 求主元、换行、消元,具体操作为:对元素 aii...
高斯列主元消元法解线性方程组
I 沈阳航院设计用纸 程序设计题目利用高斯列主元消元法解线性方程组 一.题目分析经过对题目的分析得知, 整个程序的设计是基于线形代数中的初等行变换理论而设 计...
高斯列主元消去法解线性方程组
高斯列主元消去法解线性方程组 作者:刘俊 班级 B0503791 软件学院 学号 1050379016 试验原理: 1. 高斯消去法是一个古老的求解线性方程组的方法,但它的改进、...
课程设计报告-高斯列主元消元法解线性方程组
课程设计报告-高斯列主元消元法解线性方程组_理学_高等教育_教育专区。《计算机数值方法》 课程设计报告 题学班学成指导教生姓 目名级号绩师 高斯列主元消元...
高斯消去法,及列主元消去法解线性方程组MATLAB代码
高斯消去法,及列主元消去法解线性方程组MATLAB代码_理学_高等教育_教育专区。高斯列主元消去法解线性方程 function x=gaussLinearEquation(A,b) %? 用Gauss列主...
高斯列主元消元法解线性方程组
高斯列主元消元法解线性方程组_理学_高等教育_教育专区。C语言程序设计沈阳航空工业学院 课程设计 班学姓 级:6402104 班号:200604021139 名 :郑松 指导教师 :...
高斯列主元消元法解线性方程组
高斯列主元消元法解线性方程组一、题目:用 Gauss 列主元消去法解线性方程组 Ax = b ,其中, ?17.031 -0.615 -2.991 1.007 -1.006 0.000 ? ? ? ...
列主元高斯消元法的C语言编程
列主元高斯消元法的C语言编程_计算机软件及应用_IT/计算机_专业资料。列主元高斯消元法基本思想:用高斯消元法求解线性方程组时,为避免小的主元,在进行第 k ...
高斯列主元消元法解线性方程
计算方程组模块对应三个函数,其函数名和功能如下: 一、交换行的距函数(huanhang) :主要实现线性代数高斯列主元 消元法求解线性方程组中的初等行变换。 二、...
更多相关标签:

All rights reserved Powered by 甜梦文库 9512.net

copyright ©right 2010-2021。
甜梦文库内容来自网络,如有侵犯请联系客服。zhit325@126.com|网站地图