实验四循环结构程序设计.docx
实验四 循环结构程序设计MATLAB程序设计与应用实验报告 实验四 循环结构程序设计 一、实验目的 1.掌握利用for语句实现循环结构的方法; 2.掌握利用while语句实现循环结构的方法; 3.熟悉利用向量运算来代替循环操作的方法。 二、实验内容 1.根据p26=112+122+132+.+1n2,求p的近似值,当n分别取100,1000,10000时,结果是多少?要求:分别用循环结构和向量运算来实现。 (循环结构) 解: l s=0; n=input('n=?'); for i=1:n s=s+1/i/i; end PI=sqrt(6*s) Pi° n=?100 PI = 3.1321 ans = 3.1416 s=0; l n=input('n=?'); for i=1:n s=s+1/i/i; end PI=sqrt(6*s) pi n=?1000 PI = 3.1406 MATLAB程序设计与应用实验报告 ans = 3.1416 l s=0; n=input('n=?'); for i=1:n s=s+1/i/i; end PI=sqrt(6*s) pi n=?10000 PI = 3.1415 ans = 3.1416 向量运算 解: n=input('n=?'); i=1:n; f=1./i.2; y=sqrt (6*sum(f) n=?100 y = 3.1321 l n=input('n=?'); i=1:n; f=1./i.2; y=sqrt (6*sum(f) n=?1000 y = 3.1406 MATLAB程序设计与应用实验报告 l n=input('n=?'); i=1:n; f=1./i.2; y=sqrt (6*sum(f) n=?10000 y = 3.1415 2.根据y=1+13+15+.+12n-1,求: y<3时的最大n值;与的n值对应的y值。 解: i=1:n; f=1/(2*n-1); y=sum(f); if y<3; disp ('n'); end n n n = 10000 >> y=0; n=1; while(y<3) y=y+1/(2*n-1); n=n+1; end y=y-1/(2*(n-1)-1) n=n-2 y = 2.9944 n = 56 MATLAB程序设计与应用实验报告 3.考虑以下迭代公式:xn+1=ab+xn,其中a、b为正的常数。 编写程序求迭代的结果,迭代的终止条件为xn+1-xn³10迭代次数不超过500次; 如果迭代过程收敛于r,那么r的准确值是-b±b+4a22-5,迭代初值x0=1.0,当(a,b)的值取(1,1)、(8,3)、(10,0.1)时,分别对迭代结果和准确值进行比较。 解:a=input('a=?'); b=input('b=?'); Xn=1; Xn1=a/(b+Xn); n=0; while abs(Xn1-Xn)>1e-5 Xn=Xn1; Xn1=a/(b+Xn); n=n+1; if n=500 break; end end n Xn1 r1=(-b+sqrt(b*b+4*a)/2 r2=(-b-sqrt(b*b+4*a)/2 a=?1 b=?1 n = 12 Xn1 = 0.6180 r1 = 0.6180 MATLAB程序设计与应用实验报告 r2 = -1.6180 当时 a=input('a=?'); b=input('b=?'); Xn=1; Xn1=a/(b+Xn); n=0; while abs(Xn1-Xn)>1e-5 Xn=Xn1; Xn1=a/(b+Xn); n=n+1; if n=500 break; end end n Xn1 r1=(-b+sqrt(b*b+4*a)/2 r2=(-b-sqrt(b*b+4*a)/2 a=?8 b=?3 n = 12 Xn1 = 1.7016 r1 = 1.7016 r2 = -4.7016 当 MATLAB程序设计与应用实验报告 a=input('a=?'); b=input('b=?'); Xn=1; Xn1=a/(b+Xn); n=0; while abs(Xn1-Xn)>1e-5 Xn=Xn1; Xn1=a/(b+Xn); n=n+1; if n=500 break; end end n Xn1 r1=(-b+sqrt(b*b+4*a)/2 r2=(-b-sqrt(b*b+4*a)/2 a=?10 b=?0.1 n = 423 Xn1 = 3.1127 r1 = 3.1127 r2 = -3.2127 4.已知f1=1,f2=0,f3=1,fn=fn-1-2fn-2+fn-3,求f1f100中: 最大值、最小值、各数之和;正数、零、负数的个数。 解:for i=1:100 if i=1 f(i)=1; MATLAB程序设计与应用实验报告 elseif i=2 f(i)=0; elseif i=3 f(i)=1; else f(i)=f(i-1)-2*f(i-2)+f(i-3); end end max(f) min(f) sum(f) length(find(f>0) length(find(f=0) length(find(f<0) ans = 4.3776e+011 ans = -8.9941e+011 ans = -7.4275e+011 ans = 49 ans = 2 ans = 49 5.若两个连续自然数的乘积减1是素数,则称这两个自然数是亲密数对,该素数是亲密素MATLAB程序设计与应用实验报告 数。例如,2×3-1=5,由于5是素数,所以2和3是亲密数对,5是亲密素数。求2,50区间内:亲密数对的对数;与上述亲密数对对应的所有亲密素数之和。 解: s=0;n=0; for i=2:49 b=i*(i+1)-1; m=fix(sqrt(b); for j=2:m if rem(b,j)=0 break end end if j=m n=n+1; s=s+b; end end n s n = 28 s = 21066