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

更新时间:2023-11-08 21:32:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验四 循环结构程序设计 1.根据??621123?21?21???21n,2x =

3.1406 求?的近似值。当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)

运行结果:

n=10000

程序设计:

n=1000;

i=1:n;

f=1./i.^2;

x=sum(f);

y=sqrt(6*x)

运行结果:

x =

3.1415

2.根据y=1+1113?5???2n-1,求: (1)y<3时的最大n值。

(2)与(1)的n值对应的y值。程序设计:

y=1;n=1;

while(y<3)

n=n+2;

y=y+1/n;

end

1

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

57 3.

考虑以下迭代公式:

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

运行结果: x = 0.5616 n =

6

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

xn?1?a b?xn其中a、b为正的常数。 (1)编写程序求迭代的结果,迭代的终止条件为xn?1?xn?10,迭代初值x0=1.0,迭代次数不超过500次。 程序设计: x=1.0; a=2; b=3; x=a/(b+x); n=1;

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

2

?5么r的准确值是

?b?b22?4a,当

(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<=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 = 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))>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 = 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);

3

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.已知

??f?1,n?1?f1?2?0,n?2?f3?1,n?3

??fn?fn?1?2fn?2?fn?3,n?3求f中:

1~f100(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

4

运行结果: 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;

5

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

是素数,所以2和3是亲密数对,5是亲密素数。求[2,50]区间内: (1)亲密数对的对数。 (2)与上述亲密数对对应的所有亲密素数之和。 i = 28 亲密素数之和 y =

21066 程序设计:

x=1; i=0; y=0; for n=2:50 m=n*(n-1); l=m-1; if x==isprime(l); y=y+x*l; i=i+1; end end

disp('请输入亲密对象的个数'); i

disp('亲密素数之和'); y

请输入亲密对象的个数

6

本文来源:https://www.bwwdw.com/article/ecyv.html

Top