当前位置:文档之家› 数值方法计算实习题1

数值方法计算实习题1

数值方法计算实习题1
数值方法计算实习题1

信计091 龚立丽200900901004

数值方法计算实习题

要求:1、用Matlab语言或你熟悉的其他算法语言编写程序,使之尽可能具有通用性;

2、根据上机计算实践,对所使用的数值方法的特点、性质、有效性、误差和收敛性等方面进行必要的讨论和分析;

3、完成计算后写出实验报告,内容包括:课题名称、解决的问题、采用的数值方法、算法程序、数值结果、对实验结果的讨论和分析等;

4、特别说明:严禁抄袭,否则一经发现,所有雷同实验报告最多评为及格。

一、下表给出了飞行中鸭子的上部形状的节点数据,试用三次样条插值函数(自然边界条件)

和20次Lagrange插值多项式对数据进行插值。用图示出给定的数据,以及()

s x和

20()

L x。

x0.9 1.3 1.9 2.1 2.6 3.0 3.9 4.4 4.7 5.0 6.0

y 1.3 1.5 1.85 2.1 2.6 2.7 2.4 2.15 2.05 2.1 2.25

x7.0 8.0 9.2 10.5 11.3 11.6 12 12.6 13.0 13.3

y 2.3 2.25 1.95 1.4 0.9 0.7 0.6 0.5 0.4 0.25

解:>> x=[0.9 1.3 1.9 2.1 2.6 3.0 3.9 4.4 4.7 5.0 6.0 7.0 8.0 9.2 10.5 11.3 11.6 12 12.6 13.0 13.3];

>> y=[1.3 1.5 1.85 2.1 2.6 2.7 2.4 2.15 2.05 2.1 2.25 2.3 2.25 1.95 1.4 0.9 0.7 0.6 0.5 0.4 0.25];

(1)三次样条插值法

在MATLAB中编写m文件

function[f,f0]=scyt(x,y,y2_1,y2_N,x0)

%y2_1和y2_N分别为自然边界条件

%插值点x的坐标:x0

syms t;

f=0.0;f0=0.0;

if(length(x)==length(y))

n=length(x);

else

disp('x和y的维数不相等');

return;

end

for i=1:n

if(x(i)<=x0)&&(x(i+1)>=x0)

index=i;

break;

end

end

A=diag(2*ones(1,n));

A(1,2)=1;

A(n,n-1)=1;

u=zeros(n-2,1);

lamda=zeros(n-1,1);

c=zeros(n,1);

for i=2:n-1

u(i-1)=(x(i)-x(i-1))/(x(i+1)-x(i-1));

lamda(i)=(x(i+1)-x(i))/(x(i+1)-x(i-1));

c(i)=3*lamda(i)*(y(i)-y(i-1))/(x(i)-x(i-1))+3*u(i-1)*(y(i+1)-y(i))/(x(i+1)-x(i) );

A(i,i+1)=u(i-1);

A(i,i-1)=lamda(i);

end

c(1)=3*(y(2)-y(1))/(x(2)-x(1))-(x(2)-x(1))*y2_1/2;

c(n)=3*(y(n)-y(n-1))/(x(n)-x(n-1))-(x(n)-x(n-1))*y2_N/2;

m=zgf(A,c);

h=x(index+1)-x(index);

f=y(index)*(2*(t-x(index))+h)*(t-x(index+1))^2/h/h/h+y(index+1)*(2*(x(index+1)-t)+h)*(t-x(index))^2/h/h/h+m(index)*(t-x(index))*(x(index+1)-t)^2/h/h-m(index+1 )*(x(index+1)-t)*(t-x(index))^2/h/h;

f0=subs(f,'t',x0);

其中的zgf函数为追赶法,其程序为

function x=zgf(A,b)

n = rank(A);

for(i=1:n)

if(A(i,i)==0)

disp('Error: 对角有元素为0!');

return;

end

end;

d = ones(n,1);

a = ones(n-1,1);

c = ones(n-1);

for(i=1:n-1)

a(i,1)=A(i+1,i);

c(i,1)=A(i,i+1);

d(i,1)=A(i,i);

end

d(n,1) = A(n,n);

for(i=2:n)

d(i,1)=d(i,1) - (a(i-1,1)/d(i-1,1))*c(i-1,1);

b(i,1)=b(i,1) - (a(i-1,1)/d(i-1,1))*b(i-1,1);

end

x(n,1) = b(n,1)/d(n,1);

for(i=(n-1):-1:1)

x(i,1) = (b(i,1)-c(i,1)*x(i+1,1))/d(i,1); end

在MATLAB 中输入指令 >> [f,f0]=scyt(x,y,0,0) f =

1000/729*(27/5*t-1377/100)*(t-39/10)^2+1000/729*(522/25-24/5*t)*(t-3)^2+100/81*(-6396162352027119/288230376151711744*t+19188487056081357/288230376151711744)*(39/10-t)^2-100/81*(-176836856862157557/90071992547409920+4534278381080963/9007199254740992*t)*(t-3)^2 f0 =

2.5851 得三次样条插值函数 S(x)=

1000/729*(27/5*x-1377/100)*(x-39/10)^2+1000/729*(522/25-24/5*x)*(x-3)^2+100/81*(-6396162352027119/288230376151711744*x+19188487056081357/288230376151711744)*(39/10-x)^2-100/81*(-176836856862157557/90071992547409920+4534278381080963/9007199254740992*x)*(x-3)^2

>> xi=0.9:0.01:13.3;yi=interp1(x,y,xi,'spline'); >> title('试验一--三次样条插值图示')

024********

0.5

1

1.5

2

2.5

3

试验一--三次样条插值图示

(2)用拉格朗日法插值 %定义Lagrange 程序

function f=Language(x,y,x0) syms t ;

if (length(x)==length(y)) n=length(x);

else

disp('x 和y 的维数不相等'); return ; end f=0.0; for (i=1:n) l=y(i); for (j=1:i-1)

l=l*(t-x(j))/(x(i)-x(j)); end ;

for (j=i+1:n)

l=l*(t-x(j))/(x(i)-x(j)); end ; f=f+l; simplify(f); if (i==n)

if (nargin==3) f=subs(f,'t',x0); else

f=collect(f); f=vpa(f,6); end end end

>> Language(x,y) ans =

52462.6*t+189995.*t^3-189851.*t^4+136778.*t^5-11.3161*t^12-.277283e-6*t^18+1.18284*t^13-73866.6*t^6+.111076e-4*t^17-.976904e-1*t^14+.427949e-8*t^19-.307453e-10*t^20+30677.6*t^7+2564.20*t^9-9968.98*t^8+.628590e-2*t^15-525.813*t^10-9652.78-.308159e-3*t^16+86.2514*t^11-128683.*t^2

二、已知Wilson 矩阵107877565861097

5

9

10A ??????=??

????,且向量32233331b ??????=??????

,则方程组A x b =有准确

解[]1111T

x =。

⑴用Matlab 内部函数求A ,A 的所有特征值和2()c o n d A ;

⑵令10

78.17.27.08

5.0465

8 5.989.8996.99

4.99

9

9.98A A δ??

?

??

?+=??

?

???

,解方程组()()A A x x b δδ++=,并求出向量

x δ和2

x

δ,从理论结果和实际计算结果两方面分析方程组A x b =解的相对误差

2

2

x

x

δ与A 的相对误差22

A

A

δ的关系;

