《计算机数值方法》测试题
一.判断题(1分×10=10分)(对打√,错打×)
1. 数值方法是指解数值问题的计算机上可执行的系列计算公式。(    )
2. 已知e=2.71828182……计算R=e-2.71828≈0.00000182是截断误差。(    )
3. 不同的矩阵三角分解对应着不同的解法,但在本质上,都是经过A=LU 的分解计算,再解Ly=b 和Ux=y 的线性方程组。(  )
4. 一般不用n 次多项式做插值函数。(    )
5. Runge 现象说明并非插值多项式的次数越高其精度就越高。(    )
6. Romberg 算法是利用加速技术建立的。(    )
7. 从复合求积的余项表达式看,计算值的精度与步长无关。(    )
8. 可用待定系数法和函数值或公式的线性组合构造新的数值函数求解微分方程。(  )
9. 局部截断误差e k (h )与y (x k )的计算值y k 有关。(    )
10.对大型线性方程组和非线性方程采用逐次逼近更为合适。(  )
二.填空题(2分×5=10分)
1.  设x ∈[a,b],x ≠x 0,则一阶均差f (x )=                      。
2.  矩阵A 的F-范数||A||F =                      。
3.  Euler 公式为                        。
4.  矩阵 A 的条件数Cond (A )∞=                。
5. 设x 为准确值,x *为x 的一个近似值,近似值x *的相对误差E r (x *)=          。
三.选择题(2分×5=10分)
1.设x=Pi ;则x *=3.1415有(    )位有效数字。
(A) 4位    (B)5位    (C)6位
2.顺序主元a ii ≠0(i=1,2……k )的充要条件是A 的顺序主子式D i (i=1,2……n-1)
(  )。 (A) 不全为0      (B) 全不为0      (C) 全为0
3.若存在实数P ≥1和c >0,则迭代为P 阶收敛的条件是(  )。
(A) ∞−→−k lim p k k e e |
|||1+=c      (B) O(h p )        (C) O(h p+1) 4.方程x 3-x 2-1=0在x 0=1.5附近有根,则迭代格式x k+1=在x 0=1.5附近(    )。
(A) 不收敛          (B) 局部收敛        (C)不确定
5.下面哪个公式的局部截断误差为O (h 3)。(  )
(A )Euler 公式    (B )三阶Runge —Kutta 公式  (C )梯形公式
四.计算题(7分×6=42分)
1. 要使18的近似值的相对误差限小于0.1%要取几位有效数字?
2.用Gauss 列主元素消去法求解方程组
12x 1-3x 2+3x 3=15  -18x 1+3x 2-x 3=-15
x 1+ x 2+ x 3=6
3
117的值。
4.x3-2x-4x-7=0在区间[3,4]内有根,自选迭代法求解方程的根,精确到10-3。
5.用复合公式求解定积分:⎰101/(1+x2)dx (n=8)
6.在[0,1]上求解初值问题,取步长h=0.2 ,y′=x+1,y(0)=1
五.算法设计(7分×2=14分)
1.Lagrange插值公式为:
P n(x)=∑
=
n
i
l
i
(x)y i
L i(x)=∏
=
n
i0
(x-x j)/(x i-x j)给出算法框图2.给出用二分法解x2-x+2=0的算法框图
六.编程填空(2分×7=14分)
1.用牛顿迭代法解方程:e x-3-x=0
#include<stdio.h>
#include<math.h>
#define x0 2
#define m 1000
#define eps 0.000001
main()
{int i;double x1=x0,x2=x0;
for(i=0;i< ;i++)
{printf("%d %f\n",i,x2);
x2=(x1-(exp(x1)-3-x1)/(exp(x1)-1));
if(fabs(x2-x1) eps)
{printf("the root is x=%f,k=%d\n",x2,i);
return;
}
x1=x2;
}
printf("迭代%d 次之后,没有解.\n",m);
}
2.用列主元素消去法解方程组:
x1+2x2-x3=3
x1-x2+5x3=0
4x1+x2-2x3=0
#include<math.h>
#include<stdio.h>
#define n 3
static double aa [n][n+1]={{1,2,-1,3},{1,-1,5,0},{4,1,-2,2}}; main()
{int i,j,det,k,c;
double a [n+1][n+2],x[n+1],r,t,m;
for(i=1;i<= ;i++)
for(j=1;j<= ;j++)
在常用的正则化计算方法中 属于
a[i][j]=aa[i-1][j-1];
for (k=1;k<=n-1;k++)
{r=a[k][k];c=k;
for(i=k;i<=n;i++)
if(fabs(a[i][k]) fabs(r))
{r=a[i][k];c=i;}
if(c!=k)
for(j=k;j<=n+1;j++)
{t=a[k][j]; =a[c][j];a[c][j]=t;}
for(i=k+1;i<=n;i++)
{m=a[i][k]/a[k][k];
for(j=k+1;j<=n+1;j++)
a[i][j]=a[i][j]-m*a[k][j];
}
if(fabs(a[n][n])<1e-12)
printf("\n det=0. fail! \n");
}
for(k=n;k>=1;k--)
{x[k]=a[k][n+1];
for(j=k+1;j<=n;j++)
x[k]= -a[k][j]*x[j];
x[k]=x[k]/a[k][k];}
for(i=1;i<=n;i++)
printf("\n x[%d]=%f",i,x[i]); printf("\n-----------------\n"); }

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。