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

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

实验四 循环结构程序设计

教材P364

一、实验目的

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

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

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

二、实验内容

1. 根据2222π11116123n

=++++"2,求的近似值。当n 分别取100、1000、10000时,结果是多少?

π要求:分别用循环结构和向量运算(使用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

2. 根据11113521

y n =++++−",求: (1) 时的最大n 值。

3y <(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. 考虑以下迭代公式:

1n n

a x

b x +=+ 其中、b 为正的常数。

a (1) 编写程序求迭代的结果,迭代的终止条件为5110n n x x −+−≤,迭代初值,迭代次数不超过500次。

0 1.0x =(2) 如果迭代过程收敛于r ,那么r

的准确值是2

b −±,当的值取、(8、时,分别对迭代结果和准确值进行比较。

(,)a b (1,1),3)(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

4. 已知,求1231231, 10, 21, 3

2, n n n n f n f n f n f f f f n −−−==⎧⎪==⎪⎨==⎪⎪=−+>⎩3

1100~f f 中:

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

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

相关文档
最新文档