东南大学《数值分析》上机题.docx

上传人:b****8 文档编号:10117441 上传时间:2023-02-08 格式:DOCX 页数:17 大小:57.88KB
下载 相关 举报
东南大学《数值分析》上机题.docx_第1页
第1页 / 共17页
东南大学《数值分析》上机题.docx_第2页
第2页 / 共17页
东南大学《数值分析》上机题.docx_第3页
第3页 / 共17页
东南大学《数值分析》上机题.docx_第4页
第4页 / 共17页
东南大学《数值分析》上机题.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

东南大学《数值分析》上机题.docx

《东南大学《数值分析》上机题.docx》由会员分享,可在线阅读,更多相关《东南大学《数值分析》上机题.docx(17页珍藏版)》请在冰豆网上搜索。

东南大学《数值分析》上机题.docx

东南大学《数值分析》上机题

数值分析上机题1

,其精确值为

(1)编制按从大到小的顺序

,计算

的通用程序。

(2)编制按从小到大的顺序

,计算

的通用程序。

(3)按两种顺序分别计算

,并指出有效位数。

(编制程序时用单精度)

(4)通过本上机题,你明白了什么?

程序代码(matlab编程):

clc

clear

a=single(1./([2:

10^7].^2-1));

S1

(1)=single(0);

S1

(2)=1/(2^2-1);

forN=3:

10^2

S1(N)=a

(1);

fori=2:

N-1

S1(N)=S1(N)+a(i);

end

end

S2

(1)=single(0);

S2

(2)=1/(2^2-1);

forN=3:

10^2

S2(N)=a(N-1);

fori=linspace(N-2,1,N-2)

S2(N)=S2(N)+a(i);

end

end

S1表示按从大到小的顺序的SN

S2表示按从小到大的顺序的SN

计算结果

从大到小的顺序的值

从小到大的顺序的值

精确值

有效位数

从大到小

从小到大

0.740049

0.74005

0.740049

6

5

0.749852

0.7499

0.7499

4

4

0.749852

0.749999

0.749999

3

6

通过本上机题,看出按两种不同的顺序计算的结果是不相同的,按从大到小的顺序计算的值与精确值有较大的误差,而按从小到大的顺序计算的值与精确值吻合。

从大到小的顺序计算得到的结果的有效位数少。

计算机在进行数值计算时会出现“大数吃小数”的现象,导致计算结果的精度有所降低,我们在计算机中进行同号数的加法时,采用绝对值较小者先加的算法,其结果的相对误差较小。

数值分析上机题2

20.(上机题)Newton迭代法

(1)给定初值

及容许误差

,编制Newton法解方程

根的通用程序。

(2)给定方程

,易知其有三个根

1.由Newton方法的局部收敛性可知存在

,当

时,Newton迭代序列收敛于根

试确定尽可能大的

2.试取若干初始值,观察当

时Newton序列是否收敛以及收敛于哪一个根。

MATLAB程序

问题1

clc

clear

dx=0.5;

x

(1)=0.5;

while(dx>1e-6)

i=1;

error=1;

while(error>1e-8)

x(i+1)=x(i)-(1/3*x(i)^3-x(i))/(x(i)^2-1);

error=abs(x(i+1)-x(i));

i=i+1;

end

if(x(i)==0)

x

(1)=x

(1)+dx;

else

dx=dx/2;

x

(1)=x

(1)-dx;

end

end

经计算,最大的

为0.774596

问题2

clc

clear

x2

(1)=1e14;

i=1;

error=1;

while(error>1e-8)

x2(i+1)=x2(i)-(1/3*x2(i)^3-x2(i))/(x2(i)^2-1);

error=abs(x2(i+1)-x2(i));

i=i+1;

if(i>1e4)

break

end

end

对于不同得初始值收敛于不同的根,

在(-∞,-1)内收敛于

,在(-0.774,0.774)内收敛于0,在(1,+∞)内收敛于

,但在内(0.774,1)和(-1,0.774)均可能收敛于

分析:

对于不同的初值,迭代序列会收敛于不同的根,所以在某个区间内求根对于初值的选取有很大的关系。

产生上述结果的原因是区间不满足大范围收敛的条件。

 

数值分析上机题3

39.(上机题)列主元三角分解法对于某电路的分析,归结为求解线性方程组RI=V。

(1)编制解n阶线性方程组Ax=b的列主元三角分解法的通用程序;

(2)用所编制的程序解线性方程组RI=V,并打印出解向量,保留五位有效数;

(3)本编程之中,你提高了哪些编程能力?

程序:

clc

clear

