matlab递归函数,matlab 递归调用例子
大家好,感谢邀请,今天来为大家分享一下matlab递归函数的问题,以及和matlab 递归调用例子的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!
Matlab 函数中怎么调用自身,进行自循环
在MATLAB中,一个函数可以调用其它函数,也可以调用自身(即递归调用)。
利用递归算法编写函数的典型例子是计算Fibonacci数列。
M-函数文件:
functiona=my_fibo(k)
ifk==1||k==2
a=1;
else
a=my_fibo(k-1)+my_fibo(k-2);
end
将这个文件写入M-文件编辑器并以名称“my_fibo.m”保存,然后就可以调用:
>>my_fibo(26)
ans=
121393
递归算法是解决某一类问题的有效方法,但不宜滥用,因为它的运算速度往往很慢。例如
>>tic,n=my_fibo(26),toc
n=
121393
elapsed_time=
1.468
但如果用一般的循环语句来求解这个问题:
>>tic,n=[1,1];fork=3:100,n(k)=n(k-1)+n(k-2);end,toc,n(26)
elapsed_time=
0
ans=
121393
速度差别是非常明显。
matlab 递归调用例子
递归公式 Pc,t= 0.88* Pc-1,t+ 0.12* Pc-1,t-1
其中c是自变量,范围(1,201),步长为1,Pc,t为函数值(c,t为P的下标)。且P1,1=0.12, Pc,0=0;当c<t时,Pc,t=0。
程序如下:
function[p]=diguihashu(c,t)
ifnargin==0,
c=1;t=0;
end
ct=[c,t];
action_ct=num2str(ct);
switch(action_ct)
case'11'
p=0.12;
caseaction_ct
temp=str2num(action_ct);
cc=temp(1);tt=temp(2);
iftt==0||cc<tt
p=0;
else
p=0.88*diguihashu(c-1,t)+0.12*diguihashu(c-1,t-1);
end
otherwise,
error('Unkonwnacctionstring!');
end
%测试结果:
>>pct=diguihashu(12,5)
pct=
0.0034
%下面是画图程序:
clear
p=zeros(15,15);
forc=1:15
fort=1:15
p(c,t)=diguihashu(c,t);
end
end
[cc,tt]=meshgrid(1:15,1:15);
surf(cc,tt,p)
xlabel('c')
ylabel('t')
MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。
MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完成相同的事情简捷得多,并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。
matlab递归调用求前n项和
matlab递归调用求前n?递归是把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解。大大地减少了程序的代码量,但递归调用也会加大存储空阃和执行时间的开销,影响程序的执行效率。
(1)直接递归调用
在f函数中调用了f函数本身
(2)间接递归调用
在其他函数中又调用这个函数本身来实现
例1:利用函数的递归调用,求n!。
你好我问一下,maple或者matlab怎么求解递归方程表达式
如何用matlab求解递归方程表达式?
1、根据方程改写递归方程式,改写时应注意其是否收敛?如解方程x³-12x+10=0的其中一个解,其迭代式为 x(k+1)=-10/(x(k)²-12)
2、利用for循环语句,求解x(k+1)和x(k)的值
3、利用if判断语句,判断x(k+1)与x(k)的差值是否小于规定的误差,如
abs(x(k+1)-x(k))<1e-5
4、如x(k+1)与x(k)的差值满足精度要求,此时x(k)即为所求的解。
5、求解代码
x(1)=1;
for k=1:10
x1=x(k);
x2=-10/(x1^2-12);
x(k+1)=x2;
if abs(x2-x1)<1e-5
disp('方程的解')
x=x1
disp('迭代次数')
k
end
end
好了,文章到此结束,希望可以帮助到大家。