解线性方程组--数值分析_第1页
解线性方程组--数值分析_第2页
解线性方程组--数值分析_第3页
解线性方程组--数值分析_第4页
解线性方程组--数值分析_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

include include define MAXN 4 using namespace std void M double e MAXN void Jacobi double a MAXN MAXN double b MAXN double TOL void Gauss double a MAXN MAXN double b MAXN double TOL void SOR double a MAXN MAXN double b MAXN double w double TOL int main int i j choice double a MAXN MAXN b MAXN TOL w TOL pow 10 6 cout t endl cout t t 本程序运用三种方法解简单的线性方程组 endl cout t t 线性方程组的阶数暂定为 4 阶 endl cout t t 源程序中可以更改方程阶数 endl cout t t 温馨提示 更改 MAXN endl cout t endl endl cout 请先输入有关该线性方程组的数据 endl endl cout 线性方程组的系数矩阵 endl for i 0 i MAXN i for j 0 j a i j cout 线性方程的右端项 endl for i 0 i b i cout endl cout 以下有三种方法可供选择 endl cout 1 Jacobi 2 Gauss seidl 3 SOR endl cout 请选择要运用的方法 choice switch choice case 1 Jacobi a b TOL break case 2 Gauss a b TOL break case 3 cout w SOR a b w TOL break default cout 该线性方程组无法运用以上的三种方法求的解 endl break return 0 void M double e MAXN for int i 1 ie 0 e 0 e i void Jacobi double a MAXN MAXN double b MAXN double TOL int i j 声明一个中间变量 double s 0 第一步 对线性方程组的系数矩阵进行赋值 右端项 以及初始向量的初始化 double x0 MAXN 0 0 0 0 double x MAXN double e MAXN 第二步 利用 while 循环进行求解 do for i 0 i MAXN i 中间插入的 for 循环 该循环用来 模仿求和公式 for j 0 j MAXN j s a i j x0 j 外层循环 用来 求新的解 x i b i s a i i 求误差向量 e i fabs x i x0 i 调用 子函数取得 该误差向量中的 最大分量 M e 进行判断 将符合条件的 解向量输出 if e 0 TOL for i 0 i MAXN i cout x i x i endl 如果不满足条件 则更新 初始向量 for i 0 iTOL void Gauss double a MAXN MAXN double b MAXN double TOL int i j double s 0 s1 0 s2 0 double x0 MAXN 0 0 0 0 double x MAXN double e MAXN do for i 0 i MAXN i 当 i 等于 0 的时候 值是利用 Jacobi 公式求出来的 if i 0 for j 1 j MAXN j s a i j x0 j x i b i s a i i else 利用 Gauss seidel 方法计算 求和公式 for j 0 j MAXN j if j i s1 a i j x j else s2 a i j x0 j s s1 s2 x i b i s a i i 误差向量的 计算 e i fabs x i x0 i 求向量的 范式 M e 判断是否满足条件 将满足条件的 解向量输出 if e 0 TOL 利用 for 循环输出 for i 0 i MAXN i cout x i x i endl 否则 就更换 初始解向量的 值 for i 0 iTOL void SOR double a MAXN MAXN double b MAXN double w double TOL int i j 中介值 double s 0 s1 0 s2 0 double x0 MAXN 0 0 0 0 double x MAXN double e MAXN do 外层循环 for i 0 i 4 i 解向量 第一个分量的 值 if i 0 for j 1 j MAXN j s a i j x0 j x i 1 w x0 i w b i s a i i else 其余分量是利用 SOR 算法 实现的 for j 0 j MAXN j 用的 新值 if j i s1 a i j x j 用旧值 else s2 a i j x0 j 中介值的改变 s s1 s2 x i 1 w x0 i w b i s a i i 误差向量 e i fabs x

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论