A=[31,-13,0,0,0,-10,0,0,0

-13,35,-9,0,-11,0,0,0,0

0,-9,31,-10,0,0,0,0,0

0,0,-10,79,-30,0,0,0,-9

0,0,0,-30,57,-7,0,-5,0

0,0,0,0,-7,47,-30,0,0

0,0,0,0,0,-30,41,0,0

0,0,0,0,-5,0,0,27,-2

0,0,0,-9,0,0,0,-2,29];

b=[-15,27,-23,0,-20,12,-7,7,10]';

[m,n]=size(A);

Ap=[A,b];

x=zeros(n,1);

fori=1:

m-1

j=i;

[maxa,maxi]=max(abs(Ap(i:

end,j)));

maxi=maxi+i-1;

if(maxa~=0)

mid=Ap(maxi,:

);

Ap(maxi,:

)=Ap(i,:

);

Ap(i,:

)=mid;

fork=i:

m

Ap(i+1:

m,:

)=Ap(i+1:

m,:

)-Ap(i+1:

m,j)*(Ap(i,:

)./maxa);

end

end

end

fori=linspace(m,1,m)

x(i)=(Ap(i,end)-Ap(i,1:

end-1)*x)/Ap(i,i);

end

 

结果:

方程的解为(保留5位有效数字):

x1=-0.28923,x2=0.34544,x3=-0.71281,

x4=-0.22061,x5=-0.43040,x6=0.15431,

x7=-0.057823,x8=0.20105,x9=0.29023。

习题4

37.(上机题)3次样条插值函数

(1)编制求第一型3次样条插值函数的通用程序;

(2)已知汽车曲线型值点的数据如下:

0

1

2

3

4

5

6

7

8

9

10

2.51

3.30

4.04

4.70

5.22

5.54

5.78

5.40

5.57

5.70

5.80

端点条件为

=0.8,

=0.2。

用所编制程序求车门的3次样条插值函数S(x),并打印出S(i+0.5)(i=0,1,…9)。

程序:

(1)

clc

clear

%%

x=[0,1,2,3,4,5,6,7,8,9,10];

y=[2.51,3.30,4.04,4.7,5.22,5.54,5.78,5.40,5.57,5.70,5.80];

y1=0.8;

yend=0.2;

%%___________________________________________

n=size(x,2)-1;

h=x(2:

end)-x(1:

end-1);

miu=h(1:

end-1)./(h(1:

end-1)+h(2:

end));

lamda=1-miu;

f1=[y1,(y(2:

end)-y(1:

end-1))./h,yend];%f[xn-1,xn]

f2=[f1(2:

end)-f1(1:

end-1)]./[h

(1),h(1:

end-1)+h(2:

end),h(end)];%f[xn-1,xn,xn+1]

A=2.*eye(n+1);

A(2:

end,1:

end-1)=A(2:

end,1:

end-1)+diag([miu,1]');

A(1:

end-1,2:

end)=A(1:

end-1,2:

end)+diag([1,lamda]');

M=A\(6*f2');

Sx=[y(1:

end-1)',((y(2:

end)-y(1:

end-1))./h)'-((1/3*M(1:

end-1)+1/6*M(2:

end)).*h'),1/2*M(1:

end-1),1/6*(M(2:

end)-M(1:

end-1))./h'];

%%

xx=input(’x=’);

forj=2:

n+1

ifxx

S=Sx(j-1,:

)*[1,xx-x(j-1),(xx-x(j-1))^2,(xx-x(j-1))^3]';

break

end

end

(2)

clc

clear

%%

x=[0,1,2,3,4,5,6,7,8,9,10];

y=[2.51,3.30,4.04,4.7,5.22,5.54,5.78,5.40,5.57,5.70,5.80];

y1=0.8;

yend=0.2;

%%___________________________________________

n=size(x,2)-1;

h=x(2:

end)-x(1:

end-1);

miu=h(1:

end-1)./(h(1:

end-1)+h(2:

end));

lamda=1-miu;

f1=[y1,(y(2:

end)-y(1:

end-1))./h,yend];%f[xn-1,xn]

f2=[f1(2:

end)-f1(1:

end-1)]./[h

(1),h(1:

end-1)+h(2:

end),h(end)];%f[xn-1,xn,xn+1]

A=2.*eye(n+1);

A(2:

end,1:

end-1)=A(2:

end,1:

end-1)+diag([miu,1]');

A(1:

end-1,2:

end)=A(1:

end-1,2:

end)+diag([1,lamda]');

M=A\(6*f2');

Sx=[y(1:

end-1)',((y(2:

end)-y(1:

end-1))./h)'-((1/3*M(1:

end-1)+1/6*M(2:

end)).*h'),1/2*M(1:

end-1),1/6*(M(2:

end)-M(1:

end-1))./h'];

%%

fori=0:

9

xx=i+0.5;

forj=2:

n+1

ifxx

