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

  • 格式:docx
  • 大小:82.84 KB
  • 文档页数:11

word格式-可编辑-感谢下载支持

数值分析上机题1

设2211NNjSj,其精确值为1311221NN。

(1)编制按从大到小的顺序22211121311NSN,计算NS的通用程序。

(2)编制按从小到大的顺序2221111(1)121NSNN,计算NS的通用程序。

(3)按两种顺序分别计算210S,410S,610S,并指出有效位数。(编制程序时用单精度)

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

程序代码(matlab编程):

clc

clear

a=single(1./([2:10^7].^2-1));

S1(1)=single(0);

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

for N=3:10^2

S1(N)=a(1);

for i=2:N-1

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

end

end

S2(1)=single(0);

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

for N=3:10^2

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

for i=linspace(N-2,1,N-2)

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

end

end

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

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

计算结果

从大到小的顺序的值 从小到大的顺序的值 精确值 有效位数

从大到小 从小到大

210S 0.740049 0.74005 0.740049 6 5

410S 0.749852 0.7499 0.7499 4 4

610S 0.749852 0.749999 0.749999 3 6

通过本上机题,看出按两种不同的顺序计算的结果是不相同的,按从大到小的顺序计算的值与精确值有较大的误差,而按从小到大的顺序计算的值与精确值吻合。从大到小的顺序计算得到的结果的有效位数少。计算机在进行数值计算时会出现“大数吃小数”的现象,导致计算结果的精度有所降低,我们word格式-可编辑-感谢下载支持

在计算机中进行同号数的加法时,采用绝对值较小者先加的算法,其结果的相对误差较小。

word格式-可编辑-感谢下载支持

数值分析上机题2

20.(上机题)Newton迭代法

(1)给定初值0x及容许误差,编制Newton法解方程()0fx根的通用程序。

(2)给定方程3()/30fxxx,易知其有三个根13x,20x,33x。

1.由Newton方法的局部收敛性可知存在0,当0(,)x时,Newton迭代序列收敛于根2x。试确定尽可能大的。

2.试取若干初始值,观察当0(,1)x,(1,),(,),(,1),(1,)时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; word格式-可编辑-感谢下载支持

if(i>1e4)

break

end

end

对于不同得初始值收敛于不同的根, 0x在(-∞,-1)内收敛于3,在(-0.774,0.774)内收敛于0,在(1,+∞)内收敛于3,但在内(0.774,1)和(-1,0.774)均可能收敛于3和3。

分析:对于不同的初值,迭代序列会收敛于不同的根,所以在某个区间内求根对于初值的选取有很大的关系。产生上述结果的原因是区间不满足大范围收敛的条件。

word格式-可编辑-感谢下载支持

数值分析上机题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);

for i=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;

for k=i:m

Ap(i+1:m,:)=Ap(i+1:m,:)-Ap(i+1:m,j)*(Ap(i,:)./maxa);

end

end

end

for i=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。

word格式-可编辑-感谢下载支持

习题 4

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

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

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

ix 0 1 2 3 4 5 6 7 8 9 10

iy 2.51 3.30 4.04 4.70 5.22 5.54 5.78 5.40 5.57 5.70 5.80

端点条件为'0y=0.8,'10y=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= ’);

for j=2:n+1

if xx

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