⑶再改变扰动矩阵A δ(其元素的绝对值不超过0.005),重复第2问。 解:(1)A=[10 7 8 7;7 5 6 5;8 6 10 9;7 5 9 10]; b=[32;23;33;31]; M=det(A) M = 1

A 的所以特征值: >> D=eig(A) D =

0.0102 0.8431 3.8581 30.2887

条件数 >> n=30.2887/0.0102 n =

2.9695e+003

所以A 的行列式为1,cond(A)2=2.9695e+003

(2) >> B=[10 7 8.1 7.2;7.08 5.04 6 5;8 5.98 9.89 9;6.99 4.99 9 9.98]; >> b=[32;23;33;31];

>> [rank(B),rank([B,b])] ans = 4 4 >> x=B\b x =-5.4761 11.4934 -1.4292

2.4838

求x δ 假设X= x δ

>> x=B\b;x1=[1;1;1;1];X=x-x1 X =

-6.4761 10.4934 -2.4292

1.4838 求 2

x

δ

>>norm(X) ans =

12.6552 12.655就是2

x

δ。

%求2

2

x

x

δ

>> norm(X)/norm(x1) ans =

6.3276

6.3276 即为2

2

x x

δ

>> norm(a) ans =

0.2244 >> norm(A) ans =

30.2887

>> norm(a)/norm(A) %求2

2

A A

δ

ans =

0.0074

所以2

2

A

A

δ=0.0074

inv(A) %求A 的逆矩阵,下求

