斐波那契数列 matlab程序

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

主文件:main.m

%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=70*num1+21*num2+15*num3

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))

函数文件:f.m

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

此方法摘自http://hi.baidu.com/shyyooeren/blog/item/d74f42104e8ef9f9c2ce7902.html

你可以参考下这个程序,改下多项式内容和常量a,b~~~~

#include<stdio.h>

#include <math.h>

double f(double x) //多项式

{

//return x*x*x-3*x+2

return (-2*x*x*x+21*x*x-60*x+50)

}

double F(int tn)//计算Fibonacci数

{

double F0=1,F1=1,F2

int i

if(tn<3)F2=1

else

for(i=2i<tni++)

{

F2=F0+F1

F0=F1

F1=F2

}

return F2

}

void main(void)

{

double r,u,a,b,fr,fu,q

int k,n

//步骤1,初始化

a=0.0

b=3.0

k=0

q=0.00001

n=0

while(F(n)<((b-a)/q))n++//计算次数n

r=a+(F(n-k-1)/F(n-k+1))*(b-a)

u=a+(F(n-k)/F(n-k+1))*(b-a)

fr=f(r)

fu=f(u)

while(k<n)

{

if(fr>fu)

{

if(b-r<=q)

{

printf("%d:%f",k,u)

break

}

else

{

a=r

b=b

r=u

fr=fu

u=a+(F(n-k)/F(n-k+1))*(b-a)

fu=f(u)

k++

}

}

else

{

if(u-a<=q)

{

printf("%d:%f",k,r)

break

}

else

{

a=a

b=u

u=r

fu=fr

r=a+(F(n-k-1)/F(n-k+1))*(b-a)

fr=f(r)

k++

}

}

}

getchar()

}


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

原文地址: http://outofmemory.cn/yw/12166655.html

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

发表评论

登录后才能评论

评论列表(0条)

保存