手机版

matlab实验4_循环结构程序设计_参考解答

时间:2025-07-05   来源:未知    
字号:

实验四 循环结构程序设计

教材P364

一、实验目的

1. 掌握利用for语句实现循环结构的方法。

2. 掌握利用while语句实现循环结构的方法。

3. 熟悉利用向量运算来代替循环操作的方法。

二、实验内容

π211111. 根据=2+2+2+"+2,求π的近似值。当n分别取100、1000、10000时,6123n

结果是多少?

要求:分别用循环结构和向量运算(使用sum函数)来实现。

答:程序设计:

(1) 循环结构

clear all; close all; clc;

for n=[100,1000,10000]

sum=0;

for x=1:n

sum=sum+1/(x.^2);

end

value=sqrt(6*sum)

end

(2) 向量运算

clear all; close all; clc;

for n=[100,1000,10000]

x=1:n;

value=sqrt(6*sum(1./x./x))

end

运行结果:

value =

3.1321

value =

3.1406

value =

3.1415

111,求: 2. 根据y=1+++"+352n 1

(1) y<3时的最大n值。

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

答:程序设计:

clear all; close all; clc;

y=0; n=1;

while y<3

y=y+1/(2*n-1);

n=n+1;

end

n=n-1;

y=y-1/(2*n-1)

n=n-1

运行结果:

y =

2.9944

n =

56

验证:

clear all; close all; clc;

n=56;

i=1:n;

f=1./(2*i-1);

y=sum(f)

运行结果:

y =

2.9944

3. 考虑以下迭代公式:

xn+1=a b+xn

其中a、b为正的常数。

(1) 编写程序求迭代的结果,迭代的终止条件为xn+1 xn≤10 5,迭代初值x0=1.0,迭代次数不超过500次。

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

的准确值是,当(a,b)的值取(1,1)、(8,3)、2

(10,0.1)时,分别对迭代结果和准确值进行比较。

答:

(1) 程序设计:

clear all; close all; clc;

a=2; b=3;

x0=1.0; x1=0;

n=1;

y=abs(x1-x0);

while n<=500 & y>10^(-5)

x1=a/(b+x0);

y=abs(x1-x0);

x0=x1;

n=n+1;

end

x1

运行结果:

x1 =

0.5616

(2) 程序设计:

(i) 当(a,b)的取值为(1,1)时

clear all; close all; clc;

a=1; b=1;

x0=1.0; x1=0;

n=1;

y=abs(x1-x0);

while n<=500 & y>10^(-5)

x1=a/(b+x0);

y=abs(x1-x0);

x0=x1;

n=n+1;

end

x1

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

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

运行结果:

x1 =

0.6180

r1 =

0.6180

r2 =

-1.6180

(ii) 当(a,b)的取值为(8,3)时

clear all; close all; clc;

a=8; b=3;

x0=1; x1=0;

n=1;

y=abs(x1-x0);

while n<=500 & y>10^(-5)

x1=a/(b+x0);

y=abs(x1-x0);

x0=x1;

n=n+1;

end

x1

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

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

运行结果:

x1 =

1.7016

r1 =

1.7016

r2 =

-4.7016

(iii) 当(a,b)的取值为(10,0.1)时

clear all; close all; clc;

a=10; b=0.1;

x0=1; x1=0;

n=1;

y=abs(x1-x0);

while n<=500 & y>10^(-5)

x1=a/(b+x0);

y=abs(x1-x0);

x0=x1;

n=n+1;

end

x1

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

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

运行结果:

x1 =

3.1127

r1 =

3.1127

r2 =

-3.2127

f1=1, n=1 f=0, n=2 24. 已知 ,求f1~f100中:

f3=1, n=3

fn=fn 1 2fn 2+fn 3,n>3

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

(2) 正数、零、负数的个数。

答:程序设计:

clear all; close all; clc;

f1=1; f2=0; f3=1;

f=[f1,f2,f3];

for n=4:100

f4=f3-2*f2+f1;

f=[f f4];

f1=f2;

f2=f3;

f3=f4;

end

maxvalue=max(f);

minvalue=min(f);

sumvalue=sum(f);

disp(['最大值是:', num2str(maxvalue)])

disp(['最小值是:', num2str(minvalue)])

disp(['各数和是:', num2str(sumvalue)])

positivenum=length(find(f>0));

negtivenum=length(find(f<0));

zeronum=length(find(f==0));

disp(['正数的个数:', num2str(positivenum)])

disp(['负数的个数:', num2str(negtivenum)])

disp(['零的个数:', num2str(zeronum)])

运行结果:

最大值是:4.377633e+011

最小值是:-8.994121e+011

各数和是:-7.427456e+011

正数的个数:49

负数的个数:49

零的个数:2

5. 若两个连续自然数的乘积减1是素数,则称这两个连续自然数是亲密数对,该素数是亲密素数。例如,2×3 1=5,由于5是素数,所以2和3是亲密数对,5是亲密素数。求[2,50]区间内:

(1) 亲密数对的对数。

(2) 与上述亲密数对对应的所有亲密素数之和。

答:程序设计:

clear all; close all; clc;

prime=[];

for n=2:49

x=n*(n+1)-1;

signx=0;

for k=2:sqrt(x)

if (mod(x,k)==0)

signx=1;

end

end

if signx==0

prime=[prime; n n+1];

end

end

num=size(prime);

psum=sum(prime(:,1).*prime(:,2)-1);

disp(['亲密数对的对数:', num2str(num(1))])

disp(['亲密素数之和:', num2str(psum)])

%或者

clear all; close all; clc;

psum=0; num=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

num=num+1;

psum=psum+b;

end

end

disp(['亲密数对的对数:', num2str(num)])

disp(['亲密素数之和 …… 此处隐藏:1216字,全部文档内容请下载后查看。喜欢就下载吧 ……

matlab实验4_循环结构程序设计_参考解答.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
    ×
    二维码
    × 游客快捷下载通道(下载后可以自由复制和排版)
    VIP包月下载
    特价:29 元/月 原价:99元
    低至 0.3 元/份 每月下载150
    全站内容免费自由复制
    VIP包月下载
    特价:29 元/月 原价:99元
    低至 0.3 元/份 每月下载150
    全站内容免费自由复制
    注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
    × 常见问题(客服时间:周一到周五 9:30-18:00)