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

  • 格式:docx
  • 大小:38.76 KB
  • 文档页数:18

数值分析上机题1

(1) 编制按从大到小的顺序几=亠+4

2- -1 3~ — 1

计算几的通用程序。

(2 )编制按从小到大由

-走+詔E +H计算“的通用程月

(3) 按两种顺序分别计算%, %, %, 有效位数。(编制程序时用单精度)

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

程序代码(matlab编程):

clc

clear

a=single(1・/([2:10A7]・ A2-l));

Si (1)=single(0);

SI (2)=1/(2A2-1);

for N=3:10A2

Sl(N)=a(l);

for i=2:N-l

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

end

end

S2 (l)=single(0);

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

for N=3:10A2

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

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

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

end

end 其精确值为俣怙卜

N—l

顺序

并指出 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方法的局部收敛性可知存在

5>o,当“(—恥)时,Newton迭代序列收敛于根工;。

试确定尽可能大的恥

2•试取若干初始值,观察当 x0 e (-00,-1) 9 (一1,一»),

(一恥),°1),(is时Niwton序列是否收敛以及收

敛于哪一个根。

MATLAB程序

问题1

dx=0 ・ 5;

x(l)=0.5;

while(dx>le-6)

i=l;

error=l;

while (error>le-8)

x(i+l)=x(i)-(l/3*x(i)A3-x(i))/(x(i)A2-l);

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

if (x(i)==0)

x(l)=x(l)+dx; else

dx=dx/2;

x(l)=x(l)-dx;

end

end

经计算,最大的2为0.774596 问题2

clc

clear

x2(l)=lel4;

i=l;

error=l;

while (error>le-8)

x2(i+l)=x2(i)-(l/3*x2(i)A3-x2(i))/(x2(i)A2-l);

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

i=i+l;

if(i>le4)

-1)内收敛于",在(-0.774, 0.774)内收敛于 0,在(1, +8)内收敛于朽,但在内(0.774, 1)和(一1,

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

数值分析上机题3 对于不同得初始值收敛于不同的根, 心在(・8, 39.(上机题)列主元三角分解法对于某电路的 分析,归结为求解线性方程组RI=VO

(1)编制解n阶线性方程组Ax=b的列主元三角

分解法的通用程序;

(2)用所编制的程序解线性方程组RI二V,并打

印出解向量,保留五位有效数;

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

程序:

clc

clear

A=[31,-13,0z0z0z-10z0z0z0 -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

0z0,0,0z—5,0,0z27z-2 0,0z0/-9/0z0z0/-2,29];

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

[mzn] =size (A);

Ap=[Azb];

x=zeros(n,1);

for i=l:m-l

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 :mz : ) =Ap (i+1:m, :) -Ap (i+1 :m, j ) * (Ap (i ,:)・ /maxa);

end

end

end

for i=linspace(mz1,m)

x(i) = (Ap(i,end)-Ap(i,1:end~l)*x)/Ap(1,i);

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

xl= -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 0

习题4

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

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

F;

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

端点条件为>()=0.8, 3-0. 2o用所编制程序求车 门的3次样条插值函数S(x),并打印出 S(i+0・ 5)(i=0,1, -9)o

程序:

(1)

clc clear

%%

x=[0,lz2,3z4,5z6z7,8z9z10];

y=[2.51,3.30z4.04z4.7,5.22,5.54,5.78,5.40,5.57,5.70z5.80]; yl=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));

1amda=1-miu;

f1=[ylz(y(2:end)-y(1:end-1))・/h,yend];%f[xn-1,xn]

f2=[f1(2:end)-f1(1:end-1)]・/[h(l)zh(1:end-1)+h(2:end),h(end)];%f[xn-1 zxn,xn+l]

A=2 ・ Sye (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]1);

M=A\(6*f2f);

Sx=[y(l:end-1)•z((y(2:end)-y(l:end-1))・/h)'-((1/3*M(1:end-1)+1/6*M(2: end))・*hl)z1/2*M(1:end-1)z1/6*(M(2:end)-M(1:end-1))・/hf];

0 1 2 3 4

儿 2.51 3. 30 4. 04 4. 70 5. 22

5 6 7 8 9 10

5. 54 5. 78 5. 40 5. 57 5. 70 5. 80

%%

xx=input(z x= r );

for j=2:n+1

if xx

S=Sx(j-l,:)*[l,xx-x(j-l),(xx-x(j-l))A2,(xx-x(j-l))A3]';

break

end

end

clc

clear

%%

x=[0zlz2,3z4z5z6z7z8z9z10];

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

yl=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=l-miu;

f1=[yl, (y(2:end)-y(1:end-1))・/h,yend] ;%f[xn-1z xn]

f2=[fl(2:end)-fl(l:end-l)]・/[h(l)zh(1:end-1)+h(2:end)zh(end)];%f[xn-1 zxnzxn+l]

A=2 ・ (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]1);

M=A\(6*f2');

Sx=[y(l:end-1)•z((y(2:end)-y(l:end-1))・/h)'-((1/3*M(1:end-1)+1/6*M(2: end))・*h-),1/2*M(1:end-1)z1/6*(M(2:end)-M(1:end-1))・/hf];

%%

for i=0:9

xx=i+0.5;

for j=2:n+1

if xx

S(i+l)=Sx(j-l,:)*[!,xx-x(j-l)z(xx-x(j-l))A2,(xx-x(j-l))A3]・;