5、MATLAB程序设计与应用刘卫国(第三版)课后实验五:循环结构程序设计

目录

一、

 二、

 三、

 四、

 五、


一、

已知

y的近似值。当n分别取100、1 000、10 000时,结果是多少?

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

---------------------------------------示例代码---------------------------------------------

%循环结构:
y=0;
n=input('n=');
for i=1:n
y=y+(1/(2*i-1))*(1/(3.^(2*i-1)));
end
y
%向量运算:
n=input('n=');
i=(1./(2.*(1:n)-1)).*(1./(3.^(2.*(1:n)-1)));
s=sum(i);
s

---------------------------------------运行结果---------------------------------------------

 二、

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

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


---------------------------------------示例代码---------------------------------------------

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

---------------------------------------运行结果---------------------------------------------

 三、

考虑以下迭代公式:其中a、b为正的常数。

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

(2)如果1迭代过程收敛于r,那么r的准确值是,当(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

---------------------------------------运行结果---------------------------------------------

 四、

f1~f100中:

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

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

 ---------------------------------------示例代码---------------------------------------------

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
maxs=max(f)
mins=min(f)
sums=sum(f)
posnumber=length(find(f>0))
negnumber=length(find(f<0))
zernumber=length(find(f==0))

---------------------------------------运行结果---------------------------------------------

 五、

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

1)亲密数对的对数。

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

---------------------------------------示例代码---------------------------------------------

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

---------------------------------------运行结果---------------------------------------------

如有侵权,请速与我联系!!!

猜你喜欢

转载自blog.csdn.net/weixin_46698113/article/details/128277085