ImageVerifierCode 换一换
格式:DOCX , 页数:42 ,大小:767.95KB ,
资源ID:9312463      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9312463.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数值分析实验报告.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数值分析实验报告.docx

1、数值分析实验报告 数值分析上机实验报告课题一 线性方程组的直接算法实验源程序#include stdio.h#include math.hdouble A11010=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,

2、 0,0,-1,8,-3,-24,-8,6,3,-1,;double A288= 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,;double A31010=4,-1,0,0,0,0,0,0,0,0, -1,4,-1,0,0,0,0,0,0,0, 0,-1,4,-1,0,0,0,0,0,0, 0,0,-1,4,-1,

3、0,0,0,0,0, 0,0,0,-1,4,-1,0,0,0,0, 0,0,0,0,-1,4,-1,0,0,0, 0,0,0,0,0,-1,4,-1,0,0, 0,0,0,0,0,0,-1,4,-1,0, 0,0,0,0,0,0,0,-1,4,-1, 0,0,0,0,0,0,0,0,-1,4,;double B110=5,12,3,2,3,46,13,38,19,-21,;double B28=0,-6,20,23,9,-22,-15,45,;double B310=7,5,-13,2,6,-12,14,-4,5,-5,;void lzy(double a1010,double b10,int

4、 n) int i,j,k; double l,x10,temp; for(k=0;kn-1;k+) for(j=k,i=k;jn;j+) if(j=k) temp=fabs(ajk); else if(tempfabs(ajk) temp=fabs(ajk); i=j; if(temp=0) printf(1无解!n); return; else for(j=k;jn;j+) temp=akj; akj=aij; aij=temp; temp=bk; bk=bi; bi=temp; for(i=k+1;in;i+) l=aik/akk; for(j=k;j=0;i-) temp=0; for

5、(j=i+1;jn;j+) temp=temp+aij*xj; xi=(bi-temp)/aii; for(i=0;in;i+) printf(x%d=%lft,i+1,xi); printf(n); void pfg(double a88,double b8,int n) int i,k,m; double x8,y8,temp; for(k=0;kn;k+) temp=0; for(m=0;mk;m+) temp=temp+pow(akm,2); if(akktemp) return; akk=pow(akk-temp),1.0/2.0); for(i=k+1;in;i+) temp=0;

6、 for(m=0;mk;m+) temp=temp+aim*akm; aik=(aik-temp)/akk; temp=0; for(m=0;m=0;k-) temp=0; for(m=k+1;mn;m+) temp=temp+amk*xm; xk=(yk-temp)/akk; for(i=0;in;i+) printf(x%d=%lft,i+1,xi); printf(n); void zgf(double a1010,double b10,int n) int i; double a010,c10,d10,a110,b110,x10,y10; for(i=0;in;i+) a0i=aii;

7、 if(i0) di-1=aii-1; a10=a00; for(i=0;in-1;i+) b1i=ci/a1i; a1i+1=a0i+1-di+1*b1i; y0=b0/a10; for(i=1;i=0;i-) xi=yi-b1i*xi+1; for(i=0;in;i+) printf(x%d=%lft,i+1,xi); printf(n); void main() Printf(线性方程组的解:(Gauss列主元法)n); lzy(A1,B1,10); printf(正定线性方程组的解:(平方根法)n); pfg(A2,B2,8); printf(三对角方程组的解:(追赶法)n); zgf

8、(A3,B3,10);实验结果:结果分析 从运行结果可以看出,对方程组一和方程组三解得的结果和题中提供的理论值基本相符,解误差可以忽略,但方程组二采用平方根方法的到的结果与理论值相差甚远,原因是方程组的系数矩阵A的条件数Cond(A)非常大,导致系数矩阵A是一个病态矩阵,方程组是一个病态方程组。课题三 线性方程组的迭代法实验源程序#include#includeusing namespace std;#define maxsize 2000/ Jacobi迭代法所对应的函数void Jacobi(double e,int n,double A50,double b) int k,j,i; do

