文档详情

求解线性方程组迭代法与插值法.doc

发布:2017-05-14约4.19千字共9页下载文档
文本预览下载声明
数值分析实验报告三 求解线性方程组的迭代方法和插值法(2学时) 班级专业:11信科一班 姓名:黄文康 学号:16 一 实验目的 1.掌握求解线性方程组的简单迭代法; 2. 掌握求解线性方程组的赛德尔迭代法。 3. 掌握不等距节点下的牛顿插值公式以及拉格朗日插值公式。 二 实验内容 1.使用简单迭代法求解方程组(精度要求为): 2.使用赛德尔迭代法求解上述方程组(精度要求为): 3.已知函数表: x 1.45 1.36 1.14 y 3.14 4.15 5.65 用拉格朗日插值公式计算所对应的近似值。 4. 已知函数表: X 93.0 96.2 100.00 104.2 108.7 Y 11.38 12.80 14.70 17.07 19.91 用牛顿插值公式求的近似值。 三 实验步骤(算法)与结果 1 简单迭代法(雅可比迭代法) #include stdio.h #include stdlib.h #include conio.h #include math.h #define N 10 int main() { int k,i,j,n; float a[N][N]={0},b[N],p[N]={0},x2[N]={0},x1[N]={0},sum=0,g[N][N]={0}; printf(方程组为:\n\t20*x1+2*x2+3*x3=24 \n\tx1+8*x2+x3=12 \n\t2*x1-3*x2+15*x3=30); printf(\n转换后的迭代式:\n\tx1=-0.1*x1-0.15*x3+1.2 \n\tx2=-.125*x1-0.125*x2+1.5 \n\tx3=2.0/15*x1+0.2*x2+2); printf(\n输入根的个数:\n); scanf(%d,n); printf(输入系数矩阵:\n); for(i=1;i=n;i++) for(j=1;j=n;j++) scanf(%f,a[i][j]); printf(输入b[i]:\n); for(i=1;i=n;i++) { scanf(%f,b[i]); p[i]=a[i][i]; } //开始求解 for(i=1;i=n;i++) for(j=1;j=n;j++) { if(i!=j) g[i][j]=-a[i][j]/p[i]; else g[i][i]=0; } for(i=1;i=n;i++) b[i]=b[i]/p[i]; for(k=1;k=6;k++) { for(i=1;i=n;i++) {sum=0; for(j=1;j=n;j++) sum+=g[i][j]*x1[j]; x1[i]=sum+b[i]; } } for(i=1;i=n;i++) printf(x[%d]=%-9.6f,i,x1[i]); printf(\n); return 0; } 2 赛德尔迭代法 #include stdio.h #include stdlib.h #include conio.h #include math.h #define N 10 int main() { int k,i,j,n; float a[N][N]={0},b[N],p[N]={0},x2[N]={0},x1[N]={0},sum=0,g[N][N]={0}; printf(方程组为:\n\t20*x1+2*x2+3*x3=24 \n\tx1+8*x2+x3=12 \n\t2*x1-3*x2+15*x3=30); printf(\n转换后的迭代式:\n\tx1=-0.1*x1-0.15*x3+1.2 \n\tx2=-.125*x1-0.125*x2+1.5 \n\tx3=2.0/15*x1+0.2*x2+2); printf(\n输入根的个数:\n); scanf(%d,n); printf(输入系数矩阵:\n); for(i=1;i=n;i++) for(j=1;j=n;j++) scanf(%f,a[i][j]); printf(输入b[i]:\n); for(i=1;i=n;i++) { scanf(%f,b[i]); p[i]=a[
显示全部
相似文档