求解线性方程组的直接法、gauss-sidel迭代法

、实验原理

根据求解线性方程组的三角分解法、gauss-sidel迭代法等相关知识和算法编程完成本实验

二、实验内容

     见本课教材:附录1上机作业

必做题:程序12,程序16

     1)用程序12验证如下方程组

   

2)用程序16验证如下方程组

任取初始向量x(0)=(0, 0, 0)T ,

计算       x(1)=(2.5, 2.090909, 1.227272)T , …,

              x(5)=(2.99984,  2.000072,  1.000061)T

三、实验过程(可以文字说明+运行结果截图)

1)Doolittle分解法

实验说明:

数据说明:

1.矩阵A:一个n×n的待分解矩阵,用户需要输入此矩阵的元素。

2.向量B:一个长度为n的向量,用户需要输入此向量的元素。

3.矩阵L:一个n×n的下三角矩阵,初始时对角线元素为1,其余元素由算法计算得出。

4.矩阵R: 一个n×n的上三角矩阵,初始时对角线元素为A的对角线元素,其余元素由算法计算出。

5.向量X: 一个长度为n的向量,算法求解得到的最终解。

6.向量Y: 一个长度为n的向量,中间计算步骤的结果。

代码说明

1.输入矩阵尺寸:

用户输入矩阵 A 的行数和列数,即矩阵的尺寸 n。

2.输入矩阵 A 和向量 B:

用户输入矩阵 A 的元素和向量 B 的元素。

3.初始化矩阵:

调用 InitMatrix() 初始化矩阵 L 和 R。对角线元素和上下三角部分根据规则初始化。

4.Doolittle 分解:

调用 Doolittle() 执行 Doolittle 分解。通过前向消去和后向替代法求解线性方程组。

5.打印结果:、调用 print() 打印下三角矩阵 L、上三角矩阵 R、向量 B、向量 Y 和向量 X

算法说明

1.初始化矩阵:

初始化 L 为单位矩阵, R 为零矩阵。

2.计算上三角矩阵 R:

通过从左到右的方式,计算矩阵 R 的元素。公式如下:

3.计算下三角矩阵 L:

通过从上到下的方式,计算矩阵 L 的元素。公式如下:

4.前向消去:

解方程 LY=B 得到向量 Y:

5.后向替代:

解方程 UX=Y 得到向量 X:

运行截图:

2)程序16: Gauss-Seidel 迭代法

实验说明:

数据说明:

1.矩阵 A:

一个N×N 的系数矩阵,在这个例子中是一个 3x3 矩阵。

2.向量 b:

一个长度为 N 的常数向量。

3.初始向量x:

一个长度为 N 的初始猜测向量,初始值设为零向量。

4.迭代次数和收敛条件:

最大迭代次数设为 1000 次,收敛误差阈值为 0.0001。

代码说明

1.定义矩阵和向量:

定义并初始化系数矩阵 A、常数向量 b 和初始向量 x。

2.调用 Gauss-Seidel 迭代函数:

调用 GS(dim, A, b, x) 函数执行迭代,解线性方程组。

3.打印结果:

打印最终得到的解向量 x。

算法说明

1.初始化:

初始化解向量x和临时向量

2.迭代更新:

对每个分量

进行更新,使用最新计算出的x值。迭代公式如下:

3.收敛判定:

如果在某次迭代中,所有分量的更新值小于阈值,则判定迭代收敛。

4.打印迭代次数和结果:

如果迭代收敛,则打印迭代次数和最终结果。

如果迭代未收敛,提示可能不收敛。

运行截图:

  • 27
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值