S(i+1)=Sx(j-1,:

)*[1,xx-x(j-1),(xx-x(j-1))^2,(xx-x(j-1))^3]';

break

end

end

end

x∈[0,1]时;S(x)=2.51+0.8x-0.0014861x2-0.00851395x3

x∈[1,2]时;S(x)=3.3+0.771486(x-1)-0.027028(x-1)2-0.00445799(x-1)3

x∈[2,3]时;S(x)=4.04+0.704056(x-2)-0.0404019(x-2)2-0.0036543(x-2)3

x∈[3,4]时;S(x)=4.7+0.612289(x-3)-0.0513648(x-3)2-0.0409245(x-3)3

x∈[4,5]时;S(x)=5.22+0.386786(x-4)-0.174138(x-4)2+0.107352(x-4)3

x∈[5,6]时;S(x)=5.54+0.360567(x-5)+0.147919(x-5)2-0.268485(x-5)3

x∈[6,7]时;S(x)=5.78-0.149051(x-6)-0.657537(x-6)2+0.426588(x-6)3

x∈[7,8]时;S(x)=5.4-0.184361(x-7)+0.622227(x-7)2-0.267865(x-7)3

x∈[8,9]时;S(x)=5.57+0.256496(x-8)-0.181369(x-8)2+0.0548728(x-8)3

x∈[9,10]时;S(x)=5.7+0.058376(x-9)-0.0167508(x-9)2+0.0583752(x-9)3

S(0.5)=2.90856S(1.5)=3.67843S(2.5)=4.38147

S(3.5)=4.98819S(4.5)=5.38328S(5.5)=5.7237

S(6.5)=5.59441S(7.5)=5.42989S(8.5)=5.65976

S(9.5)=5.7323

习题五重积分的计算

23(上机题)重积分的计算

题目:

给定积分

取初始步长h和k,及精度

应用复化梯形公式,采用逐次二分步长的方法,编制计算I(f)的通用程序。

计算至相邻两次近似值之差的绝对值不超过

为止。

1)用所编程序计算积分

,取

程序:

clc

clear

%%example

f=inline('tan(x.^2+y.^2)','x','y');

a=0;

b=pi/3;

c=0;

d=pi/6;

%%define

error=1;

k=1;

n=1;

while(error>0.5e-5)

[x,y]=meshgrid(linspace(c,d,2^k+1),linspace(a,b,2^k+1));

h=(b-a)/2^k;

l=(d-c)/2^k;

z=f(x,y);

z1=z(1:

end-1,1:

end-1);

z2=z(1:

end-1,2:

end);

z3=z(2:

end,1:

end-1);

z4=z(2:

end,2:

end);

t(k)=h*l/4*(sum(sum(z1))+sum(sum(z2))+sum(sum(z3))+sum(sum(z4)));

%%extrapolation

if(k>=2)

T(1,k-1)=4/3*t(k)-1/3*t(k-1);%T

(1)

error=min(error,abs(t(k)-t(k-1)));

if(k>=3)

T(2,k-2)=16/15*T(1,k-1)-1/15*T(1,k-2);%T

(2)

error=min(error,abs(T(1,k-1)-T(1,k-2)));

if(k>=4)

T(3,k-3)=64/63*T(1,k-2)-1/63*T(1,k-3);%T(3)

error=min(error,abs(T(2,k-2)-T(2,k-3)));

if(k>=5)

error=min(error,abs(T(3,k-3)-T(3,k-4)));

end

end

end

end

k=k+1;

end

计算结果:

T(f)T

(1)(f)T

(2)(f)T(3)(f)

1

0.5197965

0.344032

0.337393

0.337709

2

0.3879734

0.337808

0.336592

0.33665

3

0.3503495

0.336668

0.336524

0.336531

4

0.3400887

0.336533

0.336521

5

0.3374218

0.336521

6

0.3367464

I(f)=0.33652

二分6次

习题6

23.(上机题)常微分方程初值问题数值解

(1)编制RK4方法的通用程序;

(2)编制AB4方法的通用程序(由RK4提供初值);

(3)编制AB4-AM4预测校正方法的通用程序(由RK4提供初值);

(4)编制带改进的AB4-AM4预测校正方法的通用程序(由RK4提供初值);

(5)对于初值问题

 

取步长

应用

(1)~(4)中的四种方法进行计算,并将计算结果和精确解

作比较;

(6)通过本上机题,你能得到哪些结论?

程序:

clc

clear

%%Originalquestion

f=inline('-x*x*y*y','x','y');

y0=3;

h=0.1;

xstr=0;

xend=1.5;

x=xstr:

h:

xend;

yx=3./(1+x.^3);

n=size(x,2);

%%RK4method

RK4y

(1)=y0;

