斐波那契数列 matlab程序

斐波那契数列 matlab程序,第1张

主文件:mainm

%made by Canlong

%%

%编写算法完成下面给余猜谜的游戏

%心里想好一个1~100之间的整数x,将它分别除以3,5,7并得到3个余数。把这三个余数输入计算机,计算机能马上猜出这个数。

%方法一:穷举法

disp('方法一:穷举法')

num1 = input('请输入第一个数:');

num2 = input('请输入第二个数:');

num3 = input('请输入第三个数:');

for i=1:100

if rem(i,3)==num1 && rem(i,5)==num2 && rem(i,7)==num3

fprintf('该数为:%d \n',i);

end

end

%%

%方法二,建模

disp('方法二,建模');

num1 = input('请输入第一个数:');

num2 = input('请输入第二个数:');

num3 = input('请输入第三个数:');

d=70num1+21num2+15num3;

while d>105

d = d-105 ;

end

fprintf('该数为:%d \n',d);

%%

%斐波那契数列的应用

%斐波那契数列有如下特点:a1,a2已知  a(n)=a(n-1)+a(n-2)  n>=3

%例题:楼梯上有n阶台阶,上楼时可以一步上1阶,也可以一步上2阶,编写算法计算共有多少种不同的上楼梯方法

%楼梯阶数

n=10;

disp('如果楼梯阶数为10,上楼梯的方法数,解得:');

fprintf('f(%d)为:%d \n',n,f(n));

函数文件:fm

%输入n为阶梯数,a为返回的阶梯数

%made by Canlong

function a=f(n)

if n==1

a=1;

return;

end

if n==2

a=2;

return

else

a=f(n-1)+f(n-2);

return

end

end

扩展资料:

图形处理:

MATLAB自产生之日起就具有方便的数据可视化功能,以将向量和矩阵用图形表现出来,并且可以对图形进行标注和打印。高层次的作图包括二维和三维的可视化、图象处理、动画和表达式作图。可用于科学计算和工程绘图。

新版本的MATLAB对整个图形处理功能作了很大的改进和完善,使它不仅在一般数据可视化软件都具有的功能(例如二维曲线和三维曲面的绘制和处理等)方面更加完善,而且对于一些其他软件所没有的功能(例如图形的光照处理、色度处理以及四维数据的表现等)。

MATLAB同样表现了出色的处理能力。同时对一些特殊的可视化要求,例如图形对话等,MATLAB也有相应的功能函数,保证了用户不同层次的要求。另外新版本的MATLAB还着重在图形用户界面(GUI)的制作上作了很大的改善,对这方面有特殊要求的用户也可以得到满足。

模块工具:

MATLAB对许多专门的领域都开发了功能强大的模块集和工具箱。一般来说,它们都是由特定领域的专家开发的,用户可以直接使用工具箱学习、应用和评估不同的方法而不需要自己编写代码。领域,诸如数据采集。

数据库接口、概率统计、样条拟合、优化算法、偏微分方程求解、神经网络、小波分析、信号处理、图像处理、系统辨识、控制系统设计、LMI控制、鲁棒控制、模型预测、模糊逻辑、金融分析、地图工具。

非线性控制设计、实时快速原型及半物理仿真、嵌入式系统开发、定点仿真、DSP与通讯、电力系统仿真等,都在工具箱(Toolbox)家族中有了自己的一席之地。

程序接口:

新版本的MATLAB可以利用MATLAB编译器和C/C++数学库和图形库,将自己的MATLAB程序自动转换为独立于MATLAB运行的C和C++代码。允许用户编写可以和MATLAB进行交互的C或C++语言程序。

另外,MATLAB网页服务程序还容许在Web应用中使用自己的MATLAB数学和图形程序。MATLAB的一个重要特色就是具有一套程序扩展系统和一组称之为工具箱的特殊应用子程序。

工具箱是MATLAB函数的子程序库,每一个工具箱都是为某一类学科专业和应用而定制的,主要包括信号处理、控制系统、神经网络、模糊逻辑、小波分析和系统仿真等方面的应用。

#include<stdioh>
void Fdt(long F1,long F2,int N);//递推
void Fdg(long F1,long F2,int N);//递归
main()
{
int n=20;
long f1,f2;
f1=f2=1;
Fdt(f1,f2,n);
printf("\n\n");
Fdg(f1,f2,n);

}
void Fdt(long F1,long F2,int N)//递推
{
for(int i=1;i<=N;i++)
{
printf("%12ld %12ld",F1,F2);
if(i%2==0)
printf("\n");
F1=F1+F2;
F2=F1+F2;
}
}
void Fdg(long F1,long F2,int N)//递归
{
if(N>=1)
{
printf("%12ld %12ld",F1,F2);
if(N%2==0)
printf("\n");
Fdg(F1+F2,F1+F2+F2,N-1);
}

}

斐波那契数列递归算法是斐波那契数列的一种算法,又称为黄金分割数列,其算法规律为F(n)=F(n-1)+F(n-2)。

由于是以兔子的繁殖为例子引入的,因此也叫“兔子数列”。它指的是这样一个数列:0、1、1、2、3、5、8、13……,从这组数可以很明显看出这样一个规律:从第三个数开始,后边一个数一定是在其之前两个数的和。

扩展资料:

斐波那契数列递归的原理:

1、每一级的函数调用都有自己的变量。

2、每一级函数调用都会有一次返回。

3、递归函数中,位于递归调用前的语句和各级调用函数具有相同的执行顺序。

4、递归函数中,位于递归调用后的语句和各级调用函数具有相反的执行顺序。

5、虽然每一级递归都有自己的变量,但是函数代码并不会得到复制。

斐波那契数列 ( 意大利语 :Successione di Fibonacci) 的定义

斐波那契数列由0和1开始,之后的每个斐波那契数就是由之前的两数相加而得出。具体数值如下:

0,1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610,

特别注意 :F(0)代表的是第一个数值,数列下标由0开始。

代码如上,用了迭代的算法计算每个数值,每个N值最大运行N-1次循环,算法比递归要高效很多。递归代码如下:


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/yw/12898801.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-28
下一篇 2023-05-28

发表评论

登录后才能评论

评论列表(0条)

保存