数值分析列主元高斯消去顺序高斯平方根法追赶法_第1页
数值分析列主元高斯消去顺序高斯平方根法追赶法_第2页
数值分析列主元高斯消去顺序高斯平方根法追赶法_第3页
数值分析列主元高斯消去顺序高斯平方根法追赶法_第4页
数值分析列主元高斯消去顺序高斯平方根法追赶法_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

1、课题名称:课题一 解线性方程组的直接方法解决的问题:给定三个不同类型的线性方程组,用适当的直接法求解。采用的数值方法:对第一个普通的线性方程组,采用了高斯顺序消去法和高斯列主元消去法。对第二个正定线性方程组,采用了平方根法。对第三个三对角线性方程组,采用了追赶法。算法程序:(1) 普通的线性方程组顺序消去法#include<stdio.h>#include<math.h>int main(void) float A1010= 4,2,-3,-1,2,1,0,0,0,0, 8,6,-5,-3,6,5,0,1,0,0, 4,2,-2,-1,3,2,-1,0,3,1, 0,-

2、2,1,5,-1,3,-1,1,9,4, -4,2,6,-1,6,7,-3,3,2,3, 8,6,-8,5,7,17,2,6,-3,5, 0,2,-1,3,-4,2,5,3,0,1, 16,10,-11,-9,17,34,2,-1,2,2, 4,6,2,-7,13,9,2,0,12,4, 0,0,-1,8,-3,-24,-8,6,3,-1 ; float b10= 5,12,3,2,3,46,13,38,19,-21; float x10= 0; float Aik,S,temp; int i,j,k; int size=10; for(k=0; k<size-1; k+) if(!Ak

3、k) return -1; for(i=k+1; i<size; i+) Aik=Aik/Akk; for(j=k; j<size; j+) Aij=Aij-Aik*Akj; bi=bi-Aik*bk; printf("An"); for(i=0; i<size; i+) for(j=0; j<size; j+) printf("%f ",Aij); printf("n"); printf("bn"); for(i=0; i<size; i+) printf("%f &quo

4、t;,bi); printf("nn"); xsize-1=bsize-1/Asize-1size-1; for(k=size-2; k>=0; k-) S=bk; for(j=k+1; j<size; j+) S=S-Akj*xj; xk=S/Akk; printf("x=n"); for(i=0; i<size; i+) printf("%f ",xi); return 0;列主元消去法#include<stdio.h>#include<math.h>int main(void) floa

5、t A1010= 4,2,-3,-1,2,1,0,0,0,0, 8,6,-5,-3,6,5,0,1,0,0, 4,2,-2,-1,3,2,-1,0,3,1, 0,-2,1,5,-1,3,-1,1,9,4, -4,2,6,-1,6,7,-3,3,2,3, 8,6,-8,5,7,17,2,6,-3,5, 0,2,-1,3,-4,2,5,3,0,1, 16,10,-11,-9,17,34,2,-1,2,2, 4,6,2,-7,13,9,2,0,12,4, 0,0,-1,8,-3,-24,-8,6,3,-1 ; float b10= 5,12,3,2,3,46,13,38,19,-21; float

