2014-03-25计算数值方法实验指导书.docVIP

  • 4
  • 0
  • 约4.27千字
  • 约 10页
  • 2017-02-08 发布于重庆
  • 举报
2014-03-25计算数值方法实验指导书

《计算数值方法》 实验指导书 王峥 2012-3-8 目录 目录 1 一、实验目的 1 二、实验内容 1 三、实验要求 3 四、示例程序 3 五、实验报告要求 7 六、参考资料 7 一、实验目的 《计算数值方法》是一门实践性和实用性都很强的课程,学习的目的在于应用。本配合课堂教学实践环节巩固课堂和书本上所学知识加强能力提高启发创新思想。×10-5 (2) 线性方程组的直接解法 合理利用Gauss消元法、LU分解法、追赶法求解下列方程组: ① ② ③ A= 28 50 77 -69 -84 -65 b= -349 84 -100 -15 -31 -26 -5 -95 -25 30 -86 -34 -4 30 357 -21 7 -26 -86 -75 88 630 -85 95 -47 24 12 -66 -114 -57 -85 4 50 -11 54 340 ④(n=5,10,100,…) (3) 线性方程组的迭代解法 使用雅可比迭代法或高斯-赛德尔迭代法对下列方程组进行求解。 (4)矩阵特征值与特征向量问题 使用幂法求A模为最大的特征值及其相应的特征向量。 A= 2 3 5 10 3 4 3 6 1 (5)代数插值 使用拉格朗日插值法或牛顿插值法求解:已知f(x)在6个点的函数值如下表所示,运用插值方法,求f(0.596)的近似值。 x 0.40 0.55 0.65 0.80 0.90 1.05 f(x) 0.41075 0.57815 0.69675 0.88811 1.02652 1.25386 (6) 最小二乘法拟合多项式 给定数据点(xi ,yi),用最小二乘法拟合数据的多项式,并求平方误差。 xi 0 0.5 0.6 0.7 0.8 0.9 1.0 yi 1 1.75 1.96 2.19 2.44 2.71 3.00 三、实验要求 (1) 应用结构化程序设计编出通用程序,源程序要有详细的注释和说明; (2) 比较计算结果,分析数值解误差的原因; (3) 实验完成,要求提交实验结果并写出报告,分析计算结果是否符合问题的要求,找出计算成功的原因或计算失败的教训。 四、示例程序 (1)Gauss消元法 #include stdafx.h #include stdio.h double a[15][15],a0[15][15]; double b[15],b0[15],l[15]; int n; void displayA() { printf(\n); for(int j=1;j=n;j++) { for(int i=1;i=n;i++) printf(a[%d][%d]=%f ,j,i,a[j][i]); printf(b[%d]=%f\n,j,b[j]); } for(j=1;j=n;j++) printf(l[%d]=%f ,j,l[j]); printf(\n); } void main() { FILE *f; int i,j,k; f=fopen(Gaussdata.txt,r); fscanf(f,%d,n); for(i=1;i=n;i++) { for(j=1;j=n;j++) { fscanf(f,%lf,a[i][j]); a0[i][j]=a[i][j]; } fscanf(f,%lf,b[i]); b0[i]=b[i]; } displayA(); fclose(f); k=1; do { for(i=1;i=n;i++) { if(i==k) continue; l[i]=a0[i][k]/a0[k][k]; } for (j=k+1;j=n;j++) a[k][j]=a0[k][j]/a0[k][k]; b[k]=b0[k]/a0[k][k]; for(i=1;i=n;i++) { if(i==k) continue; for(j=k+1;j=n;j++) a[i][j]=a0[i][j]-l[i]*a0[k][j]; b[i]=b0[i]-l[i]*b0[k]; } displayA(); for(i=1;i=n;i++) { for(j=k+1;j=n;j++) a0[i][j]=a[i][j]; b0[i]=b[i]; } if(k==n) break; k++; }while(1); for(i=1;i=n;i++

文档评论(0)

1亿VIP精品文档

相关文档