计算方法上机作业集合

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一次&第二次上机作业

上机作业:

1.在Matlab上执行:>> 5.1-5-0.1和>> 1.5-1-0.5

给出执行结果,并简要分析一下产生现象的原因。

解:执行结果如下:

在Matlab中,小数值很难用二进制进行描述。由于计算精度的影响,相近两数相减会出现误差。

2.(课本181页第一题)

解:(1)n=0时,积分得=ln6-ln5,编写如下图代码

从以上代码显示的结果可以看出,的近似值为0.7465

(2)=dx,可得dx dx dx,得

,则有,

取,以此逆序估算。代码段及结果如下图所示

结果是从逆序输出至,所以得到的近似值为0.0227。(3)从估计的过程更为可靠。首先根据积分得表达式是可知,被积函数随着n的增大,其所围面积应当是逐步减小的,即积分值应是随着n的递增二单调减小的,(1)中输出的值不满足这一条件,(2)满足。设表示的近似值,-=(根据递推公式可以导出此式),可以看出,随着n的增大,误差也在增大,所以顺序估计时,算法不稳定性逐渐增大,逆序估计情况则刚好相反,误差不断减小,算法逐渐趋于稳定。

2.(课本181页第二题)(1)上机代码如图所示

求得近似根为0.09058 (2)上机代码如图所示

得近似根为0.09064;

(3)牛顿法上机代码如下

计算所得近似解为0.09091

第三次上机作业

上机作业181页第四题

线性方程组为

=

(1)顺序消元法

A=[1.1348,3.8326,1.1651,3.4017;0.5301,1.7875,2.5330,1.5435;3.4129,4. 9317,8.7643,1.3142;1.2371,4.9998,10.6721,0.0147];

b=[9.5342;6.3941;18.4231;16.9237];

上机代码(函数部分)如下

function [b] = gaus( A,b )%用b返回方程组的解

B=[A,b];

n=length(b);

RA=rank(A);

RB=rank(B);

dif=RB-RA;

if dif>0

disp('此方程组无解');

return

end

if RA==RB

if RA==n

format long;

disp('此方程组有唯一解');

for p=1:n-1

for k=p+1:n

m=B(k,p)/B(p,p);

B(k,p:n+1)=B(k,p:n+1)-m*B(p,p:n+1);

end

end %顺序消元形成上三角矩阵

b=B(1:n,n+1);

A=B(1:n,1:n);

b(n)=b(n)/A(n,n);

for q=n-1:-1:1

b(q)=(b(q)-sum(A(q,q+1:n)*b(q+1:n)))/A(q,q);

end %回代求解

else

disp('此方程组有无数组解');

end

end

上机运行结果为

>>

A=[1.1348,3.8326,1.1651,3.4017;0.5301,1.7875,2.5330,1.5435;3.4129,4.

9317,8.7643,1.3142;1.2371,4.9998,10.6721,0.0147];

b=[9.5342;6.3941;18.4231;16.9237];

>> X=gaus(A,b)

此方程组有唯一解

X =

1.0000

1.0000

1.0000

1.0000

>>

(2)列主元消元法

A=[1.1348,3.8326,1.1651,3.4017;0.5301,1.7875,2.5330,1.5435;3.4129,4. 9317,8.7643,1.3142;1.2371,4.9998,10.6721,0.0147];

b=[9.5342;6.3941;18.4231;16.9237];

函数部分代码如下

function [b] = lieZhu(A,b )%用b返回方程组的解

B=[A,b];

RA=rank(A);

RB=rank(B);

n=length(b);

dif=RB-RA;

format long;

if dif>0

disp('该方程组无解');

return

end

if dif==0

if RA==n

disp('该方程组有唯一解');

c=zeros(1,n);

for i=1:n-1

max=abs(A(i,i));

m=i;

for j=i+1:n

if max

max=abs(A(j,i));

m=j;

end

end %求出每一次消元时绝对值最大的一行的行号

if m~=i

for k=i:n

c(k)=A(i,k);

A(i,k)=A(m,k);

A(m,k)=c(k);

end

d1=b(i);

b(i)=b(m);

b(m)=d1;%函数值跟随方程一起换位置

end

for k=i+1:n

for j=i+1:n

A(k,j)=A(k,j)-A(i,j)*A(k,i)/A(i,i); end

b(k)=b(k)-b(i)*A(k,i)/A(i,i);

A(k,i)=0;

end

end %完成消元操作,形成上三角矩阵

b(n)=b(n)/A(n,n);

for i=n-1:-1:1

相关文档
最新文档