《数值分析》实验报告
实验序号:实验二题目名称:列主元消元法解方程组
学号:201011xxxx 姓名:
任课教师: 专业班级:
实验目的:
编写用Gauss消元法解线形方程组的程序
2、实验分析:
计算方法分析:
Gauss消元法的基本做法就是把方程组转化成为一个如下图的等价的三角方程组,这个过程叫做消元。得到三角方程组后,就可以逐个求出Xn,Xn-1,…,X1,这个过程叫回代。
程序代码分析:
建立两个数组a和b,通过循环语句将n阶增广矩阵输入进去,通过对列的循环对每一列进行消去未知数,通过n小步n大步把矩阵化简成上三角形矩阵,最后通过迭代法解得方程组得解。
3、函数分析:
程序中只用到一个主函数,求解线形方程组得算法都放在主函数中,
利用以下函数进行求解:
a[i][j]=a[i][j]-a[i][k]/a[k][k]*a[k][j];
b[i]=b[i]-a[i][k]/a[k][k]*b[k];
迭代:
for(i=n-1;i>0;i--)
{
double sum=0;
for(j=i+1;j<=n;j++)
sum=sum+a[i][j]*b[j];
b[i]=(b[i]-sum)/a[i][i];
}
4、实验数据:
5、实验代码:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
float a[10][10],b[10],d=0,t=0,sum=0;
int k=1,l=0,i=0,j=0,m,n;
cout<<"输入方程组组数: "<<endl;
cin>>n;
cout<<"输入方程组未知数:"<<endl;
cin>>m;
cout<<"输入方程组各项系数:"<<endl;
for(int i=1;i<=n;i++)
{
cout<< "第" <<i<< "组数据"<<endl;
for(int j=1;j<=m;j++)
cin>>a[i][j];
cin>>b[i];
}
while(k<=n)
{
//*****选主元素*****
d=a[k][k];
l=k;
for(i=k+1;i<=n;i++)
{
if(fabs(a[i][k])>fabs(d))
{
d=a[i][k];
l=i;
}
}
if(l!=k)
{
for(j=k;j<=n;j++)
{
t=a[l][j];a[l][j]=a[k][j];a[k][j]=t;
}
t=b[k];b[k]=b[l];b[l]=t;
}
//**************
//*****消元*****
for(j=k+1;j<=n;j++)
{
a[
列主元实验报告 来自淘豆网m.daumloan.com转载请标明出处.