6、x10= 0; float Aik,S,temp; int i,j,k; float max; int col; int size=10; for(k=0; k<size-1; k+) max=fabs(Akk); col=k; for(i=k; i<size; i+) if(max<fabs(Aik) max=fabs(Aik); col=i; for(j=k; j<size; j+) temp=Acolj; Acolj=Akj; Akj=temp; temp=bcol; bcol=bk; bk=temp; if(!Akk) return -1; for(i=k+1;

7、 i<size; i+) Aik=Aik/Akk; for(j=k; j<size; j+) Aij=Aij-Aik*Akj; bi=bi-Aik*bk; printf("An"); for(i=0; i<size; i+) for(j=0; j<size; j+) printf("%f ",Aij); printf("n"); printf("bn"); for(i=0; i<size; i+) printf("%f ",bi); printf("nn&

8、quot;); xsize-1=bsize-1/Asize-1size-1; for(k=size-2; k>=0; k-) S=bk; for(j=k+1; j<size; j+) S=S-Akj*xj; xk=S/Akk; printf("x=n"); for(i=0; i<size; i+) printf("%f ",xi); return 0;(2) 对称正定线性方程组平方根法:#include <stdio.h>#include <math.h>#define n 8int main(void) flo

9、at A88= 4,2,-4,0,2,4,0,0, 2,2,-1,-2,1,3,2,0, -4,-1,14,1,-8,-3,5,6, 0,-2,1,6,-1,-4,-3,3, 2,1,-8,-1,22,4,-10,-3, 4,3,-3,-4,4,11,1,-4, 0,2,5,-3,-10,1,14,2, 0,0,6,3,-3,-4,2,19 ; float g88= 0; float b8= 0,-6,6,23,11,-22,-15,45; float x8= 0; float y8= 0; int k,m,i,sq; for(k=0; k<n; k+) float p=0,q=0,s=

10、0; for(m=0; m<=k-1; m+) p=p+Akm*Akm; gkk=sqrt(Akk-p); Akk=gkk; for(i=k+1; i<n; i+) q=0; for(m=0; m<=k-1; m+) q=q+Aim*Akm; gik=(Aik-q)/Akk; Aik=gik; s=0; for(m=0; m<=k-1; m+) s=s+Akm*ym; yk=(bk-s)/Akk; xn-1=yn-1/An-1n-1; for(k=n-2; k>=0; k-) float sum=0; for(m=k+1; m<n; m+) sum=sum+

11、Amk*xm; xk=(yk-sum)/Akk; for(sq=0; sq<n; sq+) printf("%f ",xsq); return 0;(3)三对角线性方程组追赶法#include <stdio.h>#include <math.h>#define n 10int main(void) float a10=4,4,4,4,4,4,4,4,4,4; float c9=-1,-1,-1,-1,-1,-1,-1,-1,-1; float d9=-1,-1,-1,-1,-1,-1,-1,-1,-1; float b10=7,5,-13,2,

12、6,-12,14,-4,5,-5; float x10=0; float y10=0; float arf10=0; float bt9=0; arf0=a0; int i; for(i=0;i<n-1;i+) bti=ci/arfi; arfi+1=ai+1-di+1*bti; /printf("%f %f n",bti,arfi+1); y0=b0/arf0; /printf("%fn",y0); for(i=1;i<n;i+) yi=(bi-di*yi-1)/arfi; /printf("%fn",y1); xn-1

13、=yn-1; for(i=n-2;i>=0;i-) xi=yi-bti*xi+1; for(i=0;i<n;i+) printf("%lf ",xi); return 0;数值结果:(1) 普通的线性方程组顺序消去法列主元消去法(2) 对称正定线性方程组平方根法:(3)三对角线性方程组追赶法:对实验计算结果的讨论和分析:(1) 普通的线性方程组顺序消去法x1x10的绝对误差:0.000001,-0.000001,0.000001,0,0.000001,0,0.000002,0,0,0x1x10的相对误差:0.000001,0.000001,-1,0,0.0000005,0,0.00000067,0,0,0误差很小,基本可以忽略。高斯消去法由消元和回代两个过程组成。消元过程就是将原增广矩阵A,b中矩阵A的部分约化为上三角矩阵,然后就可以进行回代过程,从最后一个方程开始,依次求出xn,xn-1一直到x1.到这里,顺序高斯消去法完成。列主元消去法经过计算,列主元高斯消去法的误差也很小,它是高斯消去法的改进,因为顺序消去法的主元素如果等于0,消元过程就无法进行,如果它很小,也会导致它做除数的误差会增加,导致精度下降,因此在消元过程中选择绝对值较大的元素作为主元素是必要的。这就是列主元消去法。(2)

温馨提示

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

评论

0/150

提交评论