fori=1:

n-1

k1=f(x(i),RK4y(i));

k2=f(x(i)+h/2,RK4y(i)+h/2*k1);

k3=f(x(i)+h/2,RK4y(i)+h/2*k2);

k4=f(x(i)+h,RK4y(i)+h*k3);

RK4y(i+1)=RK4y(i)+h/6*(k1+2*k2+2*k3+k4);

end

%%AB4method

AB4y(1:

4)=RK4y(1:

4);

fori=4:

n-1

AB4y(i+1)=AB4y(i)+h/24*(55*f(x(i),AB4y(i))-59*f(x(i-1),AB4y(i-1))+37*f(x(i-2),AB4y(i-2))-9*f(x(i-3),AB4y(i-3)));

end

%%AB4-AM4predictivemethod

BM4y(1:

4)=RK4y(1:

4);

fori=4:

n-1

yp(i+1)=BM4y(i)+h/24*(55*f(x(i),BM4y(i))-59*f(x(i-1),BM4y(i-1))+37*f(x(i-2),BM4y(i-2))-9*f(x(i-3),BM4y(i-3)));

BM4y(i+1)=BM4y(i)+h/24*(9*f(x(i+1),yp(i+1))+19*f(x(i),BM4y(i))-5*f(x(i-1),BM4y(i-1))+f(x(i-2),BM4y(i-2)));

end

%%ImprovedAB4-AM4predictivemethod

imprBM4y(1:

4)=RK4y(1:

4);

fori=4:

n-1

yP(i+1)=imprBM4y(i)+h/24*(55*f(x(i),imprBM4y(i))-59*f(x(i-1),imprBM4y(i-1))+37*f(x(i-2),imprBM4y(i-2))-9*f(x(i-3),imprBM4y(i-3)));

yc(i+1)=imprBM4y(i)+h/24*(9*f(x(i+1),yP(i+1))+19*f(x(i),imprBM4y(i))-5*f(x(i-1),imprBM4y(i-1))+f(x(i-2),imprBM4y(i-2)));

imprBM4y(i+1)=251/270*yc(i+1)+19/270*yP(i+1);

end

%%Error

error(1:

4,1:

n)=abs([yx-RK4y;yx-AB4y;yx-BM4y;yx-imprBM4y]);

计算结果:

kx(k)y(x)RK4方法误差AB4方法误差AB4—AM4误差带改进AB4—AM4误差

1

0

3

3

0

3

0

3

0

3

0

2

0.1

2.997003

2.997003

1.87E-07

2.997003

1.87E-07

2.997003

1.87E-07

2.997003

1.87E-07

3

0.2

2.97619

2.97619

3.92E-07

2.97619

3.92E-07

2.97619

3.92E-07

2.97619

3.92E-07

4

0.3

2.92113

2.921129

7.58E-07

2.921129

7.58E-07

2.921129

7.58E-07

2.921129

7.58E-07

5

0.4

2.819549

2.819547

1.61E-06

2.818389

0.00116

2.819678

0.00013

2.819588

3.88E-05

6

0.5

2.666667

2.666663

3.18E-06

2.664672

0.001994

2.666876

0.000209

2.666713

4.62E-05

7

0.6

2.467105

2.4671

5.01E-06

2.465203

0.001903

2.467252

0.000147

2.467097

8.23E-06

8

0.7

2.233805

2.233799

5.77E-06

2.233079

0.000726

2.233731

7.35E-05

2.233682

0.000122

9

0.8

1.984127

1.984123

4.13E-06

1.984951

0.000824

1.983787

0.00034

1.983885

0.000242

10

0.9

1.735107

1.735107

1.16E-07

1.737043

0.001936

1.734607

0.0005

1.734808

0.000299

11

1

1.5

1.500006

5.81E-06

1.502195

0.002195

1.499516

0.000484

1.499732

0.000268

12

1.1

1.287001

1.287013

1.13E-05

1.288763

0.001762

1.286657

0.000344

1.286821

0.000181

13

1.2

1.099707

1.099722

1.54E-05

1.100724

0.001017

1.099533

0.000174

1.099622

8.50E-05

14

1.3

0.93838

0.938397

1.77E-05

0.93871

0.000331

0.938343

3.72E-05

0.938367

1.24E-05

15

1.4

0.801282

0.8013

1.84E-05

0.801135

0.000147

0.801327

4.53E-05

0.801311

2.93E-05

16

1.5

0.685714

0.685732

1.78E-05

0.685335

0.00038

0.685796

8.18E-05

0.68576

4.62E-05

结论:

带改进的AB4-AM4预测校正方法比AB4-AM4预测校正方法精度更高,AB4方法精度最低,RK4方法的精度最高

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 自然科学 > 生物学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1