MATLAB实验四_循环结构程序设计

  • 格式:doc
  • 大小:57.00 KB
  • 文档页数:6

下载文档原格式

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

实验四 循环结构程序设计 1.根据n

3

212

2

2

2

2

1

1

1

1

6

+⋯+++=

π,求π的近似值。当n 分别取100、1000、10000时,记过是多少?

n=100

程序设计:

n=100;

i=1:n;

f=1./i.^2;

x=sum(f);

y=sqrt(6*x)

运行结果:

x =

3.1321 n=1000

程序设计:

n=1000;

i=1:n;

f=1./i.^2;

x=sum(f);

y=sqrt(6*x)

运行结果:

x =

3.1406 n=10000

程序设计:

n=1000;

i=1:n;

f=1./i.^2;

x=sum(f);

y=sqrt(6*x)

运行结果:

x =

3.1415

2.根据y=1+1

-n 21

5131

+

⋯++,求: (1)y<3时的最大n 值。

(2)与(1)的n 值对应的y 值。

程序设计:

y=1;n=1;

while(y<3)

n=n+2;

y=y+1/n;

end

y=y-1/n n=(n+1)/2 运行结果: y = 2.9944 n =

57 3.

考虑以下迭代公式:

x x n

n b a

+=

+1 其中a 、b 为正的常数。 (1)编写程序求迭代的结果,迭代的终止条件为105

1-+≤-x x n n ,迭代初值x 0=1.0,迭代次数不超过500次。 程序设计: x=1.0; a=2; b=3; x=a/(b+x); n=1;

while(abs(x-(a/x-b))>

10e-5&n<=500) x=a/(b+x); n=n+1; end x n

运行结果: x = 0.5616 n =

6

(2)如果迭代过程收敛于r ,那

么r 的准确值是

2

42

a

b b

-,当

(a,b )的值取(1,1)、(8,3)、(10,0.1)时,分别对迭代结果的准确值进行比较。 (a,b )取(1,1) 程序设计: x=1.0; a=1; b=1; x=a/(b+x);

n=1;

while(abs(x-(a/x-b))>10e-5&n<=5 00)

x=a/(b+x);

n=n+1;

end

x

r1=(-b+sqrt(b^2+4*a))/2

r2=(-b-sqrt(b^2+4*a))/2

运行结果:

x =

0.6181

r1 =

0.6180

r2 =

-1.6180

(a,b)取(8,3)

程序设计:

x=1.0;

a=8;

b=3;

x=a/(b+x); n=1;

while(abs(x-(a/x-b))>10 e-5&n<=500)

x=a/(b+x);

n=n+1;

end

x

r1=(-b+sqrt(b^2+4*a))/2 r2=(-b-sqrt(b^2+4*a))/2 运行结果:

x =

1.7016

r1 =

1.7016

r2 =

-4.7016

(a,b)取(10,0.1)

程序设计:

x=1.0;

a=10;

b=0.1;

x=a/(b+x);

n=1;

while (abs(x-(a/x-b))>10e-5&n<=500) x=a/(b+x); n=n+1; end x

r1=(-b+sqrt(b^2+4*a))/2 r2=(-b-sqrt(b^2+4*a))/2 运行结果: x = 3.1127 r1 = 3.1127 r2 = -3.2127 4.已知

⎪⎪⎩⎪⎪⎨

⎧>+

-=======---3

,2

3

,12,01,13

2

1

321

n n n n f

f

f

f f f f n n n n

求f f

100

1

~

中:

(1)最大值、最小值、各数之和。

程序设计: f(1)=1; f(2)=0; f(3)=1; n=100; max=f(3); min=f(2); sum=2; for i=4:n

f(i)=f(i-1)-2*f(i-2)+f(i-3);

if f(i)>max max=f(i); elseif f(i)

sum=sum+f(i); end sum max min

运行结果:

sum =

-7.4275e+011

max =

4.3776e+011

min =

-8.9941e+011(2)正数、零、负数的个数。

程序设计:

f(1)=1;

f(2)=0;

f(3)=1;

n=100;

pn=2;

nn=0;

zn=1;

for i=4:n

f(i)=f(i-1)-2*f(i-2)+f( i-3);

if f(i)>0

pn=pn+1;

elseif f(i)==0

zn=zn+1;

else

nn=nn+1;

end

end

disp('正数的个数:'),pn disp('负数的个数:'),nn disp('零的个数:'),zn

运行结果:

正数的个数:

pn =

49

负数的个数:

nn =

49

零的个数:

zn =

25.若两个连续自然数的乘积减1是素数,则称这两个连续自然数是亲密数对,该素数是亲密素数。例如,2 3-1=5,由于5