数值分析计算实习题列主元高斯消去法解线性方程组

上传人:痛*** 文档编号:137508425 上传时间:2022-08-18 格式:DOC 页数:15 大小:99KB
收藏 版权申诉 举报 下载
数值分析计算实习题列主元高斯消去法解线性方程组_第1页
第1页 / 共15页
数值分析计算实习题列主元高斯消去法解线性方程组_第2页
第2页 / 共15页
数值分析计算实习题列主元高斯消去法解线性方程组_第3页
第3页 / 共15页
资源描述:

《数值分析计算实习题列主元高斯消去法解线性方程组》由会员分享,可在线阅读,更多相关《数值分析计算实习题列主元高斯消去法解线性方程组(15页珍藏版)》请在装配图网上搜索。

1、数值分析计算实习题第5 章 解线性方程组的直接方法【选题】 列主元高斯消去法解线性方程组。 书上的计算实习题1、2、3都要求用列主元高斯消去法解线性方程组,所以考虑写一个普适的程序来实现。 对于线性方程组Ax=b,程序允许用户从文件读入矩阵数据或直接在屏幕输入数据。 文件输入格式要求:(1)第一行为一个整数n(2= n = 100),表示矩阵阶数。(2)第2 n+1行为矩阵A各行列的值。(3)第n+2 n+n+2行为矩阵b各行的值。屏幕输入:按提示输入各个数据。 输出:A、b、det(A)、列主元高斯消去计算过程、解向量x。【算法说明】 设有线性方程组Ax=b,其中设A为非奇异矩阵。方程组的增

2、广矩阵为 第1步(k=1):首先在A的第一列中选取绝对值最大的元素,作为第一步的主元素: 然后交换(A,b)的第1行与第l行元素,再进行消元计算。 设列主元素消去法已经完成第1步到第k-1步的按列选主元,交换两行,消元计算得到与原方程组等价的方程组 A(k)x=b(k) 第k步计算如下: 对于k=1,2,n-1 (1)按列选主元:即确定t使 (2)如果tk,则交换A,b第t行与第k行元素。 (3)消元计算 消元乘数mik满足: (4)回代求解【程序】/* 【普适列主元消去法解线性方程组】 对于线性方程组:Ax=b 输入: 选择屏幕直接输入 1. A的行阶数n(1 = n = 100) 2. A

3、的值 3. b的值 选择读取文件 文件名(和主程序同级文件夹下) 输出: 1. A 2. b 3. det(A) 4. 解向量x */#include #include #include double A105105,A_B105105,b105,x105;double detA;int n,mark = 1;/读入数据void input() int i,j; char ch20,name100; FILE *f; printf(n-n是否从文件读取数据(Y/N):); scanf(%s,&ch); if(ch0 = Y | ch0 = y) printf(请输入文件名(包括扩展名):);

4、scanf(%s,name); f = fopen(name,r); fscanf(f,%d,&n); for(i = 0;i n;i +) for(j = 0;j n;j +) fscanf(f,%lf,&Aij); for(i = 0;i n;i +) fscanf(f,%lf,&bi); else printf(请输入A的阶数:); scanf(%d %d,&n); printf(请输入A的值:); for(i = 0;i n;i +) for(j = 0;j n;j +) scanf(%lf,&Aij); printf(请输入b的值:); for(i = 0;i 2) for(z =

5、0;z m;z+) for(j = 0;j m - 1;j +) for(k = 0;k = z) bjk = sj+1k+1; else bjk = sj+1k; if(z % 2=0) r = s0z * det(b,m - 1); /*递归调用*/ else r = (-1) * s0z * det(b,m - 1); total = total + r; else if(m = 2) total = s00 * s11 - s01 * s10; else if(m = 1) total = s00; return total; / 输出A和b和det(A) void output_1(

6、) int i,j; printf(A = n); for(i = 0;i n;i +) for(j = 0;j n;j +) printf(%15.4f,Aij); printf(n); printf(nb = n); for(i = 0;i n;i +) printf(%15.4fn,bi); printf(ndet(A) = %.4fn,detA); / 主计算函数void count_x() int i,j,k; int max; double tmp,mik; /构造增广矩阵 for(i = 0;i n;i +) for(j = 0;j n;j +) A_Bij = Aij; A_B

7、in = bi; printf(n展示消元过程(A_B为A的增广矩阵):n); printf(A_B = n); for(i = 0;i n;i +) for(j = 0;j = n;j +) printf(%15.4f,A_Bij); printf(n); /按列选主元 for(k = 0;k n;k +) max = k; for(i = k;i abs(A_Bmaxk) max = i; /若Amaxk = 0,即det(A) = 0,则无唯一解,退出计算 if(A_Bmaxk = 0) mark = 0; break; /换行 if(max != k) for(j = k;j = n;

8、j +) tmp = A_Bkj; A_Bkj = A_Bmaxj; A_Bmaxj = tmp; /消元计算 for(i = k + 1;i n;i +) A_Bik = A_Bik / A_Bkk; for(j = k + 1;j n;j +) A_Bij = A_Bij - A_Bik * A_Bkj; A_Bin = A_Bin - A_Bik * A_Bkn; A_Bik = 0; printf(A_B = n); for(i = 0;i n;i +) for(j = 0;j = 0;i -) xi = A_Bin = A_Bin; for(j = i + 1;j n;j +) xi

9、 = A_Bin -= A_Bij * A_Bjn; xi = A_Bin /= A_Bii; / 输出解向量x void output_2() int i,j; if(!mark) printf(n该方程没有唯一解!n); else printf(nb = n); for(i = 0;i n;i +) printf(%15.5fn,xi); int main() char ch20; printf(普适列主元消去法解线性方程组n); while(1) input(); / 读取数据 detA = det(A,n); / 计算A的行列式 output_1(); / 输出A和b和det(A) c

10、ount_x(); / 主计算函数 output_2(); / 输出解向量x printf(nn是否继续(Y/N):); scanf(%s,&ch); if(ch0 = Y | ch0 = y) continue; else break; 【结果测试】一共采用了书上的例题和习题内的5组数据(d1d5),均采用文件读入方式读取,计算结果,与matlab运算结果进行比对均相符合,基本验证了程序的正确性。下面给出各组数据和运行结果:数据3311 1-3111-3-410 -7 0 1-3 2.099999 6 25 -1 5 -12 1 0 2851-410 7 8 77 5 6 58 6 10 9

11、7 5 9 1032233331-运行结果普适列主元消去法解线性方程组-是否从文件读取数据(Y/N):yA =b = 1.0000展示消元过程(A_B为A的增广矩阵):A_B =A_B = 3.0100 A_B =A_B =b =是否继续(Y/N):y-是否从文件读取数据(Y/N):yA = 0.9900 b =展示消元过程(A_B为A的增广矩阵):A_B =A_B =A_B =A_B =b =是否继续(Y/N):y-是否从文件读取数据(Y/N):yA =b =展示消元过程(A_B为A的增广矩阵):A_B =A_B =A_B =A_B =b =是否继续(Y/N):y-是否从文件读取数据(Y/N):yA =b =展示消元过程(A_B为A的增广矩阵):A_B =A_B =A_B =A_B =A_B =b =是否继续(Y/N):y-是否从文件读取数据(Y/N):yA =b =展示消元过程(A_B为A的增广矩阵):A_B =A_B =A_B =A_B =A_B =b =是否继续(Y/N):

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!