计算方法实验11
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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