实验三 线性方程组的直接解法

一、问题提出

给出下列几个不同类型的线性方程组,请用适当的算法计算其解。

1、设线性方程组

10
4   2   -3  -1  2   1   0   0   0   0   5
8   6   -5  -3  6   5   0   1   0   0   12
4   2   -2  -1  3   2   -1  0   3   1   3
0   -2  1   5   -1  3   -1  1   9   4   2
-4  2   6   -1  6   7   -3  3   2   3   3
8   6   -8  5   7   17  2   6   -3  5   46
0   2   -1  3   -4  2   5   3   0   1   13
16  10  -11 -9  17  34  2   -1  2   2   38
4   6   2   -7  13  9   2   0   12  4   19
0   0   -1  8   -3  -24 -8  6   3   -1  -21

二、要求

1、对上述三个方程组分别用Gauss顺序消元法与Gauss列主元消元法:平方根法与改进平方根法:追赶法求解(选择其一);
2、应用结构程序设计编出通用程序;
3、比较计算结果、分析数值解误差的原因;
4、尽可能利用相应模板输出系数矩阵的三角分解式;

三、目的和意义

1、通过该课题的实验,体会模板化结构程序设计方法的优点;
2、通过所学的计算方法,解决各类线性方程组的直接算法;
3,提高分析和解决问题的能力,做到学以致用;
4,通过三对角线性方程组的解法,体会稀疏线性方程组解法的特点;

四、代码实现

#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
const int maxn=100;
int n,i,j,k=1;
double a[maxn][maxn],b[maxn],sum;
int main()
{
    freopen("in.txt","r",stdin);
    cin>>n;
    for(int i=1; i<=n; i++)
    {
        for(int j=1; j<=n; j++)
            cin>>a[i][j];
        cin>>b[i];
    }
    for(int k=1; k<=n; k++)
    {
        for(j=k+1; j<=n; j++) a[k][j]=a[k][j]/a[k][k];    //系数化为1
        b[k]=b[k]/a[k][k];
        for(i=k+1; i<=n; i++)                            //消元
        {
            for(j=k+1; j<=n; j++)
                a[i][j]-=a[i][k]*a[k][j];
            b[i]-=a[i][k]*b[k];
        }
    }
    for(i=n-1; i>=1; i--)                                //求值
    {
        sum=0;
        for(j=i+1; j<=n; j++)
            sum+=a[i][j]*b[j];
        b[i]-=sum;
    }
    for(i=1; i<=n; i++)
        printf("b[%2d]=%lf\n",i,b[i]);
    return 0;
}




  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值