9、uble sum,y; double bestf=0; double x210=0,0,0,0,0,0,0,0,0,0; for(k=0;kmaxsize;) bestf=0; for(i=0;in;i+) sum=0; for(j=0;jn;j+) sum+=Aij*x0j; x1i=x0i+(bi-sum)/Aii; y=x0i-x1i; if(bestffabs(y) bestf=fabs(y); for(i=0;in;i+) x0i=x1i; if(bestf=e) break; k+; for(i=0;in;i+) coutx0i ; coutendl; cout迭代了k次。endl

10、;/ GaussSeidol所对应的函数void GaussSeidol(double e,int n,double A50,double b) int k,j,i; double sum,y; double bestf=0; double x210=0,0,0,0,0,0,0,0,0,0; for(k=0;kmaxsize;) bestf=0; for(i=0;in;i+) sum=0; for(j=0;jn;j+) sum+=Aij*x0j; x1i=x0i+(bi-sum)/Aii; y=x0i-x1i; if(bestffabs(y) bestf=fabs(y); x0i=x1i; k

11、+; if(bestf=e) break; for(i=0;in;i+) coutx0i ; coutendl; cout迭代了k次。endl; / sor迭代法所对应的函数void sor(double w,double e,int n,double A50,double b) int k,j,i; double sum,y; double bestf=0; double x210=0,0,0,0,0,0,0,0,0,0; for(k=0;kmaxsize;) bestf=0; for(i=0;in;i+) sum=0; for(j=0;jn;j+) sum+=Aij*x0j; x1i=x0

12、i+w*(bi-sum)/Aii; y=x0i-x1i; if(bestffabs(y) bestf=fabs(y); x0i=x1i; k+; if(bestf=e) break; for(i=0;in;i+) coutx0i ; coutendl; cout迭代了k次。endl;/主函数void main() int n,i,j; double A5050; double b50; cout请输入数组维数:n; cout请输入数组数据:endl; for(i=0;in;i+) for(j=0;jAij; cout请输入右端项:endl; for(i=0;ibi;double w,e; co

13、ut请输入精度:e; cout请输入sor的松弛因子:w; coutJacobi结果:endl; Jacobi(e,n,A,b); coutGauss-Seidol结果:endl; GaussSeidol(e,n,A,b); coutSOR结果:endl; sor(w,e,n,A,b); 运行结果: :精度同为0.001,松弛因子为1.4的结果迭代次数比松弛因子为1.5时增加了16次。松弛因子同为1.5,精度为0.0001的结果的迭代次数比精度为0.001时多了144 : 结果分析1.体会迭代法求解线性方程组,并能与消去法做以比较消去法是一种求解的直接方法,不考虑计算过程中的舍入误差,运用此类

14、方法经过有限次算术运算就能求出线性方程组的精确解,但由于舍入误差的存在,一般求得的也是近似解。而迭代法与直接方法不同,即使无舍入误差,迭代法也难获得精确解,是一种逐次近似的方法,适于解大型稀疏线性方程组。2. 分别对不同精度要求,如由迭代次数体会该迭代法的收敛快慢 由于在程序运行结果中采用的是精度e=0.001,在下面主要是计算了e=0.0001和e=0.00001并主要针对第二个方程来说明当e=0.001时,三种不同迭代方法的迭代次数依次为1069,133,14当e=0.0001时,三种不同迭代方法的迭代次数依次为1069,570,545当e=0.00001时,三种不同迭代方法的迭代次数依次

15、为1069,1006,1079针对上述数据,可以得出随着精度要求的提高,迭代次数依次增大,收敛的越慢。3.对方程组2,3使用SOR方法时,选取松弛因子=0.8,0.9,1,1.1,1.2等,试看对算法收敛性的影响,并能找出你所选用的松弛因子的最佳者 由于=0.8在程序运行结果中,已经给出了其他几组数的运行结果 对于方程组2, =0.7时,迭代次数为18=0.8时,迭代次数为13 =0.9时,迭代次数为14=1时,迭代次数为133 =1.1时,迭代次数为197=1.2时,迭代次数为228发现w=0.8时,迭代次数最小,为13次。对于方程组3, =0.8时,迭代次数为9 =0.9时,迭代次数为8=

16、1时,迭代次数为9 =1.1时,迭代次数为9=1.2时,迭代次数为12发现=0.9时,迭代次数最小,为8次。课题六 函数插值方法5次Lagrange插值多项式#include#includeusing namespace std;#define N 5float x = 0.4, 0.55, 0.65, 0.80, 0.95, 1.05;float y = 0.41075, 0.57815, 0.69675, 0.90, 1.00, 1.25382;float p(float xx)int i,k;float pp = 0, m1, m2;for( i=0; i=N; i+ )m1 = 1;

17、m2 = 1;for( k=0; k=N; k+ )if( k != i ) m1 *= xx - xk;m2 *= xi - xk; pp += yi * m1/m2;return pp;void main() float x,y; cout请输入x,y的值:x; ciny;cout结果为:endl;coutf(x)=p(x)endl;coutf(y)=p(y)endl; 运行结果课题九 数值积分源程序#include#includeusing namespace std;/问题1所对应的梯形公式double T1(float a,float b,int n ) double x,sum;

18、double h; int k=0; h=(b-a)/n; sum=sqrt(4-sin(a)*sin(a); for(k=1;kn;k+) x=a+k*h; sum+=2*sqrt(4-sin(x)*sin(x); sum+=sqrt(4-sin(b)*sin(b); sum=(h/2)*sum; return sum;/问题1所对应的Simpson公式double S1(float a,float b,int n ) double x,sum=0; double h; int k=0; h=(b-a)/n;sum=sqrt(4-sin(a)*sin(a); for(k=1;ke) sum=

19、0; for(i=1;i=pow(2,k-1);i+) sum+=sqrt(4-sin(a+(2*i-1)*c/pow(2,k)*sin(a+(2*i-1)*c/pow(2,k); t10=0.5*t00+c*sum/pow(2,k); for(j=1;j=k;j+) t1j=(pow(4,j)*t1j-1-t0j-1)/(pow(4,j)-1); bestf=t1j-1-t0j-1; bestf=fabs(bestf); for(j=0;j=k;j+) t0j=t1j; k+; sum=t1k-2; return sum;/问题2所对应的梯形公式double T2(float a,float

20、 b,int n ) double x,sum; double h; int k=0; h=(b-a)/n; sum=1; for(k=1;kn;k+) x=a+k*h; sum+=2*sin(x)/x; sum+=sin(b)/b; sum=(h/2)*sum; return sum;/问题2所对应的Simpson公式double S2(float a,float b,int n ) double x,sum=0; double h; int k=0; h=(b-a)/n;sum=1; for(k=1;ke) sum=0; for(i=1;i=pow(2,k-1);i+) sum+=sin(

21、a+(2*i-1)*c/pow(2,k)/(a+(2*i-1)*c/pow(2,k); t10=0.5*t00+c*sum/pow(2,k); for(j=1;j=k;j+) t1j=(pow(4,j)*t1j-1-t0j-1)/(pow(4,j)-1); bestf=t1j-1-t0j-1; bestf=fabs(bestf); for(j=0;j=k;j+) t0j=t1j; k+; sum=t1k-2; return sum; /问题3所对应的梯形公式double T3(float a,float b,int n ) double x,sum; double h; int k=0; h=(b-a)/n; sum=exp(a)/(4+a*a); for(k=1;kn;k+) x=a+k*h; sum+=2*exp(x)/(4+x*x); sum+=exp(x)/(4+x*x); sum=(h/2)*sum; return sum;/问题3所对应的Simpson公式do

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1