《计算机数值方法》测试题二
六.编程填空(2分×7=14分)
1.用牛顿迭代法解方程:ex-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++)
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++)
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++)
}
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}};
(A) =c (B) O(hp) (C) O(hp+1)
4.方程x3-x2-1=0在x0=1.5附近有根,则迭代格式xk+1=在x0=1.5附近( )。
(A) 不收敛 (B) 局部收敛 (C)不确定
5.下面哪个公式的局部截断误差为O(h3)。( )
(A)Euler公式 (B)三阶Runge—Kutta公式 (C)梯形公式
《计算机数值方法》测试题
一.判断题(1分×10=10分)(对打√,错打×)
1.数值方法是指解数值问题的计算机上可执行的系列计算公式。( )
2.……计算R=e-2.71828≈0.00000182是截断误差。( )
3.不同的矩阵三角分解对应着不同的解法,但在本质上,都是经过A=LU的分解计算,再解Ly=b和Ux=y的线性方程组。( )
4.一般不用n次多项式做插值函数。( )
5.Runge现象说明并非插值多项式的次数越高其精度就越高。( )
6.Romberg算法是利用加速技术建立的。( )
7.从复合求积的余项表达式看,计算值的精度与步长无关。( )
8.可用待定系数法和函数值或公式的线性组合构造新的数值函数求解微分方程。()
9.局部截断误差ek(h)与y(xk)的计算值yk有关。( )
三.选择题(2分×5=10分)
1.设x=Pi;则x*=3.1415有( )位有效数字。
(A) 4位 (B)5位 (C)6位
2.顺序主元aii≠0(i=1,2……k)的充要条件是A的顺序主子式Di(i=1,2……n-1)( )。
(A) 不全为0 (B) 全不为0 (C) 全为0
3.若存在实数P≥1和c>0,则迭代为P阶收敛的条件是( )。
{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);
10.对大型线性方程组和非线性方程采用逐次逼近更为合适。( )
二.填空题(2分×5=10分)
1.设x∈[a,b],x≠x0,则一阶均差f(x)=。
2.矩阵A的F-范数||A||F=。
3.Euler公式为。
4.矩阵 A的条件数Cond(A)∞=。
5. 设x为准确值,x*为x的一个近似值,近似值x*的相对误差Er(x*)=。
四.计算题(7分×6=42分)
1.要使 的近似值的相对误差限小于0.1%要取几位有效数字?
2.用Gauss列主元素消去法求解方程组
12x1-3x2+3x3=15
-18x1+3x2-x3=-15
x1+ x2+ x3=6
3.已知结点如下: 不用开方的办法求 的值。
x
100
121
144
y
10
11
12
4.x3-2x2-4x-7=0在区间[3,4]内有根,自选迭代法求解方程的根,精确到10-3。
x[k]=x[k]/a[k][k];}
for(i=1;i<=n;i++)
printf("\n x[%d]=%f",i,x[i]);
printf("\n-----------------\n");
}
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];
5.用复合公式求解定积分: 1/(1+x2)dx (n=8)
6.在[0,1]上求解初值问题,取步长h=0.2 , y′=x+1,y(0)=1
五.算法设计(7分×2=14分)
1.Lagrange插值公式为:
Pn(x)= i(x)yi
Li(x)= x-xj)/(xi-xj) 给出算法框图
2.给出用二分法解x2-x+2=0的算法框图