实验6考拉兹(Collatz)猜想
- 格式:docx
- 大小:137.41 KB
- 文档页数:4
考拉兹(Collatz)猜想
1.问题描述:
从20世纪50年代开始,在国际数学界广泛流传着这样一个奇怪有趣的数学
问题:任意给定一个自然数,如果是偶数,则变换为x/2;如果是奇数,则
变换成3x+1。此后,再对其进行上述变换。例如,x=52,则可陆续得出26、
13、40、20、10、5、16、8、4、2、1。如果再做下去,就得到循环4、2、
1。这个问题最先由L.Collatz提出,因此成为Collatz猜想。
训练目的:
熟悉m函数文件
了解基本绘图
训练内容:
使用Matlab函数实现Collatz猜想
训练要求:
编写程序实现500以内的Collatz猜想
绘制图形
编制实训报告
2.算法描述:
函数collatz对任意给定的n(500以内)产生整数序列:如果n是偶数,2
除得到序列里的下一个整数; 如果n是奇数,给它乘3然后加1得到序列
里的下一个整数。函数plot用来绘出其图形。
3.程序源代码:
function c=collatz(n)
c=n;
while n>1 & n<501
if rem(n,2)==0
n=n/2;
else
n=3*n+1;
end
c=[c n];
end
plot(c)
title('collatz')
legend('y=collatz(n)')
4.程序结果说明:
如图,当输入collatz(52)时,得到如图一串数字26、13、40、20、10、5、16、
8、4、2、1,同时出现其基本绘图,图为输入collatz(52)时所得到的:横坐标
表示得到的第几个整数,纵坐标表示每个整数的值。
5.小结:
实验中绘图时因未分清横纵坐标是什么,写成plot(x,collatz(x)),造成结果是一
条直线,后来改为collatz(c)(其中c为输出结果),得到了其正确的折线图。
每输入一个n时,都可以得到它的图。