计算方法实验11

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

实验十一

一、编程并在计算机上调试修改运行

1. P142例1、P145例2、P154例3

2. P155 2、P156 7、9

二、阅读理解下列程序,并在计算机上运行.

1. %利用e x的展开式计算函数e x的值

(1) qexp.m

function [E,k,F]=qexp(x,w,n)

E=0;F=1;

for k=1:n

E=E+F;

F=x*F/k;

if abs(E-exp(x))

break

end

end

(2) qex.m

function [E,k,F]=qex(x)

E=0;F=1;k=1;

while abs(F)>0

E=E+F;

F=x*F/k;

k=k+1;

end

2.% 利用sin(x)的展开式计算其函数值(1) qsin.m

function [s,k,T]=qsin(x)

s=0;T=x;k=1;

while abs(T)>0

s=s+T;

T=-x*x*T/(2*k*(2*k+1));

k=k+1;

end

(2) qsn.m

function [s,k,T]=qsn(x,w,n)

s=0;T=x;

for k=1:n

s=s+T;

T=-x*x*T/(2*k*(2*k+1));

if abs(s-sin(x))

break

end

end

3. play.m

while 1

x=fix(100*rand);

n=7;test=1;

for k=1:7

numb=int2str(n);

disp(['You have a right to ',numb,' guesses'])

disp(['A guess is a number between 0 and 100'])

guess=input('Enter your guess:');

if guess

disp('Low')

elseif guess>x

disp('High')

else

disp('You won')

test=0;

break;

end

n=n-1;

end

if test==1

disp('You lost')

end

m=input('继续?''Y''or''N''','s');

if m=='Y'

continue

else

break

end

end一、

1.

P142例1

function [y,k]=Jacobi(A,b,x,e,N)

D=diag(diag(A));

L=tril(A)-D;

U=triu(A)-D;

for k=1:N

y=-(D^(-1))*(L+U)*x+(D^(-1))*b;

if norm(x'-y',inf)>e

x=y;

else

break

end

end

if k==N

disp('µü´úʧ°Ü')

end

>> A=[10 -1 -2;-1 10 -2;-1 -1 5]; >> b=[7.2 8.3 4.2]';

>> x=[0 0 0]';

>> [y,k]=Jacobi(A,b,x,1e-3,100)

y =

1.0998

1.1998

1.2998

k =

8

>> [y,k]=Jacobi(A,b,x,1e-4,100)

y =

1.1000

1.2000

1.3000

k =

10

>> [y,k]=Jacobi(A,b,x,1e-6,100)

y =

1.1000

1.2000

1.3000

k =

15

P145例2

function [y,k]=GaussSeidel(A,b,x,e,N) D=diag(diag(A));

L=tril(A)-D;

U=triu(A)-D;

for k=1:N

y=-((D+L)^(-1))*U*x+((D+L)^(-1))*b;

if norm(x'-y',inf)>e

x=y;

else

break

end

end

if k==N

disp('µü´úʧ°Ü')

end

>> A=[10 -1 -2;-1 10 -2;-1 -1 5];

>> b=[7.2 8.3 4.2]';

>> x=[0 0 0]';

>> [y,k]=GaussSeidel(A,b,x,1e-3,100)

y =

1.0999

1.1999

1.3000

k =

5

>> [y,k]=GaussSeidel(A,b,x,1e-4,100) y =

1.1000

1.2000

1.3000

k =

7

>> [y,k]=GaussSeidel(A,b,x,1e-6,100) y =

1.1000

1.2000

1.3000

k =

9

>> [y,k]=GaussSeidel(A,b,x,1e-7,100) y =

1.1000

1.2000

1.3000

相关文档
最新文档