||

)(||1||

||||||||||1

1

A A x A A

δδ---

>> d=inv(A);

>> norm(d)*norm(a)*norm(x) ans =

288.4858

>> 1-norm(d*(a)) ans =

-12.3693

>> 288.4858/ -12.3693 ans =

-23.3227 所以

||

)(||1||

||||||||||1

1

A A x A A

δδ---=-23.322

>>norm(X) ans =

0.0074 所以2

x

δ>||

)(||1||

||||||||||1

1

A A x A A

δδ---

(3)改变A δ,取a2=[0 0.002 0.001 0.003;0.001 0.004 0 0.001;0.003 -0.004 -0.001

0;-0.001 -0.002 0 -0.003]

B2=a2+A; C2=[B b] b=[32;23;33;31]

>> rank(B2)

ans =

4

>> rank(C2)

ans =

4

rank(B2)= rank(C2)

所以扰动矩阵有唯一解 >> x2=B2\b x2 =

1.0649 0.8893

1.0272

0.9859

>> x=B\b;x1=[1;1;1;1];X=x-x1 %求x δ(设X= x δ) X2 =

-6.4761 10.4934 -2.4292 1.4838 norm(X2) %求 2

x δ

>> norm(X2)

ans =

12.6552 12.6552就是2x

δ

>> norm(X)/norm(x1) %求2

2

x x

δ

>> norm(X2)/norm(x1) ans =

6.3276

所以2

2

x

x

δ=6.3276

>> norm(a2)

ans =

0.0071

>> norm(a)/norm(A) %求2

2

A A

δ

>> norm(a2)/norm(A)

ans =

2.3336e-004

所以2

2

A

A

δ=2.3336e-004

norm(d)*norm(a2)*norm(x2)

ans =

9.0875

> 1-norm(d*(a2))

ans =

0.6943 norm(X2)

ans =

12.6552

9.0875/0.6943

ans =

13.0887 所以

||

)(||1||

||||||||||1

1

A A x A A

δδ---= 13.0887

2

x

δ<||

)(||1||

||||||||||1

1

A A x A A

δδ---

三、解三对角线性方程组的追赶法及其应用

⑴编写解三对角线性方程组的追赶法的通用程序,并应用于方程组

1234521000112100001210000121000

1

20x x x x x -??????

??????--??????

??????=--??????--????????????

-?

?

????

,检验程序的正确性;(解为52111,,,,63236T x ??

=????) ⑵求微分方程边值问题2

2

3s in ,0(0)2,()3

x

d u d u u

e x x d x d x

u u e πππ?-+=-<

的数值解(取步长1128h =),并与精确解比较(精确解为11u x

=

+)。

说明:离散化微分方程时,2

11

11

2

2

2|,

|,1,2,,12i

i

i i i i i x x x x u u u u u d u d u i n d x

h

d x

h

+-+-==-+-≈

=-

解:clear all ;

a=[2,2,2,2,2]; b=[-1,-1,-1,-1]; c=[-1,-1,-1,-1]; r=[1,0,0,0,0]; n=length(a); b=[0,b]; u(1)=r(1)/a(1); v(1)=c(1)/a(1); for k=2:n-1

u(k)=(r(k)-u(k-1)*b(k))/(a(k)-v(k-1)*b(k)); v(k)=c(k)/(a(k)-v(k-1)*b(k)); end

u(n)=(r(n)-u(n-1)*b(n))/(a(n)-v(n-1)*b(n)); x(n)=u(n); for k=n-1:-1:1

x(k)=u(k)-v(k)*x(k+1); end

fprintf('èy????·?3ì×éμ??a?a\n')

for k=1:n fprintf('x(%1d)=%10.8f\n',k,x(k)) end

>> zhuiganfa %调用追赶法 三对角方程组的解为 x(1)=0.83333333 x(2)=0.66666667 x(3)=0.50000000 x(4)=0.33333333 x(5)=0.16666667

和结果52111,,,,63236T

x ??

=????

很好地吻合。

四、公元1225年,比萨的数学家Leonardo 研究了方程32

210200x x x ++-=,得到一个根* 1.368808107x ≈,没有人知道他用什么方法得到这个值。对于这个方程,分别用下列方法:⑴迭代法12

20210

k k k x x x +=

++;⑵迭代法23

120210

k k

k x x x +--=

;⑶对⑴的Steffensen

加速方法;⑷对⑵的Steffensen 加速方法;⑸Newton 法。求方程的根(可取01x =),计算到Leonardo 所得到的准确度。

解:由题意编写m文件如下

function[x0,k,er,x]=diedai(g,x0,wucha,max) %g是给定的迭代函数

%x0是给定的初始值

%wucha是规定的误差范围

%max是所应许的最大迭代次数

%k是迭代次数加1

%x是不动点近似值

%x(x1,x2...,xn)

X(1)=x0;

for k=2:max

X(k)=feval('g',X(k-1));

k,er=abs(X(k)-X(k-1))

x=X(k);

if(er

break;end

if k==max

disp('超出迭代次数');

end

end

其中定义的g函数是

function y=g(x); y=20/(x^2+2*x+10);

在命令窗口中输入>> diedai('g',1,10^(-9),15) k =

15

er =

1.410125245193683e-005

超出迭代次数

X =

Columns 1 through 3

1.00000000000000 1.53846153846154 1.29501915708812

Columns 4 through 6

1.40182530944860 1.35420939040429 1.37529809248738

Columns 7 through 9

1.36592978817065 1.37008600340182 1.36824102361284

Columns 10 through 12

1.36905981200748 1.36869639755552 1.36885768862873 Columns 13 through 15

1.36878610257799 1.36881787439609 1.36880377314363 ans =1

取解为1.36880377314363

对于

23

1

202

10

k k

k

x x

x

+

--

=,只需修改diedai.m文件中的g,把其改为g1,编写m文件

function y=g1(x);

y=(20-2*x^2-x^3)/10;

在命令窗口中输入diedai('g1',1,10^(-9),30) …..

k =

24

er =

1.36601568861328

k =

25

er =

1.36860974051282

k =

26

er =

1.36942327571766

取解为1.36860974051282

牛顿法:编写m文件

function[p1,er,k,y]=ndf(f,df,p0,tol,max)

%f是非线性函数

%df是f的微商

%p0是初始值

%tol是给定的允许误差

%max是迭代的最大次数

%p1是牛顿法求得的近似解

%er是p0的误差估计

%k是迭代次数

%y=f(p1)

p0,feval('f',p0)

for k=1:max

p1=p0-feval('f',p0)/feval('df',p0);

er=abs(p1-p0);

p0=p1;

p1,er,k,y=feval('f',p1)

if((er

break,end

end

定义函数m文件

function y=f(x)

y=x^3+2*x^2+10*x-20;

定义微商函数m文件

function y=df(x)

y=3*x^2+4*x+10;

在命令窗口输入

>> ndf('f','df',1,10^(-9),10)

p0 = k =

1 1

ans = y = 0.91756564217382

-7

p1 = p1 = 1.41176470588235 1.36933647058824

er = er =

0.41176470588235 0.04242823529412

k = k =

2 4

y = y=

0.01114811941245 3.907985046680551e-014

p1 = p1=

1.36880818861753 1.36880810782137

K= er=

3 1.776356839400251e-015

y= k=

1.704487072373695e-006 5

p1 = y=

1.36880810782137 0

er = ans=

8.079615732015100e-008 1.36880810782137

由结果知道牛顿法迭代到第三次已经达到所要求的精度

故方程的根为1.36880810782137

3.

编写Steffensen.m文件

i=2;x0=1;%设初始值

f=inline('20/(x^2+2*x+10)');%迭代格式

y=f(x0);

z=f(y);

x1=x0-(y-x0).^2/(z-2*y+x0);

S.result=[x0;x1];

while abs(x1-x0)>=1e-9 %迭代精度

x0=x1;

y=f(x0);

z=f(y);

x1=x0-(y-x0).^2/(z-2*y+x0);

i=i+1;

S.result(i)=x1;

end

S.step=[(0:i-1)]';

fprintf('迭代步数为:\t%d\n',i-1);

for j=1:i

fprintf('%10d',S.step(j));fprintf('\t');

f

在命令窗口输入Steffensen

迭代步数为: 4

0 1.0000000

1 1.3708139

2 1.3688082

3 1.3688081

4 1.3688081

分析结果知,Steffensen迭代加速步数减少了,到第四步已经达到了精度要求。

4.把迭代格式改为(20-2*x^2-x^3)/10,保存,在命令窗口输入

Steffensen

迭代步数为: 5

0 1.0000000

1 1.3334921

2 1.3684154

3 1.3688081

4 1.3688081

5 1.3688081

分析结果知,Steffensen 迭代加速步数减少了,到第五步已经达到了精度要求。

五、用不同的数值方法计算积分3

1

()f x d x ?

的近似值,其中2

1010()sin f x x x ??

= ?

??

⑴ 取不同的步长h ,分别用复合梯形公式和复合辛普森公式计算积分,比较两个公式的计

算效果,是否存在一个最小的h ,使得精度不能再被改善? ⑵ 用龙贝格求积公式,取4

10

ε-=,并打印出T-表。

解:(1)用复合梯形公式,编写fhtx .m 文件

function s=fhtx(f,a,b,n) %f 是被积函数

%ab 分别为积分的上下限 %n 是子区间的个数 %s 是梯形总面积 h=(b-a)/n; s=0;

for k=1:(n-1) x=a+k*h;

s=s+feval('f',x); end

s=h*(feval('f',a)+feval('f',b))/2+h*s; 编写被积函数文件tf.m function y=f(x); y=(10/x)^2*sin(10/x); 在命令窗口输入

>> fhtx('tf',1,3,10) ans =

-4.7789

>> fhtx('tf',1,3,15) ans =

-2.8604

>> fhtx('tf',1,3,20)

ans =

-2.2208

用复化辛普森公式,编写fhxps.m文件

function s=fhxps(f,a,b,n)

%f是被积函数

%ab分别为积分的上下限

%n是子区间的个数

%s是梯形总面积

h=(b-a)/(2*n);

s1=0;s2=0;

for k=1:n

x=a+(2*k-1)*h;

s1=s1+feval('f',x);

end

for k=1:n-1

x=a+2*k*h;

s2=s2+feval('f',x);

end

s=h*(feval('f',a)+feval('f',b)+4*s1+2*s2)/3;

在命令窗口输入

>> fhxps('f',1,3,15)

ans =

-1.4136

>> fhxps('f',1,3,20)

ans =

-1.4220

取n较大时

>> fhxps('f',1,3,1000)

ans =

-1.42602475569236

>> fhtx('tf',1,3,1000)

ans =

-1.42633620719670

>> fhtx('tf',1,3,2000)

ans =

-1.42610261856845

>> fhxps('f',1,3,2000)

ans

-1.42602475630535

分析结果知道两种方法有微小误差,当步长越大,精确度就越大,h取2000时两种方法误差精确度到小数点第三位。

(2)解:编写lbg .m文件

function[r,quad,tol,h]=lbg(f,a,b,n,wucha)

%f是被积函数

%ab分别是上下限

%n+1是t数表的列数

%wucha是容许的误差

%quad是所求积分值

m=1;h=b-a;

tol=1;j=0;

r=zeros(4,4);

r(1,1)=h*(feval('f',a)+feval('f',b))/2

while((tol>wucha)&&(j

j=j+1;

h=h/2;

s=0;

for p=1:m

x=a+h*(2*p-1);

s=s+feval('f',x)

end

r(j+1,1)=r(j,1)/2+h*s;

m=2*m;

for k=1:j

r(j+1,k+1)=r(j+1,k)+(r(j+1,k)-r(j,k))/(4^k-1);

end

tol=abs(r(j,j)-r(j+1,k+1));

end

quad=r(j+1,j+1)

在命令窗口输入:

>>lbg('tf',1,3,6,0.5*(10^(-3)))

quad =

-1.4260

ans =

-56.5195 0 0 0 0 0 0 -52.2329 -50.8040 0 0 0 0 0 -23.8564 -14.3976 -11.9705 0 0 0 0 -6.8278 -1.1516 -0.2685 -0.0828 0 0 0 -2.6815 -1.2994 -1.3093 -1.3258 -1.3307 0 0 -1.7327 -1.4164 -1.4242 -1.4260 -1.4264 -1.4265 0

-1.5022 -1.4254 -1.4260 -1.4260 -1.4260 -1.4260 -1.4260

由结果知,积分值为-1.4260

数值计算方法大作业

目录 第一章非线性方程求根 (3) 1.1迭代法 (3) 1.2牛顿法 (4) 1.3弦截法 (5) 1.4二分法 (6) 第二章插值 (7) 2.1线性插值 (7) 2.2二次插值 (8) 2.3拉格朗日插值 (9) 2.4分段线性插值 (10) 2.5分段二次插值 (11) 第三章数值积分 (13) 3.1复化矩形积分法 (13) 3.2复化梯形积分法 (14) 3.3辛普森积分法 (15) 3.4变步长梯形积分法 (16) 第四章线性方程组数值法 (17) 4.1约当消去法 (17) 4.2高斯消去法 (18) 4.3三角分解法 (20)

4.4雅可比迭代法 (21) 4.5高斯—赛德尔迭代法 (23) 第五章常积分方程数值法 (25) 5.1显示欧拉公式法 (25) 5.2欧拉公式预测校正法 (26) 5.3改进欧拉公式法 (27) 5.4四阶龙格—库塔法 (28)

数值计算方法 第一章非线性方程求根 1.1迭代法 程序代码: Private Sub Command1_Click() x0 = Val(InputBox("请输入初始值x0")) ep = Val(InputBox(请输入误差限ep)) f = 0 While f = 0 X1 = (Exp(2 * x0) - x0) / 5 If Abs(X1 - x0) < ep Then Print X1 f = 1 Else x0 = X1 End If Wend End Sub 例:求f(x)=e2x-6x=0在x=0.5附近的根(ep=10-10)

1.2牛顿法 程序代码: Private Sub Command1_Click() b = Val(InputBox("请输入被开方数x0")) ep = Val(InputBox(请输入误差限ep)) f = 0 While f = 0 X1 = x0 - (x0 ^ 2 - b) / (2 * b) If Abs(X1 - x0) < ep Then Print X1 f = 1 Else x0 = X1 End If Wend End Sub 例:求56的值。(ep=10-10)

《数值计算方法》试题集及答案

《数值计算方法》复习试题 一、填空题: 1、????? ?????----=410141014A ,则A 的LU 分解为 A ??? ?????????=? ?????????? ?。 答案: ?? ????????--??????????--=1556141501 4115401411A 2、已知3.1)3(,2.1)2(,0.1)1(===f f f ,则用辛普生(辛卜生)公式计算求得 ?≈3 1 _________ )(dx x f ,用三点式求得≈')1(f 。 答案:, 3、1)3(,2)2(,1)1(==-=f f f ,则过这三点的二次插值多项式中2 x 的系数为 , 拉格朗日插值多项式为 。 答案:-1, )2)(1(21 )3)(1(2)3)(2(21)(2--------= x x x x x x x L 4、近似值*0.231x =关于真值229.0=x 有( 2 )位有效数字; 5、设)(x f 可微,求方程)(x f x =的牛顿迭代格式是( ); ( 答案 )(1)(1n n n n n x f x f x x x '--- =+ 6、对1)(3 ++=x x x f ,差商=]3,2,1,0[f ( 1 ),=]4,3,2,1,0[f ( 0 ); 7、计算方法主要研究( 截断 )误差和( 舍入 )误差; 8、用二分法求非线性方程 f (x )=0在区间(a ,b )内的根时,二分n 次后的误差限为 ( 1 2+-n a b ); 9、求解一阶常微分方程初值问题y '= f (x ,y ),y (x 0)=y 0的改进的欧拉公式为

( )] ,(),([2111+++++=n n n n n n y x f y x f h y y ); 10、已知f (1)=2,f (2)=3,f (4)=,则二次Newton 插值多项式中x 2系数为( ); 11、 两点式高斯型求积公式?1 d )(x x f ≈( ?++-≈1 )] 321 3()3213([21d )(f f x x f ),代数精 度为( 5 ); 12、 解线性方程组A x =b 的高斯顺序消元法满足的充要条件为(A 的各阶顺序主子式均 不为零)。 13、 为了使计算 32)1(6 )1(41310-- -+-+ =x x x y 的乘除法次数尽量地少,应将该表 达式改写为 11 ,))64(3(10-= -++=x t t t t y ,为了减少舍入误差,应将表达式 19992001-改写为 199920012 + 。 14、 用二分法求方程01)(3 =-+=x x x f 在区间[0,1]内的根,进行一步后根的所在区间 为 ,1 ,进行两步后根的所在区间为 , 。 15、 、 16、 计算积分?1 5 .0d x x ,取4位有效数字。用梯形公式计算求得的近似值为 ,用辛卜 生公式计算求得的近似值为 ,梯形公式的代数精度为 1 ,辛卜生公式的代数精度为 3 。 17、 求解方程组?? ?=+=+042.01532121x x x x 的高斯—塞德尔迭代格式为 ?????-=-=+++20/3/)51()1(1)1(2)(2)1(1 k k k k x x x x ,该迭 代格式的迭代矩阵的谱半径)(M ρ= 121 。 18、 设46)2(,16)1(,0)0(===f f f ,则=)(1x l )2()(1--=x x x l ,)(x f 的二次牛顿 插值多项式为 )1(716)(2-+=x x x x N 。 19、 求积公式 ?∑=≈b a k n k k x f A x x f )(d )(0 的代数精度以( 高斯型 )求积公式为最高,具 有( 12+n )次代数精度。

数值分析实验报告1

实验一误差分析 实验1.1(病态问题) 实验目的:算法有“优”与“劣”之分,问题也有“好”与“坏”之别。对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感者,反之属于好问题。通过本实验可获得一个初步体会。 数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。 问题提出:考虑一个高次的代数多项式 显然该多项式的全部根为1,2,…,20共计20个,且每个根都是单重的。现考虑该多项式的一个扰动 其中ε(1.1)和(1.221,,,a a 的输出b ”和“poly ε。 (1(2 (3)写成展 关于α solve 来提高解的精确度,这需要用到将多项式转换为符号多项式的函数poly2sym,函数的具体使用方法可参考Matlab 的帮助。 实验过程: 程序: a=poly(1:20); rr=roots(a); forn=2:21 n form=1:9 ess=10^(-6-m);

ve=zeros(1,21); ve(n)=ess; r=roots(a+ve); -6-m s=max(abs(r-rr)) end end 利用符号函数:(思考题一)a=poly(1:20); y=poly2sym(a); rr=solve(y) n

很容易的得出对一个多次的代数多项式的其中某一项进行很小的扰动,对其多项式的根会有一定的扰动的,所以对于这类病态问题可以借助于MATLAB来进行问题的分析。 学号:06450210 姓名:万轩 实验二插值法

数值计算方法思考题

数值计算方法思考题 第一章 预篇 1.什么是数值分析?它与数学科学和计算机的关系如何? 2.何谓算法?如何判断数值算法的优劣? 3.列出科学计算中误差的三个来源,并说出截断误差与舍入误差的区别。 4.什么是绝对误差与相对误差?什么是近似数的有效数字?它与绝对误差和相对误差有何关系? 5.什么是算法的稳定性?如何判断算法稳定?为什么不稳定算法不能使用? 6.判断如下命题是否正确: (1)一个问题的病态性如何,与求解它的算法有关系。 (2)无论问题是否病态,好的算法都会得到好的近似解。 (3)解对数据的微小变化高度敏感是病态的。 (4)高精度运算可以改善问题的病态性。 (5)用一个稳定的算法计算良态问题一定会得到好的近似值。 (6)用一个收敛的迭代法计算良态问题一定会得到好的近似值。 (7)两个相近数相减必然会使有效数字损失。 (8)计算机上将1000个数量级不同的数相加,不管次序如何结果都是一样的。 7.考虑二次代数方程的求解问题 ax 2 + bx + c = 0. 下面的公式是熟知的 a ac b b x 242-±-=. 与之等价地有 ac b b c x 422--= . 对于 a = 1, b = -100 000 000 , c = 1 应当如何选择算法? 8.指数函数有著名的级数展开 ++++=!3!213 2x x x e x 如果对x < 0用上述的级数近似计算指数函数的值,这样的算法结果是否会好?为什么? 9.考虑数列x i , i = 1,…, n , 它的统计平均值定义为 ∑==n i i x x x 1 1 它的标准差

1 12)(11??????--=∑-n i i x x n σ 数学上它等价于 1 12211???????????? ??--=∑=n i i x n x n σ 作为标准差的两种算法,你如何评价它们的得与失? 第二章 非线性方程求根 1.判断如下命题是否正确: (a) 非线性方程的解通常不是唯一的; (b) Newton 法的收敛阶高于割线法; (c) 任何方法的收敛阶都不可能高于Newton 法; (d) Newton 法总是比割线法更节省计算时间; (e) 如果函数的导数难于计算,则应当考虑选择割线法; (f) Newton 法是有可能不收敛; (g) 考虑简单迭代法x k +1 = g (x k ),其中x * = g (x *)。如果| g '(x *) | <1,则对任意的初 始值,上述迭代都收敛。 2.什么叫做一个迭代法是二阶收敛的?Newton 法收敛时,它的收敛阶是否总是二阶 的? 3.求解单变量非线性方程的单根,下面的3种方法,它们的收敛阶由高到低次序如何? (a) 二分法 (b) Newton 方法 (c) 割线方法 4.求解单变量非线性方程的解,Newton 法和割线方法,它们每步迭代分别需要计算几 次函数值和导数值? 5.求解某个单变量非线性方程,如果计算函数值和计算导数值的代价相当,Newton 法和割线方法它的优劣应如何评价? 第三章 解线性方程组的直接法 1.用高斯消去法为什么要选主元?哪些方程组可以不选主元? 2.高斯消去法与LU 分解有什么关系?用它们解线性方程组Ax = b 有何不同?A 要满足什么条件? 3.乔列斯基分解与LU 分解相比,有什么优点? 4.哪种线性方程组可用平方根法求解?为什么说平方根法计算稳定? 5.什么样的线性方程组可用追赶法求解并能保证计算稳定? 6.何谓向量范数?给出三种常用的向量范数。 7.何谓矩阵范数?何谓矩阵的算子范数?给出矩阵A = (a i j )的三种范数|| A ||1,|| A ||2,|| A ||∞,|| A ||1与|| A ||2哪个更容易计算?为什么? 8.什么是矩阵的条件数?如何判断线性方程组是病态的? 9.满足下面哪个条件可判定矩阵接近奇异? (1)矩阵行列式的值很小。 (2)矩阵的范数小。

数值计算方法试题及答案

【 数值计算方法试题一 一、 填空题(每空1分,共17分) 1、如果用二分法求方程043=-+x x 在区间]2,1[内的根精确到三位小数,需对分( )次。 2、迭代格式)2(2 1-+=+k k k x x x α局部收敛的充分条件是α取值在( )。 3、已知?????≤≤+-+-+-≤≤=31)1()1()1(211 0)(2 33x c x b x a x x x x S 是三次样条函数, 则 a =( ), b =( ), c =( )。 4、)(,),(),(10x l x l x l n 是以整数点n x x x ,,,10 为节点的Lagrange 插值基函数,则 ∑== n k k x l 0)(( ), ∑== n k k j k x l x 0 )(( ),当2≥n 时 = ++∑=)()3(20 4x l x x k k n k k ( )。 ; 5、设1326)(2 47+++=x x x x f 和节点,,2,1,0,2/ ==k k x k 则=],,,[10n x x x f 和=?07 f 。 6、5个节点的牛顿-柯特斯求积公式的代数精度为 ,5个节点的求积公式最高代数精度为 。 7、{}∞ =0)(k k x ?是区间]1,0[上权函数x x =)(ρ的最高项系数为1的正交多项式族,其中1)(0=x ?,则?= 1 4)(dx x x ? 。 8、给定方程组?? ?=+-=-2211 21b x ax b ax x ,a 为实数,当a 满足 ,且20<<ω时,SOR 迭代法收敛。 9、解初值问题 00 (,)()y f x y y x y '=?? =?的改进欧拉法 ??? ??++=+=++++)],(),([2),(] 0[111] 0[1n n n n n n n n n n y x f y x f h y y y x hf y y 是 阶方法。

太原理工大学数值计算方法实验报告

本科实验报告 课程名称:计算机数值方法 实验项目:方程求根、线性方程组的直接解 法、线性方程组的迭代解法、代数插值和最 小二乘拟合多项式 实验地点:行勉楼 专业班级: ******** 学号: ********* 学生姓名: ******** 指导教师:李誌,崔冬华 2016年 4 月 8 日

y = x*x*x + 4 * x*x - 10; return y; } float Calculate(float a,float b) { c = (a + b) / 2; n++; if (GetY(c) == 0 || ((b - a) / 2) < 0.000005) { cout << c <<"为方程的解"<< endl; return 0; } if (GetY(a)*GetY(c) < 0) { return Calculate(a,c); } if (GetY(c)*GetY(b)< 0) { return Calculate(c,b); } } }; int main() { cout << "方程组为:f(x)=x^3+4x^2-10=0" << endl; float a, b; Text text; text.Getab(); a = text.a; b = text.b; text.Calculate(a, b); return 0; } 2.割线法: // 方程求根(割线法).cpp : 定义控制台应用程序的入口点。// #include "stdafx.h" #include"iostream"

心得体会 使用不同的方法,可以不同程度的求得方程的解,通过二分法计算的程序实现更加了解二分法的特点,二分法过程简单,程序容易实现,但该方法收敛比较慢一般用于求根的初始近似值,不同的方法速度不同。面对一个复杂的问题,要学会简化处理步骤,分步骤一点一点的循序处理,只有这样,才能高效的解决一个复杂问题。

数值计算方法作业

数值计算方法作业 姓名:李琦 学号:062410124 求 013=--x x 在x=1.5附近的一个根。 一.牛顿下山法: #include #include float f(float x) /* 定义函数f(x) */ { return x*x*x-x-1; } void main() { float x0,x1=1.5; x0=1; for(;;) { printf (" x0=%f",x0); printf (" x1=%f\n",x1); x0=x1; x1=x0-((x0*x0*x0-x0-1)/(3*x0*x0-1)); if(x0==x1) break; } printf(" x=%f\n",x1); }

二.加权法 #include #include float f(float x) /* 定义函数f(x) */ { return x*x*x-1; } float f1(float x) /* 定义函数f(x)的导数*/ { return 3*x*x; } void main() { float x0,x1=1.5,c; c=f1(x1);x0=1; printf("c=%f\n",c); for(;;) { printf (" x0=%f",x0); printf (" x1=%f\n",x1); x0=x1; x1=(f(x0)-c*x0)/(1-c); if(x0==x1) break; } printf("x=%f\n",x1); }

三.单点弦法: #include #include float f(float x) /* 定义函数f(x) */ { return x*x*x-x-1; } void main() { float x1,x0=1.5,a; a=f(x0); x1=1; for(;;) { printf (" x0=%f",x0); printf (" x1=%f\n",x1); x0=x1; x1=x0-(f(x0)*(x0-1.5)/(f(x0)-a)); if(x0==x1) break; } printf(" x=%f\n",x1); }

数值分析作业思考题汇总

¥ 数值分析思考题1 1、讨论绝对误差(限)、相对误差(限)与有效数字之间的关系。 2、相对误差在什么情况下可以用下式代替 3、查阅何谓问题的“病态性”,并区分与“数值稳定性”的不同点。 4、取 ,计算 ,下列方法中哪种最好为什么(1)(3 3-,(2)(2 7-,(3) ()3 1 3+ ,(4) ()6 1 1 ,(5)99- , 数值实验 数值实验综述:线性代数方程组的解法是一切科学计算的基础与核心问题。求解方法大致可分为直接法和迭代法两大类。直接法——指在没有舍入误差的情况下经过有限次运算可求得方程组的精确解的方法,因此也称为精确法。当系数矩阵是方的、稠密的、无任何特殊结构的中小规模线性方程组时,Gauss消去法是目前最基本和常用的方法。如若系数矩阵具有某种特殊形式,则为了尽可能地减少计算量与存储量,需采用其他专门的方法来求解。 Gauss消去等同于矩阵的三角分解,但它存在潜在的不稳定性,故需要选主元素。对正定对称矩阵,采用平方根方法无需选主元。方程组的性态与方程组的条件数有关,对于病态的方程组必须采用特殊的方法进行求解。 数值计算方法上机题目1 1、实验1. 病态问题 实验目的: 算法有“优”与“劣”之分,问题也有“好”和“坏”之别。所谓坏问题就是问题本身的解对数据变化的比较敏感,反之属于好问题。希望读者通过本实验对此有一个初步的体会。 数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。 $ r e x x e x x ** * ** - == 141 . ≈)61

数值计算实验报告

(此文档为word格式,下载后您可任意编辑修改!) 2012级6班###(学号)计算机数值方法 实验报告成绩册 姓名:宋元台 学号: 成绩:

数值计算方法与算法实验报告 学期: 2014 至 2015 第 1 学期 2014年 12月1日课程名称: 数值计算方法与算法专业:信息与计算科学班级 12级5班 实验编号: 1实验项目Neton插值多项式指导教师:孙峪怀 姓名:宋元台学号:实验成绩: 一、实验目的及要求 实验目的: 掌握Newton插值多项式的算法,理解Newton插值多项式构造过程中基函数的继承特点,掌握差商表的计算特点。 实验要求: 1. 给出Newton插值算法 2. 用C语言实现算法 二、实验内容 三、实验步骤(该部分不够填写.请填写附页)

1.算法分析: 下面用伪码描述Newton插值多项式的算法: Step1 输入插值节点数n,插值点序列{x(i),f(i)},i=1,2,……,n,要计算的插值点x. Step2 形成差商表 for i=0 to n for j=n to i f(j)=((f(j)-f(j-1)(x(j)-x(j-1-i)); Step3 置初始值temp=1,newton=f(0) Step4 for i=1 to n temp=(x-x(i-1))*temp*由temp(k)=(x-x(k-1))*temp(k-1)形成 (x-x(0).....(x-x(i-1)* Newton=newton+temp*f(i); Step5 输出f(x)的近似数值newton(x)=newton. 2.用C语言实现算法的程序代码 #includeMAX_N) { printf("the input n is larger than MAX_N,please redefine the MAX_N.\n"); return 1; } if(n<=0) { printf("please input a number between 1 and %d.\n",MAX_N); return 1; } printf("now input the (x_i,y_i)i=0,...%d\n",n); for(i=0;i<=n;i++) { printf("please input x(%d) y(%d)\n",i,i);

(完整版)数值计算方法上机实习题答案

1. 设?+=1 05dx x x I n n , (1) 由递推公式n I I n n 1 51+-=-,从0I 的几个近似值出发,计算20I ; 解:易得:0I =ln6-ln5=0.1823, 程序为: I=0.182; for n=1:20 I=(-5)*I+1/n; end I 输出结果为:20I = -3.0666e+010 (2) 粗糙估计20I ,用n I I n n 51 5111+- =--,计算0I ; 因为 0095.05 6 0079.01020 201 020 ≈<<≈??dx x I dx x 所以取0087.0)0095.00079.0(2 1 20=+= I 程序为:I=0.0087; for n=1:20 I=(-1/5)*I+1/(5*n); end I 0I = 0.0083 (3) 分析结果的可靠性及产生此现象的原因(重点分析原因)。 首先分析两种递推式的误差;设第一递推式中开始时的误差为000I I E '-=,递推过程的舍入误差不计。并记n n n I I E '-=,则有01)5(5E E E n n n -==-=-Λ。因为=20E 20020)5(I E >>-,所此递推式不可靠。而在第二种递推式中n n E E E )5 1(5110-==-=Λ,误差在缩小, 所以此递推式是可靠的。出现以上运行结果的主要原因是在构造递推式过程中,考虑误差是否得到控制, 即算法是否数值稳定。 2. 求方程0210=-+x e x 的近似根,要求4 1105-+?<-k k x x ,并比较计算量。 (1) 在[0,1]上用二分法; 程序:a=0;b=1.0; while abs(b-a)>5*1e-4 c=(b+a)/2;

数值计算方法试题

数值计算方法试题 重庆邮电大学数理学院 一、填空题(每空2分,共20分) 1、用列主元消去法解线性方程组 1、解非线性方程f(x)=0的牛顿迭代法具有 ,,,,,,,收 敛 2、迭代过程(k=1,2,…)收敛的充要条件是 2、已知y=f(x)的数据如下 ,,, x 0 2 3 3、已知数 e=2.718281828...,取近似值 x=2.7182,那麽x具有的有 f(x) 1 3 2 效数字是,,, 4、高斯--塞尔德迭代法解线性方程组求二次插值多项式及f(2.5) 3、用牛顿法导出计算的公式,并计算,要求迭代误差不超过 。 4、欧拉预报--校正公式求解初值问题的迭代格式中求 ,,,,,,,,,,,,, ,

5、通过四个互异节点的插值多项式p(x),只要满足,,,,,,取步长k=0.1,计算 y(0.1),y(0.2)的近似值,小数点后保留5位. ,,则p(x)是不超过二次的多项式 三、证明题 (20分每题 10分 ) 6、对于n+1个节点的插值求积公式 1、明定 积分近似计算的抛物线公式 具有三次代数精度至少具有,,,次代 数精度. 7、插值型求积公式的求积 2、若,证明用梯形公式计算积分所 系数之和,,, 得结果比准确值大,并说明这个结论的几何意义。 参考答案: T8、 ,为使A可分解为A=LL, 其中L一、填空题 1、局部平方收敛 2、< 1 3、 4 为对角线元素为正的下三角形,a的取值范围, 4、

5、三阶均差为0 6、n 7、b-a 9、若则矩阵A的谱半径(A)= ,,, 8、 9、 1 10、二阶方法 10、解常微分方程初值问题的梯形二、计算题 格式 1、是,,,阶方法 二、计算题(每小题15分,共60分) 修德博学求实创新 李华荣 1 重庆邮电大学数理学院 2、 右边: 3、 ?1.25992 (精确到 ,即保留小数点后5位) 故具有三次代数精度 4、y(0.2)?0.01903 A卷三、证明题

数值分析实验报告1

实验一 误差分析 实验(病态问题) 实验目的:算法有“优”与“劣”之分,问题也有“好”与“坏”之别。对数值方法的研究而言,所谓坏问题就是问题本身对扰动敏感者,反之属于好问题。通过本实验可获得一个初步体会。 数值分析的大部分研究课题中,如线性代数方程组、矩阵特征值问题、非线性方程及方程组等都存在病态的问题。病态问题要通过研究和构造特殊的算法来解决,当然一般要付出一些代价(如耗用更多的机器时间、占用更多的存储空间等)。 问题提出:考虑一个高次的代数多项式 )1.1() ()20()2)(1()(20 1∏=-=---=k k x x x x x p 显然该多项式的全部根为1,2,…,20共计20个,且每个根都是单重的。现考虑该多项式的一个扰动 )2.1(0 )(19=+x x p ε 其中ε是一个非常小的数。这相当于是对()中19x 的系数作一个小的扰动。我们希望比较()和()根的差别,从而分析方程()的解对扰动的敏感性。 实验内容:为了实现方便,我们先介绍两个Matlab 函数:“roots ”和“poly ”。 roots(a)u = 其中若变量a 存储n+1维的向量,则该函数的输出u 为一个n 维的向量。设a 的元素依次为121,,,+n a a a ,则输出u 的各分量是多项式方程 01121=+++++-n n n n a x a x a x a 的全部根;而函数 poly(v)b =

的输出b 是一个n+1维变量,它是以n 维变量v 的各分量为根的多项式的系数。可见“roots ”和“poly ”是两个互逆的运算函数。 ;000000001.0=ess );21,1(zeros ve = ;)2(ess ve = ))20:1((ve poly roots + 上述简单的Matlab 程序便得到()的全部根,程序中的“ess ”即是()中的ε。 实验要求: (1)选择充分小的ess ,反复进行上述实验,记录结果的变化并分析它们。 如果扰动项的系数ε很小,我们自然感觉()和()的解应当相差很小。计算中你有什么出乎意料的发现表明有些解关于如此的扰动敏感性如何 (2)将方程()中的扰动项改成18x ε或其它形式,实验中又有怎样的现象 出现 (3)(选作部分)请从理论上分析产生这一问题的根源。注意我们可以将 方程()写成展开的形式, ) 3.1(0 ),(1920=+-= x x x p αα 同时将方程的解x 看成是系数α的函数,考察方程的某个解关于α的扰动是否敏感,与研究它关于α的导数的大小有何关系为什么你发现了什么现象,哪些根关于α的变化更敏感 思考题一:(上述实验的改进) 在上述实验中我们会发现用roots 函数求解多项式方程的精度不高,为此你可以考虑用符号函数solve 来提高解的精确度,这需要用到将多项式转换为符号多项式的函数poly2sym,函数的具体使用方法可参考Matlab 的帮助。

数值分析作业

第二章 1. 题目:运用MATLAB编程实现牛顿迭代 2. 实验操作 1、打开MATLAB程序软件。 2、在MATLAB中编辑如下的M程序。 function [p1,err,k,y]=newton(f,df,p0,delta,max) %f 是要求根的方程(f(x)=0); %df 是f(x)的导数; %p0是所给初值,位于x*附近; %delta是给定允许误差; %max是迭代的最大次数; %p1是newton法求得的方程的近似解; %err是p0的误差估计; %k是迭代次数; p0 for k=1:max p1=p0-feval('f',p0)/feval('df',p0); err=abs(p1-p0); p0=p1; k p1 err y=feval('f',p1) if (err> newton('f','df',1.2,10^(-6),20) 3.实验结果

p0 = 1.2000 k =1 p1=1.1030 err=0.0970 y=0.0329 k= 2 p1=1.0524 err=0.0507 y=0.0084 k =3 p1=1.0264 err=0.0260 y=0.0021 k =4 p1=1.0133 err=0.0131 y=5.2963e-004 k =5 p1=1.0066 err=0.0066 y=1.3270e-004 k =6 p1=1.0033 err=0.0033 y=3.3211e-005 k =7 p1=1.0017 err=0.0017 y=8.3074e-006 k =8 p1=1.0008 err=8.3157e-004 y = 2.0774e-006 k =9 p1=1.0004 err=4.1596e-004 y =5.1943e-007 k=10 p1=1.0002 err=2.0802e-004 y= 1.2987e-007 k=11 p1=1.0001 err=1.0402e-004 y =3.2468e-008 k=12 p1=1.0001 err=5.2014e-005 y=8.1170e-009 k=13 p1=1.0000 err=2.6008e-005 y= 2.0293e-009 k=14 p1=1.0000 err=1.3004e-005 y=5.0732e-010 k=15 p1 =1.0000 err=6.5020e-006 y=1.2683e-010 k=16 p1 =1.0000 err=3.2510e-006 y=3.1708e-011 k=17 p1 =1.0000 err=1.6255e-006 y =7.9272e-012 k=18 p1 =1.0000 err =8.1279e-007 y= 1.9820e-012 ans = 1.0000 结果说明:经过18次迭代得到精确解为1,误差为8.1279e-007。

数值分析思考题[综合]

1、讨论绝对误差(限)、相对误差(限)与有效数字之间的关系。 2、相对误差在什么情况下可以用下式代替? 3、查阅何谓问题的“病态性”,并区分与“数值稳定性”的不同点。 4、 取 ,计算 ,不用计算而直接判断下列式子中哪 种计算效果最好?为什么? (1)(3 3-,(2)(2 7-,(3) (3 1 3+,(4) ) 6 11 ,(5)99-5. 应用梯形公式 ))()((2b f a f a b T +-= 计算积分1 0x I e dx -=?的近似值,在整个计算过程中按四舍五入规则取五位小数。计算中产生的误差的主要原因是截断误差还是舍入误差?为什么? 6. 下列各数都是经过四舍五入得到的近似值,试指出他们有几位有效数字,并给出其绝对误差限与相对误差限。 (1) 1021.1*1=x ;(2) 031.0*2=x ;(3) 40.560*3=x 。 7. 下列公式如何计算才比较准确? (1) 212 x e -,1x <<;(2) 12 1 N N dx x ++? ,1>>N ;(3) ,1x >>。 8. 序列{}n y 满足递推关系1101n n y y -=-,12,,n =,若0141.y =≈,计算到10y 时误差有多大?这个计算过程数值稳定吗? r e x x e x x ***** -== 141.≈) 6 1

1、怎样确定一个隔根区间?如何求解一个方程的全部实根?如:已知方程:1020()x f x e x =+-=在(),-∞+∞有实数根,用二分法求它的全部实根,要求误差满足210*k x x --<?若要求6*10k x x --<,需二分区 间多少次? 2、求解一个非线性方程的迭代法有哪些充分条件可以保障迭代序列收敛于方程的根?对方程3210()f x x x =--=,试构造两种不同的迭代法,且均收敛于方程在[]12,中的唯一根。 3、设0a >,应用牛顿法于方程30x a -= 确定常数,p q 和r 使得迭代法 2 125k k k k qa ra x px x x +=++, 012,, , k = 4、对于不动点方程()x x ?=,()x ?满足映内性和压缩性是存在不动点的充分条件,他们也是必要条件吗?试证明:(1)函数21()x x ?=-在闭区间[]02,上不是映内的,但在其上有不动点;(2)函数 1()ln()x x e ?=+在任何区间[],a b 上都是压缩的,但没有不动点。 5、设*x 是方程0()f x =的根,且0*'()f x ≠,''()f x 在*x 的某个邻域上连续。试证明:Newton 迭代序列{}k x 满足 12122**()''() lim () '()k k k k k x x f x x x f x -→∞---=-- 6. 设有方程1 12 sin x x =+。对于迭代法1112 ()sin()k k k x x x ?+==+,试证:对 任何15.b ≥,迭代函数()x ?在闭区间[0.5,b]上满足映内性和压缩性。用所给方

数值计算方法试题一

数值计算方法试题一

数值计算方法试题一 一、 填空题(每空1分,共17分) 1、如果用二分法求方程043 =-+x x 在区间]2,1[内的根精确到三位小数,需对分( )次。 2、迭代格式)2(2 1 -+=+k k k x x x α局部收敛的充分条件是α取值在( )。 3、已知?????≤≤+-+-+-≤≤=31)1()1()1(2 110)(2 33x c x b x a x x x x S 是三次样条函数,则 a =( ),b =( ),c =( )。 4、)(,),(),(1 x l x l x l n 是以整数点n x x x ,,,10 为节点的Lagrange 插值基函数,则 ∑== n k k x l 0)(( ), ∑== n k k j k x l x 0 )(( ),当 2 ≥n 时 = ++∑=)()3(20 4 x l x x k k n k k ( )。 5、设1326)(2 4 7 +++=x x x x f 和节点,,2,1,0,2/ ==k k x k 则=],,,[1 n x x x f 和=?0 7 f 。 6、5个节点的牛顿-柯特斯求积公式的代数精度为 ,5个节点的求积公式最高代数精度为 。 7、{}∞ =0 )(k k x ?是区间]1,0[上权函数x x =)(ρ的最高项系数为1的正交多项式族,其中1)(0 =x ?,则 ?= 1 4 )(dx x x ? 。 8、给定方程组?? ?=+-=-2 21121b x ax b ax x ,a 为实数,当a 满足 ,且20<<ω时,SOR 迭代法收敛。

9、解初值问题 00 (,)()y f x y y x y '=?? =?的改进欧拉法 ?? ? ??++=+=++++)],(),([2),(] 0[111] 0[1n n n n n n n n n n y x f y x f h y y y x hf y y 是 阶方法。 10、设?? ?? ? ?????=11001a a a a A ,当∈a ( )时,必有分解式T LL A =,其中L 为下三角阵,当其对角线元素)3,2,1(=i l ii 满足( )条件时,这种分解是唯一的。 二、 选择题(每题2分) 1、解方程组b Ax =的简单迭代格式g Bx x k k +=+) () 1(收敛的充要条件是( )。 (1)1)(A ρ, (4) 1)(>B ρ 2、在牛顿-柯特斯求积公式: ?∑=-≈b a n i i n i x f C a b dx x f 0 )() ()()(中,当系数) (n i C 是负值时,公式的稳定性不能保证,所以实际应用中,当( )时的牛顿-柯特斯求积公式不使用。 (1)8≥n , (2)7≥n , (3)10≥n , (4)6≥n , x 0 0.5 1 1.5 2 2.5

数值计算方法第4次作业

第四章 问题一 一、问题综述 在离地球表面高度为y处的重力加速度如下: 计算高度y=55000m处的重力加速度值。 二、问题分析 以高度y作为自变量,重力加速度的值为因变量。得到以下信息: f(0)=9.8100; f(30000)=9.7487; f(60000)=9.6879; f(90000)=9.6278; f(120000)=9.5682; 本题要求的就是f(55000)的值。 以下将采用课堂中学到的Lagrange插值多项式法、Newton插值多项式法、分段低次插值法和样条插值法求解该问题。 三、问题解决 1. lagrange插值多项式法 对某个多项式函数,已知有给定的k+ 1个取值点: 其中对应着自变量的位置,而对应着函数在这个位置的取值。 假设任意两个不同的x j都互不相同,那么应用拉格朗日插值公式所得到的拉格朗日插值多项式为:

其中每个为拉格朗日基本多项式(或称插值基函数),其表达式为: 拉格朗日基本多项式的特点是在上取值为1,在其它的点上取值为0。 源程序lagrange.m function [c,f]=lagrange(x,y,a) % 输入:x是自变量的矩阵;y是因变量的矩阵;a是要计算的值的自变量; % 输出:c是插值多项式系数矩阵;f是所求自变量对应的因变量; m=length(x); l=zeros(m,m); % l是权矩阵 f=0; for i=1:m v=1; for j=1:m if i~=j v=conv(v,poly(x(j)))/(x(i)-x(j)); % v是l_i(x)的系数矩阵 end end l(i,:)=v; % l矩阵的每一行都是x从高次到低次的系数矩阵 end c=vpa(y*l,10); % 对应阶次的系数相加,乘以y,显示10位有效数字 for k=1:m f=f+c(k)*a^(m-k); end 输入矩阵 x=[0 30000 60000 90000 120000] y=[9.81 9.7487 9.6879 9.6278 9.5682] a=55000 再运行源函数,可得: c = [ -2.057613169e-23, 4.938271605e-18, -3.703703702e-14, -0.000002046111111, 9.81] f = 9.6979851723251649906109417384537

数值计算方法答案

数值计算方法习题一(2) 习题二(6) 习题三(15) 习题四(29) 习题五(37) 习题六(62) 习题七(70) 2009.9,9

习题一 1.设x >0相对误差为2%4x 的相对误差。 解:由自变量的误差对函数值引起误差的公式: (())(())'()()()() f x x f x f x x f x f x δδ?= ≈得 (1)()f x = 11 ()()*2%1% 22x x δδδ≈ ===; (2)4 ()f x x =时 44 4 ()()'()4()4*2%8%x x x x x x δδδ≈ === 2.设下面各数都是经过四舍五入得到的近似数,即误差不超过最后一位的半个单位,试指出他们各有几位有效数字。 (1)12.1x =;(2)12.10x =;(3)12.100x =。 解:由教材9P 关于1212.m n x a a a bb b =±型数的有效数字的结论,易得上面三个数的有效 数字位数分别为:3,4,5 3.用十进制四位浮点数计算 (1)31.97+2.456+0.1352; (2)31.97+(2.456+0.1352) 哪个较精确? 解:(1)31.97+2.456+0.1352 ≈2 1 ((0.3197100.245610)0.1352)fl fl ?+?+ =2 (0.3443100.1352)fl ?+ =0.3457210? (2)31.97+(2.456+0.1352) 2 1 (0.319710(0.245610))fl fl ≈?+? = 21 (0.3197100.259110)fl ?+? =0.34562 10? 易见31.97+2.456+0.1352=0.3456122 10?,故(2)的计算结果较精确。 4.计算正方形面积时,若要求面积的允许相对误差为1%,测量边长所允许的相对误差限为多少?

数值计算大作业

数值计算大作业 题目一、非线性方程求根 1.题目 假设人口随时间和当时人口数目成比例连续增长,在此假设下人口在短期内的增长建立数学模型。 (1)如果令()N t 表示在t 时刻的人口数目,β 表示固定的人口出生率,则人口数目满足微分方程() ()dN t N t dt β=,此方程的解为0()=t N t N e β; (2)如果允许移民移入且速率为恒定的v ,则微分方程变成() ()dN t N t v dt β=+, 此方程的解为 0()=+ (1) t t v N t N e e βββ -; 假设某地区初始有1000000人,在第一年有435000人移入,又假设在第一年年底该地区人口数量1564000人,试通过下面的方程确定人口出生率β,精确到 410-;且通过这个数值来预测第二年年末的人口数,假设移民速度v 保持不变。 435000 1564000=1000000(1) e e βββ + - 2.数学原理 采用牛顿迭代法,牛顿迭代法的数学原理是,对于方程0)(=x f ,如果) (x f 是线性函数,则它的求根是很容易的,牛顿迭代法实质上是一种线性化方法,其基本思想是将非线性方程0)(=x f 逐步归结为某种线性方程来求解。 设已知方程0)(=x f 有近似根k x (假定0)(≠'x f ),将函数)(x f 在点k x 进行泰勒展开,有 . ))(()()(???+-'+≈k k k x x x f x f x f 于是方程0)(=x f 可近似地表示为 ))(()(=-'+k k x x x f x f 这是个线性方程,记其根为1k x +,则1k x +的计算公式为

相关主题
文本预览
相关文档 最新文档