数值分析上机题答案Word文档格式.docx
《数值分析上机题答案Word文档格式.docx》由会员分享,可在线阅读,更多相关《数值分析上机题答案Word文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
(3)ak=rq(交换乘法次序),令k=k+1,ak+1=qktakqk
(4)返回到2,直到k=m,输出a的主对角元素。
10、什么是高斯型求积公式和高斯点?
一般可设求积公式=in(?
),为具有n个节点的插值求积公式,且具有2n+1次
最高代数精度,则称其求积点x0,x1,…,xn称为高斯点具有,相应的公式称为高斯
型求积公式。
11、什么是插值计算的龙格现象?
增加插值节点,提高插值多项式的次数,可以使插值函数在更多的点和所逼近的函数取相同的值,但会使插值函数在两端发生激烈的振荡,这就是插值计算的龙格现象。
12、龙格—库塔方法的基本思想是什么?
基本思想是,在每一步内多预报几个点的斜率值,将其加权平均作为平均斜率,从而构造出更高的计算格式。
具体做法是,用函数f(x,y)在若干点上的函数值的线性组合来构造近似公式,构造时让近似公式在(xi,yi)处的泰勒展开式
和解y(x)在xi处的泰勒展开式的前面几项重合,从而使近似公式达到所需要的
阶数,这样既避免求偏导数,又提高了计算方法的精度。
二、计算题
1、随机生成4*4的矩阵,做列主元的三角分解,并验证等式pa=lu。
解:
a=rand(4)%随机生成的四位矩阵
a=
0.81470.63240.95750.9572
0.90580.09750.96490.4854
0.12700.27850.15760.8003
0.91340.54690.97060.1419[l,u,p]=lu(a)
l=
1.0000000
0.99171.000000
0.8920-0.32501.000000.1390-0.45520.25671.0000
u=
0.91340.54690.97060.1419
0-0.44480.00240.3447
000.09250.9426
0000.6955
p=
0001
0100
1000
0010
p*a%验证pa=lu
ans=
l*u
2、用lagrange插值和newton插值拟合[0,2*pi]上的sin函数,并画图比较。
建立拉格朗日函插值函数
function[yt,l]=laginterp1(x,y,xt)
%拉格朗日差值
%x,y:
差值条件
%xt:
用拉格朗日插值函数要计算的自变量,可以是多个
%yt:
用拉格朗日插值函数计算出xt对应的函数值数组
%l:
拉格朗日插值多项式表达式
symst;
n=length(x);
ny=length(y);
ifn~=ny
error(差值节点x和函数值y不一致);
end
l=0.0;
fork=1:
n
lk=1;
forj=1:
ifj~=k
lk=lk*(t-x(j))/(x(k)-x(j));
end;
l=l+y(k)*lk;
simplify(l);
%简化拉格朗日插值多项式表达式l=collect(l);
%将拉格朗日插值多项式展开yt=subs(l,t,xt);
%计算插值点处的函数值
建立牛顿函数:
function[yt,n]=newtinterp(x,y,xt)
%已知数据点的牛顿插值
要计算的插值点,可以是多个
用牛顿插值函数算出xt对应的函数值数组
牛顿插值多项式表达式
a=zeros(1,n);
n=y
(1);
w=1;
fork=1:
n-1
yy=zeros(1,n);
%记录差商forj=k+1:
yy(j)=(y(j)-y(k))/(x(j)-x(k));
a(k)=yy(k+1);
w=w*(t-x(k));
n=n+a(k)*w;
y=yy;
yt=subs(n,t,xt);
simplify(n);
n=collect(n);
%将插值多项式展开n=vpa(n,6);
%系数转化为6位精度
命令:
x=0:
pi/10:
2*pi;
y=sin(x);
z=0:
pi/20:
y1=laginterp1(x,y,z);
%拉格朗日拟合法y2=newtinterp(x,y,z);
%牛顿拟合法
figure;
plot(z,sin(z),--r,z,y1,-b,z,y2,-.k)%绘制函数图象holdon
plot(x,y,+)
xlabel(x)
ylabel(y)
【篇二:
数值分析测试卷及详细答案解答】
1.f
?
2,5,?
3,4?
表示多少个机器数(c).
a64b129c257d256
2.以下误差公式不正确的是(d)
a.?
x1*?
x2*?
b.?
c.?
x1?
d.?
x1*/x2*?
3.
设a?
1?
6,从算法设计原则上定性判断如下在数学上等价的表达式,哪一个在数值计算上将给出a较好的近似值?
(d)
a
1(2?
1)
6
b99?
702c(3?
22)d
3
1(3?
22)
4.一个30阶线性方程组,若用crammer法则来求解,则有多少次乘法?
(a)
5.用一把有毫米的刻度的米尺来测量桌子的长度,读出的长度1235mm,桌子的精确长度记为(d)
二、填空
1.构造数值算法的基本思想是。
2.十进制123.3转换成二进制为1111011.01001。
3.二进制110010.1001转换成十进制为。
.转换成十进制为4.二进制0101
5
。
7
5.已知近似数x*有两位有效数字,则其相对误差限6.ln2=0.69314718…,精确到10?
3的近似值是0.693。
*7.x?
3.1415926?
,则x1?
3.1416,x*2?
3.141的有效数位分别为
8.设
x*?
2.001,y*?
0.8030是由精确值x和y经四舍五入得到的近似值,则
y*的误差限-3。
9.设
x?
2.3149541?
,取5位有效数字,则所得的近似值x*?
p?
x?
的计算量较小的一个算
10.设有多项式函数p?
2x3?
10x2?
7x?
8,给出计算法
((2x+10)x-7)x+8。
三、计算
1.指出下列经四舍五入得的有效数字位数,及其绝对误差限和相对误差限。
2.0004-0.00200
1
故x=2.0004有5位有效数字.a1=2,相对误差限?
r?
101?
5?
0.000025
2?
a1
―
x2=-0.00200,绝对误差限0.000005,因为m=-2,n=3,x2=-0.00200有3位有效数
字.a1=2,相对误差限?
r=?
3=0.0025
*?
1000和它的两个近似值为x1?
999.9和x*2?
1000.1分别计算它们
的有效数位及绝对误差限,根据结果判断以下结论是否正确:
对准确值x的两个近似值x1,x2,则有效数位n大的则其绝对误差限就越小?
2.对准确值x
10m?
n,n越大,通常绝对误差限越小,但绝对误差限也和m有2
*
关,因此上述结论并不总是正确。
如准确值x?
1000,它的两个近似值为x1?
999.9和
******
x2?
1000.1,x1,x2的绝对误差限均为x?
x2?
0.1,但x1有3位有效数字,
解答:
x*?
而x2则有4位有效数字。
3.如要求?
10
的近似值的相对误差小于?
0.1%,则?
至少要取几位有效数字?
(?
10)10(?
*)9?
)?
)
r(?
0.1%解:
*10*10*
(?
)(?
从而?
10
4
,又?
n,a1?
3,即要求2a1
n?
4,从而解出n?
52a1
4.设x?
0,已知近似值x*的相对误差为a,估计lnx*的绝对误差。
(lnx*)*?
(x*)?
(x*)1a*
r(lnx*)?
lnx?
r*****
lnxlnxxlnxlnx
(lnx*)?
a
姓名班级学号一、选择题
1.通过点(x0,y0),(x1,y1),(x2,y2)所作的插值多项式是(c)
(a)二次的(b)一次的(c)不超过二次的(d)大于二次的
3.通过四个互异节点的插值多项式p(x),只要满足(c),则p(x)是不超过一次多项式。
(a)初始值y0=0(b)所有一阶差商为0(c)所有二阶差商为0(d)所有三阶差商为03.通过点(x0,y0),(x1,y1)的lagrange插值基函数l0?
l1?
满足(a,c)?
a?
l0?
x0?
1,
l1?
1?
b?
1,l1?
0l1?
0?
d?
0,l1?
yk?
k?
1,2,?
n。
这n个点的拟合直线y?
a0?
a1x,则a0,a1
c?
4.已知n对观察数据?
xk
是使(c)最小的解。
(a)
(c)
y
k?
1nk?
1
n
k
a1xk(b)?
yk?
a1xk?
1n
(b)?
a1xk2?
2
5.设p?
是在区间上的[a,b]上的y?
f?
分段线性插值函数,以下条件中不是p?
必须满足的条件是(c)
(a)p?
在[a,b]上连续,(b)p?
xk?
yk,(c)p?
在[a,b]上可导,
(d)p?
在各子区间上是线性函数
`1.设一阶差商f[x1,x2]?
f(x2)?
f(x1)?
4?
3,f[x2,x3]?
f(x3)?
6?
5,则
x3?
x24?
22x2?
x12?
1二阶差商f[x1,x2,x3]?
2.设f(x)?
3x?
5,xk?
kh,k?
0,1,?
,则f[xn,xn?
1,xn?
2]?
和f[xn,xn?
2,xn?
3]?
3.设f(x)?
ax?
bx?
c(a?
0),取5个不同节点作f(x)的拉格朗日插值多项式p(x),则
32
p(x)是次多项式。
那么由这些数据构造的牛顿插值多项式的最高次幂的系数是
5.区间[a,b]上的三次样条插值函数s?
在[a,b]上具有直到阶的连续导数。
三、计算和证明
1.已知函数y=f(x)的观察数据为
试构造f(x)的拉格朗日多项式pn(x),并计算f(-1)。
先构造基函数
x(x?
)(x?
)x(x?
)(x?
)l?
l?
))(?
l?
2)x(x?
4)(x?
4)(x?
)l3(x)?
(5?
2)(5?
0)(5?
4)35(?
所求三次多项式为p3(x)=
yl
kk
(x)
+
=?
x(x?
)+(x?
)-(?
=x?
p3(-1)=?
2.已知函数y?
f(x)的数据如下表。
计算它的各阶差商和n3(x)的形式,
解:
先构造差商表如下:
-2-56-1-1640
0-214-131-20-72343120
(x)=–56+40(x+2)–13(x+2)(x+1)+2(x+2)(x+1)x3
a?
b
c[a,b],试证:
maxf(x)?
[证:
由于f(x)的线性插值
f(a)?
f(b)]?
(b?
a)2maxf(x)
ba?
bb?
a8
f(b)?
f(a)x?
a)?
f(a)?
f(b)?
l1(x)(直线的点斜式)
b?
aa?
f(a)
a)]于是maxf(x)?
[f(a)?
f(?
a)(x?
b)(a?
b)?
l1(x)?
max
b2!
max(x?
b)maxf(x)
b2a?
12
a)maxf(x)
b8
4.要给出y?
cosx等距节点函数表,如用线性插值计算y的近似值,使其截断误差限为1
,则函数表的步长应取多大?
5
5.给定数据表
试用三次多项式以最小二乘法拟合所给数据.
6.已知
f?
ln?
2?
?
1,求f
的二次最佳平方逼近,其中取权为1,并
求平方误差。
1?
x,解:
由于勒让得多项式在[-1,1]上正交,所以设?
1,?
3x2?
a2
而?
0,?
2,?
1,?
22
?
35
y,?
1.29584,?
0.352082,?
0.0374965
得,a0
0.647918,a1?
0.528122,a2?
-0.0937412
所以?
0.647918?
0.528122x-0.0468706(3x
-1)
其平方误差为
y?
dx=0.0524489
【篇三:
东南大学数值分析上机题(上)】
名:
学号:
专业:
2013年10月27日
第一章
舍入误差和有效数设sn?
j?
2n
311?
,其精确值为1?
12?
2nn?
111
,计算sn的通用程序。
222
13?
1n?
11,计算s的通用程序。
(2)编制按从小到大的顺序sn?
n2?
1(n?
1)2?
122?
1
(1)编制按从大到小的顺序sn?
(3)按两种顺序分别计算s102,s104,s106,并指出有效位数。
(编制程序时用单精度)(4)通过本上机题,你明白了什么?
(1)
#includestdio.hvoidmain(){floatn,i,s;
printf(pleaseinputn=);
scanf(%f,n);
for(i=2,s=0;
i=n;
s+=1/(i*i-1),i++);
printf(s=%f\n,s);
}
(2)
for(i=n,s=0;
i=2;
s+=1/(i*i-1),i--);
(3)按从大到小顺序:
按从小到大顺序:
s102=0.740049有效位数6位s104=0.749852有效位数3位s106=0.749852有效位数3位s102=0.740050有效位数5位
s104=0.749900有效位数6位s106=0.749999有效位数6位
(4)通过上述实验数据可以看出此次算法使用从小到大的顺序进行得到的数据相对而言更精确,可以得到这样的启示:
在计算数值时,要先分析不同算法对结果的影响,避免大数吃小数的现象,找出能得到更精确的结果的算法。
第二章
(上机题)newton迭代法
(1)给定初值x0及容许误差?
,编制newton法解方程f(x)?
0根的通用程序。
(2)给定方程f(x)?
x/3?
0,易知其有三个根x1?
,x2?
0,x3?
1.由newton方法的局部收敛性可知存在?
0,当x0?
)时,newton迭代序列收敛于根x2。
试确定尽可能大的?
2.试取若干初始值,观察当x0?
1),(?
),(?
1),(1,?
)时newton序列是否收敛以及收敛于哪一个根。
(3)通过本上机题,你明白了什么?
(1)#includeiostream.h#includemath.h
#defineeps0.000001floatf(floatx){floatf;
f=x*x*x/3-x;
return(f);
floatdf(floatx){floatdf;
df=x*x-1;
return(df);
voidmain(void){floatx0,x1,a;
intk=0;
cout请输入初值x0:
;
cinx0;
do{a=-f(x0)/df(x0);
x1=x0+a;
k++;
x0=x1;
}while(fabs(a)eps);
coutk\tx0;
(2)1#includeiostream.h#includemath.h
voiddelay(intn){for(n=10000;
n0;
n--);
}#defineeps0.01
floatf(floatx){floatf;
return(f);
floatdf(floatx){floatdf;
intjudgement(floatz){intcount=5;
floatx0,x1,type,type1;
x0=z;
while(count--0){x1=x0-f(x0)/df(x0);
type=fabs(x1);
type1=fabs(x1-x0);
coutcount=count\ttype=type\ttype1=type1\n;
if(fabs(x1-x0)eps)return1;
delay(30000);
}return0;
voidmain(void){floatdelta=0;
intflag=1;
while(flag==1){cout方程的根为:
\n;
delta+=eps;
flag=judgement(delta);
}cout输出方程根收敛的区间值:
coutdelta-eps