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); }


赞助商链接

更多相关文章:
200704033020用高斯列主元消元法解线性方程组
专业:飞行器设计与工程 班级:7403301 题目:用高斯列主元消元法解线性方程组 二、课程设计内容用 C 语言编写程序完成以下任务: 请用高斯列主元消元法解下列线性...
高斯列主元消法解线性方程组的实现
高斯列主元消法解线性方程组的实现_电脑基础知识_IT/计算机_专业资料。实验报告 高斯列主元消法解线性方程组的实现班级 学号姓名榴莲 一、实验任务采用高斯列...
高斯列主元消法解线性方程组--课程设计报告
高斯列主元消法解线性方程组--课程设计报告_工学_高等教育_教育专区。通过高斯列主元消法解线性方程组,里面详细写了整个程序的测试过程。...
列主元消法解方程组实验报告
列主元消法解方程组实验报告_数学_自然科学_专业资料。实验名称: 1 引言 列主元消法解方程组 我们知道,高斯消去法是一个古老的解线性方程组的方法。而在...
Gauss列主元法的C语言编程实现
Gauss 列主元法的 C 语言编程实现 用高斯列主元消法解线性方程组 Ax=b。 编程思路:在消元之前,在剩余的元素中选取绝对值最大的为主元,并将其换到 主元...
高斯列主元消法解线性方程组
高斯列主元消法解线性方程组 作者:刘俊 班级 B0503791 软件学院 学号 1050379016 试验原理: 1. 高斯消去法是一个古老的求解线性方程组的方法,但它的改进、...
列主元高斯消去法的实现
列主元高斯消去法的实现 - 《数值分析课程设计》 报告 专业: 学号: 学生姓名: 指导教师: 一、 题目 列主元 guess 消去法求方程的解 二、 理论 列主元高斯...
列主元高斯消去法和列主元三角分解法解线性方程
计算方法实验报告 1 【课题名称】用列主元高斯消去法和列主元三角分解法解线性方程 【目的和意义】 高斯消去法是一个古老的求解线性方程组的方法, 但由它改进...
列主元高斯消元法的C语言编程
列主元高斯消元法的C语言编程 - 列主元高斯消元法 基本思想:用高斯消元法求解线性方程组时,为避免小的主元,在进行第 k 步消元前,应该在第 k 列 (k )...
列主元高斯消元法求线性代数方程组的解
列主元高斯消元法求线性代数方程组的解 - 课程设计任务书 学院 学生姓名 课程名称 课程设计 题目 一、基本理论: 专业 班级学号 计算方法 用列主元高斯消元...
更多相关标签:

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

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