东南大学《数值分析》上机题
- 格式: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