matlab编程问题

1.考虑一下迭代公式xn+1=a/b+xn,其中a,b为正的常数(n+1,n是下标)。
(1)编写程序求迭代的结果,迭代的终止条件是│xn+1-xn│<=0.00001,迭代次数不超过500次。
(2)如果迭代过程收敛于r,那么r的准确值是(-b±√(b*b+4a))/2,当(a,b)的值取(1,1)、(8,3)、(10,0.1)时,分别对结果和准确值进行比较。
2.已知f1=1,n=1;f2=0,n=2;f3=1,n=3;f(n)=f(n-1)-2f(n-2)+f(n-3),n>3.求f1到f100中,
(1)最大值、最小值、各数之和。(2)正数、零、负数的个数。
3.若两个自然数的乘积减1是素数,则称这两个连续自然数是亲密数对,该素数是亲密素数。例如:2*3-1=5,由于5是素数,所以2和3是亲密数对,5是亲密素数。求【2,50】区间内:
(1)亲密数对的对数。
(2)与上述亲密数对对应的所有亲密素数之和。

1.

clear
clc
a=input('a的值为:');b=input('b的值为:');x=input('x的初值为:');
i=0;
for n=1:500
i=i+1;
y=x;

x=a/(x+b);

if abs(x-y)<=1e-5
break
end
end

x %迭代结果
X=[(-b-sqrt(b^2+4*a))/2,(-b+sqrt(b^2+4*a))/2] %准确值

2.
clear
clc

f(1)=1;f(2)=0;f(3)=1;
for n=4:100
f(n)=f(n-1)-2*f(n-2)+f(n-3);
end
f %f1到f100的值
fmax=max(f) %最大值
fmin=min(f) %最小值
sumf=sum(f) %各数之和
i=length(find(f<0)) %负数的个数
j=length(find(f>0)) %正数的个数
k=length(find(f==0)) %零的个数

3.

clear
clc
k=0;X=[0 0 0];
for i=2:50
for j=2:50
x=i*j-1;
m=2:x-1;
y=x./m;
if all(all(y-round(y)))==1&all(all(X(:,3)-x))==1&j==i+1
k=k+1;
X(k,:)=[i,j,x];
end
continue
end
end
X %2至50亲密数对
sum(X(:,3)) %上述亲密数对对应的所有亲密素数之和
温馨提示:答案为网友推荐,仅供参考
相似回答