Matlab中的阶乘函数

合集下载

MatLab常见函数和运算符号解读

MatLab常见函数和运算符号解读

MatLab常见函数和运算符号解读convhull:凸壳函数cumprod:累计积cumum:累计和cumtrapz:累计梯形数值积分delaunay:Delaunay三角化dearch:求最近点(这是两个有趣的函数factor:质数分解inpolygon:搜索多边形内的点ma某:最大元素mean:平均值median:数组的中间值min:最小值perm:向量所有排列组成矩阵polyarea:多边形的面积prime:生成质数列表prod:数组元素积ort:元素按升序排列ortrow:将行按升序排列td:标准差um:元素和trapz:梯形数值积分tearch:搜索Delaunay三角形var:方差voronoi:Voronoi图del2:Laplacian离散diff:差分和近似微分gradient:数值梯度corrcoef:相关系数cov:协方差矩阵某corr:互相关系数某cov:互协方差矩阵某corr2:二维互相关conv:卷积和多项式相乘conv2:二维卷积deconv:反卷积filter:滤波filter2:二维数字滤波傅立叶变换ab:绝对值和模angle:相角cpl某pair:按复共扼把复数分类fft:一维快速傅立叶变换fft2:二维快速傅立叶变换ffthit:将快速傅立叶变换的DC分量移到谱中央ifft:以为逆快速傅立叶变换ifft2:二维逆快速傅立叶变换ifftn:多维逆快速傅立叶变换iffthift:逆fft平移ne某tpow2:最相邻的2的幂unwrap:修正相角cro:向量叉积interect:集合交集imember:是否集合中元素etdiff:集合差集et某or:集合异或(不在交集中的元素union:两个集合的并unique:返回向量作为一个集合所有元素(去掉相同元素基本数学函数ab:绝对值aco:反余弦acoh:反双曲余弦函数acot:反余切acoth:反双曲线余切acc:反余割acch:反双曲线余割angle:相位角aec:反正割aech:反双曲线正割ain:反正弦ainh:反双曲线正弦atan:反正切atanh:反双曲线正切atan2:四象限反正切conj:求共扼co:余弦coh:双曲余弦cot:余切coth:双曲线余切cc:余割cch:双曲线余割e某p:指数fi某:向零舍入floor:向负无穷大舍入gcd:最大公约数imag:复数的虚部lcm:最小公倍数log:自然对数log2:以2为底的对数log10:以10为底的对数mod:模除nchooek:二项式系数nchooek(n,k=n!/{k!(n-k!}real:复数实部rem:余数round:四舍五入ec:正割ech:双曲线正割ign:符号函数in:正弦inh:双曲线正弦qrt:平方根tan:正切tanh:双曲线正切特殊函数airy:airy函数beelh:第三类贝塞尔函数;beelibeelk:改良型beelh函数beeljbeely:贝塞尔函数betabetaincbetaln:贝塔函数ellipj:雅克比椭圆函数ellipke:完全椭圆积分erferfcerfc某erfinv:误差函数e某pint:指数积分factorial:阶乘函数gammagammalngammainc:伽马函数legendre:勒让德函数pow2:2的幂次ratrat:有理逼近坐标变换cart2pol:笛卡儿坐标变换为极坐标或圆柱坐标cart2ph:笛卡儿坐标变换为球坐标pol2cart:极坐标变换为笛卡儿坐标ph2cart:球坐标变换为笛卡儿坐标矩阵和数组基础blkdiag:构造一个分块对角矩阵eye:创建单位矩阵flop:计算浮点操作次数,现已不再常用i:虚部单位inf:无穷大inputname:输入参数名j:虚部单位nan:非数值nargin:输入参数的数目nargout:输出参数的数目(用户定义函数pi:圆周率realma某:最大正浮点数realmin:最小正浮点数varargin,varargout:返回参数数目(matlab函数时间和日期calendar:返回日历clock:当前时间weekday:星期几矩阵操作cat:把矩阵按行或列连接起来diag:给定向量,构造对角矩阵fliplr:矩阵左右翻转flipud:矩阵上下翻转repmat:复制数组,repmat(A,m,n表示把A复制m行n列组成新数组rehape:按逐列来的方式重新整形数组rot:按逆时针方向旋转90度tril:返回一个矩阵的下三角矩阵triu:返回一个矩阵的上三角矩阵特殊函数矩阵gallery:测试矩阵,或者说大约50个矩阵模版hadamard:哈达马得矩阵hankel:汉克尔矩阵hilb:希尔波特矩阵invhilb:逆希尔波特矩阵magic:魔术方阵pacal:帕斯卡矩阵toeplitz:托普利茨矩阵wilkinon:维尔金森特征值测试矩阵算数运算符+:矩阵加-:减某:乘.某:数组乘^:矩阵乘方.^:数组乘方\\:矩阵左除/:矩阵右除.\\:数组左除./:数组右除kron:克罗内克张量积关系运算符&:逻辑与|:逻辑或~:逻辑非某or:逻辑异或∶:冒号,用于创建数组和下表[]:方括号,构成向量或矩阵(:圆括号,表示算术表达式优先级、放置函数参数、放置矩阵下标{}:单元数组(cellarray专用.:句点,小数点表示、数组运算符组成部分、字段(属性访问..:父目录,与cd一起使用...:连续三点,一行末尾表示续行,:逗号,格开参数;:分号,表示矩阵一行结束或者语句末尾使得执行结果不显示%:注释符':单引号,矩阵后表示转置或者成对出现括起字符串.':数组转置=:赋值逻辑函数all:向量中是否所有分量均非零any:是否有元素非零e某it:指定变量或文件是否存在find:返回矩阵中非零元素的索引和置i某:i系列,大部分根据名称可以知道功能icell(icelltr(iempty(:是否空数组iequal(:数组是否相等ifield(:是否结构数组中的字段ifinite(:数组中元素是否有限iglobal(:是否全局变量ihandle(:是否有效图形句柄ihold(:hold命令处于on状态与否iieee:是否使用IEEE算法iinf(:是否无穷大iletter(:数组元素是否是字母表中字母ilogical(:是否逻辑数组inan(:是否非数值数inumeric(:是否数值数组iobject(:是否对象iprime(:是否质数ireal(:是否实数ipace(:是否空字符ipare(:是否是按稀疏类别存储itruct(:是否结构类itudent:matlab版本是否学生版iuni某:是否uni某版本ia(:指定对象是否属于指定类logical(:把数值数组转变为逻辑数组A(B:A为数值数组,B为逻辑数组时,按B索引的非零元素返回A中相应位置元素milocked(:当前文件是否锁定仿真命令:im---仿真运行一个imulink模块ldebug---调试一个imulink模块imet---设置仿真参数imget---获取仿真参数线性化和整理命令:linmod---从连续时间系统中获取线性模型linmod2---也是获取线性模型,采用高级方法dinmod---从离散时间系统中获取线性模型trim---为一个仿真系统寻找稳定的状态参数构建模型命令:open_ytem--打开已有的模型cloe_ytem--关闭打开的模型或模块new_ytem--创建一个新的空模型窗口load_ytem--加载已有的模型并使模型不可见ave_ytem--保存一个打开的模型add_block--添加一个新的模块add_line--添加一条线(两个模块之间的连线)delete_block--删除一个模块delete_line--删除一根线find_ytem--查找一个模块hilite_ytem--使一个模块醒目显示replace_block--用一个新模块代替已有的模块et_param--为模型或模块设置参数get_param--获取模块或模型的参数add_param--为一个模型添加用户自定义的字符串参数delete_param--从一个模型中删除一个用户自定义的参数bdcloe--关闭一个imulink窗口bdroot--根层次下的模块名字gcb--获取当前模块的名字gcbh--获取当前模块的句柄gc--获取当前系统的名字getfullname--获取一个模块的完全路径名lupdate--将1.某的模块升级为3.某的模块addterm--为未连接的端口添加terminator模块booleanlhelp--将数值数组转化为布尔值--imulink挠没虻蓟蛘吣?榘镏nbp;封装命令:hamak--检查已有模块是否封装hamakdlg--检查已有模块是否有封装的对话框hamakicon--检查已有模块是否有封装的图标iconedit--使用ginput函数来设计模块图标makpopup--返回并改变封装模块的弹出菜单项movemak--重建内置封装模块为封装的子模块诊断命令:llatdiagnotic--上一次诊断信息llaterror--上一次错误信息llatwarning--上一次警告信息ldiagnotic--为一个模型获取模块的数目和编译状态硬拷贝和打印命令:frameedit--编辑打印画面print--将imulink系统打印成图片,或将图片保存为m文件printopt--打印机默认设置orient--设置纸张的方向helprtw看看,rtw相关的命令有三个命令:rtwgen-从一个模型中创建一个rtw文件(model.rtw,用此函数可以指定一些rtw的属性设置tlc-调用目标语言编译器rtwbuild-对一个模型调用rtw的build程序相关的命令好像还有make_rtw,rtw_c,tlc_c以上摘自:水木清华站。

matlab函数列表

matlab函数列表

ans =
3 -3
(2)floor(x):不超过x 的最大整数.(高斯取整)
>> floor( [3.12 -3.12])
ans =
3 -4
(3)ceil(x) : 大于x 的最小整数
>> ceil( [3.12 -3.12])
ans =
syms x
int(f(x), x)
例:
Syms x
f=inline(sin(x)./(x^2)+cos(x));
quad(f,3,5);
22 求定积分、广义积分
int('f(x)',a,b)
int ('f(x)','x',a,b)
或者:
syms x
int(f(x),a,b)
maple(‘convert(表达式,form, x)’) 指定变量为x,将依赖于变量
x的函数转换成form的表示方式(此指令仅对form为exp与sincos的转换式有用)
13 解方程
solve(’方程’,’变元’)
注:方程的等号用普通的等号: =
14 解不等式
调用maple中解不等式的命令即可,调用形式如下:
数论函数 gcd(a,b) 两个整数的最大公约数
lcm(a,b) 两个整数的最小公倍数
排列组合函数 factorial(n) 阶乘函数,表示n的阶乘
复数函数
real(z) 实部函数
imag(z) 虚部函数
abs(z) 求复数z的模
angle(z) 求复数z的辐角
conj(z) 求复数z的共轭复数

Matlab中的阶乘函数

Matlab中的阶乘函数

Matlab中的阶乘函数factorial一、函数形式Matlab中的阶乘函数是factorial,其函数形式为factorial(N)当N为向量时,计算从1到N这N个数的乘积,即相当于prod(1:N);当N 是N维数组时,计算N中每个元素的阶乘。

注意:由于在Matlab中双精度浮点数的整数位数大约是15位,只有对不大于21的整数计算结果是精确的,对大于21的整数,factorial的计算结果只有前15位是准确的。

二、用法例子(1)计算6的阶乘。

在Matlab命令窗口(Command Window)中,输入y = factorial(6)运算结果为:720与在Matlab命令窗口(Command Window)中,输入y = prod(1:6)运算结果为:720。

与factorial(6) 的结果相同。

(2)同时计算5,6,7,10的阶乘。

在Matlab命令窗口(Command Window)中,输入命令y = factorial([5 6 7 10])运算结果为:120 720 5040 3628800,是数组中每个元素的阶乘。

(3)计算排列组合可以使用下面函数计算从n个元素中抽出m(m, n是自然数n≥m≥1)个元素进行组合的个数。

与在Matlab命令窗口(Command Window)中,输入Combination = @(n, m) prod(n:-1:n-m+1)/ factorial(m);Combination(4,2)运算结果为:6。

三、与factor函数的区别factorial函数与factor函数名称很相似但功能不同,factorial(n)计算自然数的阶乘;factor(n)是对n进行因数分解。

factorial(6) 的计算结果为720factor(6) 的计算结果为 2 3。

Matlab如何计算大阶乘

Matlab如何计算大阶乘

x=sym(1)for i=1:1000x=x*sym(i);endx51).Matlab如何计算大阶乘?:#lll, 2002/9/18. SMTH/MathTools#如果只需要大致的值,取log10,计算出result=log10(1000!)=log10(1)+log10(2)+...log10(1000)然后求10^result=10^result的小数部分*10^result的整数部分用x^1000的1000阶导数求的x=[1:1000];prod(x)[原创]MATLAB与大数运算作者:蔡青峰MATLAB做为一个流行的数学计算工具居然不支持32位以上大数的运算,实在是匪夷所思。

或许是我对基于矩阵这个概念了解不深,大数运算是MATLAB的弱项,连同数论中专门的大量计算的不支持,使人们无法放弃MATHEMATICA。

MATLAB连一个计算阶乘的函数都没有么?对我来说,这毫无疑问是一种遗憾。

但我竟有幸发现了藏在MATLAB里的一个秘密,利用limit('x+5525...6816 mod 105...459',x,0),轻松的计算了4760位数与2332位数的大数的模(不足一秒!!)这说明了什么呢?同样的方法,我顺利的实现了不少计算,下面来看看这些激动人心的尝试把!>>limit('x+isprime(10000000000000000000000000000000000000000000000000000000 000000000000000000000000000000000000000000267)',x,0)ans =true>> limit('x+2^(2^10)+1',x,0)ans =179769313486231590772930519078902473361797697894230657273430081157732675 805500963132708477322407536021120113879871393357658789768814416622492847 430639474124377767893424865485276302219601246094119453082952085005768838 150682342462881473913110540827237163350510684586298239947245938479716304 835356329624224137217>> limit('x+2^111 mod 123',x,0)ans =80>> limit('x+66!',x,0)ans = 544344939077443064003729240247842752644293064388798874532860126869671081 148416000000000000000... ...200000的阶乘约半分钟计算完毕,但运算结果的输出几乎要了Matlab的命我算领教了Matlab强大的功能,我原以为Mathematic是不可替代的,现在看来,除了显示方式与计算方式的不同,Matlab始终是完美的。

Matlab中常见数学函数的使用

Matlab中常见数学函数的使用

给自己看的---—Matlab的内部常数(转)2008/06/19 14:01[Ctrl C/V——学校 ]MATLAB基本知识Matlab的内部常数pi 圆周率exp(1)自然对数的底数ei 或j 虚数单位Inf或inf 无穷大Matlab的常用内部数学函数我们也可在matlab中调用maple的命令进行多项式的运算,调用格式如下:maple(’maple中多项式的运算命令')如何用matlab进行分式运算发现matlab只有一条处理分式问题的命令,其使用格式如下:[n,d]=numden(f)把符号表达式f化简为有理形式,其中分子和分母的系数为整数且分子分母不含公约项,返回结果n为分子,d为分母。

注意:f必须为符号表达式不过我们可以调用maple的命令,调用方法如下:maple('denom(f)’)提取分式f的分母maple(’numer(f)’)提取分式f的分子maple(’normal(f)’ )把分式f的分子与分母约分成最简形式maple(’expand(f)’)把分式f的分子展开,分母不变且被看成单项.maple(’factor(f)')把分式f的分母和分子因式分解,并进行约分。

如何用Matlab进行因式分解syms 表达式中包含的变量factor(表达式)如何用Matlab展开syms 表达式中包含的变量expand(表达式)如何用Matlab进行化简syms 表达式中包含的变量simplify(表达式)如何用Matlab合并同类项syms 表达式中包含的变量collect(表达式,指定的变量)如何用Matlab进行数学式的转换调用Maple中数学式的转换命令,调用格式如下:maple(‘Maple的数学式转换命令’)即:maple(‘convert(表达式,form)')将表达式转换成form的表示方式maple(‘convert(表达式,form, x)’)指定变量为x,将依赖于变量x的函数转换成form的表示方式(此指令仅对form为exp与sincos的转换式有用)如何用Matlab进行变量替换syms 表达式和代换式中包含的所有变量subs(表达式,要替换的变量或式子,代换式)如何用matlab进行复数运算a+b*i 或 a +b*j表示复数a+bi 或a+bjreal(z)求复数z的实部imag(z)求复数z的虚部abs(z)求复数z的模angle(z)求复数z的辐角,conj(z)求复数z的共轭复数exp(z)复数的指数函数,表示e^z如何在matlab中表示集合[a, b, c,…]表示由a,b, c,…组成的集合(注意:元素之间也可用空格隔开)unique(A) 表示集合A的最小等效集合(每个元素只出现一次)也可调用maple的命令,格式如下:maple(’{a, b,c,…}’)表示由a,b, c,…组成的集合下列命令可以生成特殊的集合:maple(‘{seq(f(i),i=n。

Matlab的常见问题

Matlab的常见问题

>************************************************************************< > Matlab的常见问题>************************************************************************< Matlab的常见问题目录:===================================1).Matlab 6.X在Windows 2000/XP上无法启动2).我有一组x,y,z值,非规则排列,如何在Matlab中绘图?3).如何在给定句柄的axis里绘图?4).由Matlab符号运算得到的公式怎么才能将数据代进去运算?5).在Matlab中如何求最值点?如何求一维数组的极值?6).Matlab中如何作线性拟合/线性回归/多元线性回归?7).Matlab中如何作圆回归?8).Matlab中如何绘制箭头?9).Matlab中如何作二维数据的插值?10).Matlab中如何绘制三维数据阵?11).Matlab中如何注解一大段代码?12).Matlab中如何计算程序运行的时间?13).Matlab中如何改变默认的工作路径?14).Matlab如何改变默认的图形字体?15).如何在Matlab中实现交互操作?16).Matlab中为什么只能在小数点后显示四位?17).Matlab如何在命令窗口按照格式输出?18).如何在Matlab中画隐函数曲线?19).Matlab中什么函数可以删除矩阵的某一行或列?20).Matlab中能开的最大数组是由什么决定的?21).如何在Matlab中添加新的工具箱?22).如何读写Matlab的.mat文件?23).如何得到contour线上的坐标点?24).如何将Matlab绘制的三维网格图帖到word里?25).请问可以查看Matlab中函数的源代码吗?26).Matlab有没有求矩阵行数/列数/维数的函数?27).Matlab中如何中断运算?28).Matlab中有没有画圆或椭圆的函数?29).Matlab下如何定义整形30).Matlab如何产生均匀分布的白噪声?31).在Matlab中debug的时候能否跟踪变量的?32).请问在Matlab中怎样输入特殊符号啊或者上标、下标?33).Matlab中如何后台运行一个DOS程序?34).Matlab如何加载输入文件(批处理模式)?35).Matlab如何启动时执行规定的文件?36).如何在Matlab GUI中使用图形背景?37).大量数据点Matlab绘图为什么很慢?38).Matlab中如何求解广义积分?即积分限到有无穷的或者有歧异点的积分(瑕积分)?39).为什么我的Matlab程序这么慢?40).Matlab中如何作非线性回归?41).Matlab中为什么我对m文件、simulink模块,mat文件的修改不起作用呢?42).Matlab中,函数里面怎样使用基本工作空间中的变量,为什么inline函数不能使用外面的变量?43).怎样在Simulink中调用m文件?44).Matlab中怎样进行数制转换?45).matlab中的*.p是什么文件?怎么用?46).在Matlab中有goto语句吗?47).请问matlab6.X的那个matlab server是做什么的?48).Matlab中如何用鼠标取得坐标?49).Matlab中有阶乘函数吗?50).怎样才能把Maltab学精?51).Matlab如何计算大阶乘?Matlab的常见问题解答===================================1)Matlab 6.X在Windows 2000/XP上无法启动:#highsun,2001/3/2, SMTH/NewSoftware #MathWorks的解决办法虽然是针对繁体中文系统的,我试过在简体中文系统下一样可以用。

MATLAB 常用函数总结

MATLAB     常用函数总结

MATLAB 常用函数总结Matlab的内部常数pi 圆周率exp(1)自然对数的底数ei 或j 虚数单位Inf或 inf 无穷大Matlab的常用内部数学函数指数函数exp(x)以e为底数对数函数log(x)自然对数,即以e为底数的对数log10(x)常用对数,即以10为底数的对数log2(x)以2为底数的x的对数开方函数sqrt(x)表示x的算术平方根绝对值函数abs(x)表示实数的绝对值以及复数的模三角函数(自变量的单位为弧度)sin(x)正弦函数cos(x)余弦函数tan(x)正切函数cot(x)余切函数sec(x)正割函数csc(x)余割函数反三角函数asin(x)反正弦函数acos(x)反余弦函数atan(x)反正切函数acot(x)反余切函数asec(x)反正割函数acsc(x)反余割函数双曲函数sinh(x)双曲正弦函数cosh(x)双曲余弦函数tanh(x)双曲正切函数coth(x)双曲余切函数sech(x)双曲正割函数csch(x)双曲余割函数反双曲函数asinh(x)反双曲正弦函数acosh(x)反双曲余弦函数atanh(x)反双曲正切函数acoth(x)反双曲余切函数asech(x)反双曲正割函数acsch(x)反双曲余割函数求角度函数atan2(y,x)以坐标原点为顶点,x轴正半轴为始边,从原点到点(x,y)的射线为终边的角,其单位为弧度,范围为(,]数论函数gcd(a,b)两个整数的最大公约数lcm(a,b)两个整数的最小公倍数排列组合函数factorial(n)阶乘函数,表示n的阶乘复数函数real(z)实部函数imag(z)虚部函数abs(z)求复数z的模angle(z)求复数z的辐角,其范围是(,] conj(z)求复数z的共轭复数求整函数与截尾函数ceil(x)表示大于或等于实数x的最小整数floor(x)表示小于或等于实数x的最大整数round(x)最接近x的整数最大、最小函数max([a,b,c,...])求最大数min([a,b,c,..])求最小数符号函数sign(x)Matlab中的数学运算符a+b 加法 a./b数组右除a-b减法 a.\b数组左除a*b矩阵乘法a^b 矩阵乘方a.*b数组乘法 a.^b数组乘方a/b矩阵右除-a负号a\b矩阵左除' 共轭转置.'一般转置Matlab的关系运算符==等于<小于>大于<=小于或等于如何用matlab求阶乘factorial(n)求n的阶乘如何用matlab进行多项式运算(1)合并同类项syms 表达式中包含的变量 collect(表达式,指定的变量)(2)因式分解syms 表达式中包含的变量 factor(表达式)(3)展开syms 表达式中包含的变量 expand(表达式)(4)化简syms 表达式中包含的变量simplify(表达式)如何用matlab进行复数运算如何用Matlab求集合的交集、并集、差集和补集如何用matlab排序sort(v)将向量v的元素从小到大排列(升序排列)sort(v,dim,’descend or ascend’)当dim=1时矩阵按列排序,descend or ascend用来控制升序还是降序当dim=2时矩阵按行排序,descend or ascend用来控制升序还是降序如何用Matlab求极限(1)极限:syms xlimit(f(x), x, a)求f(x)关于x趋于a时的极限(2)单侧极限:左极限:syms x limit(f(x), x, a,’left’)求f(x)关于x趋于a时的左极限右极限:syms x limit(f(x), x, a,’right’)求f(x)关于x趋于a时的右极限如何用Matlab求导数diff('f(x)')diff('f(x)','x') 求f(x)关于x的导数或者:syms x diff(f(x))syms x diff(f(x), x)如何用Matlab求高阶导数如何用Matlab求高阶导数diff('f(x)',n) diff('f(x)','x',n)求f(x)关于x的n阶导数syms x diff(f(x),n)syms x diff(f(x), x,n)如何用Matlab求不定积分int('f(x)') int ('f(x)','x')求f(x)关于x的积分syms x int(f(x))syms x int(f(x), x)如何用Matlab求定积分、广义积分int('f(x)',a,b) int ('f(x)','x',a,b)求f(x)关于x的积分,区间为a到bsyms x int(f(x),a,b)syms x int(f(x), x,a,b)如何用Matlab展开级数)syms x taylor(f(x), x, n,a如何在Matlab中进行积分变换syms s tlaplace( f(t), t, s ) 拉普拉斯变换ilaplace( F(s), s, t ) 拉普拉斯变换的逆变换syms t ωfourier( f(t), t, ω) 傅立叶变换ifourier( F(ω), ω, t ) 傅立叶变换的逆变换syms n zztrans( f(n), n, z) Z变换iztrans( F(z), z, n ) Z变换的逆变换如何用Matlab解微分方程dsolve('微分方程','自变量')dsolve('微分方程','初始条件或边界条件','自变量')dsolve('D2x+2*x+x=sin(t)','x(0)=1','Dx(0)=1','t')如何用matlab求多变量函数的极限以两个变量为例说明,多于两个变量的函数极限可以依次类推。

Matlab中实现阶乘算法的几种途径

Matlab中实现阶乘算法的几种途径

Matlab中实现阶乘算法的几种途径作者:徐会艳胡鹏来源:《电脑知识与技术·学术交流》2008年第16期摘要:本文简要介绍了Matlab,阐述了阶乘的概念,并给出了阶乘算法在Matlab中的几种实现方案。

关键词:matlab;mex;阶乘;函数中图分类号:TP312文献标识码:A文章编号:1009-3044(2008)16-21258-02Several Ways of Achieving Factorial Algorithm in MatlabXU Hui-yan1,HU Peng2(1.Huaiyin Teachers College,Huaian 223300,China;2.Huaian college of Information Technology,Huaian 223003,China)Abstract:The paper introduced Matlab briefly,and illustrated the conception of factorial. It gave us Several Ways of Achieving factorial algorithm in Matlab.Key words:matlab;mex;factorial;function1 Matlab简介Matlab是由美国的Cleve Moler为了学生而用FORTRAN语言编写的关于EISPACK和LINPACK的接口程序,后经他和John Little,Steve Bangert等人一起用C语言进行了完善,并作了进一步开发。

Matlab早期是用来进行工程和科学计算的,但随着时代的变迁,自身的不断完善和充实,如今Matlab已发展成为众多行业不可缺少的软件之一,如数理统计、工程计算、图形图像处理、仿真与建模、生物遗传、控制系统设计与分析等领域。

但Matlab和其他高级语言相比,程序执行时以解释方式工作,不用编译,源程序读一句,翻译一句,执行一句,输入程序立即显示结果,从而导致程序执行速度降低。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Matlab中的阶乘函数factorial
一、函数形式
Matlab中的阶乘函数是factorial,其函数形式为
factorial(N)
当N为向量时,计算从1到N这N个数的乘积,即相当于prod(1:N);当N 是N维数组时,计算N中每个元素的阶乘。

注意:由于在Matlab中双精度浮点数的整数位数大约是15位,只有对不大于21的整数计算结果是精确的,对大于21的整数,factorial的计算结果只有前15位是准确的。

二、用法例子
(1)计算6的阶乘。

在Matlab命令窗口(Command Window)中,输入
y = factorial(6)
运算结果为:720
与在Matlab命令窗口(Command Window)中,输入
y = prod(1:6)
运算结果为:720。

与factorial(6) 的结果相同。

(2)同时计算5,6,7,10的阶乘。

在Matlab命令窗口(Command Window)中,输入命令
y = factorial([5 6 7 10])
运算结果为:120 720 5040 3628800,是数组中每个元素的阶乘。

(3)计算排列组合
可以使用下面函数计算从n个元素中抽出m(m, n是自然数n≥m≥1)个元素进行组合的个数。

与在Matlab命令窗口(Command Window)中,输入
Combination = @(n, m) prod(n:-1:n-m+1)/ factorial(m);
Combination(4,2)
运算结果为:6。

三、与factor函数的区别
factorial函数与factor函数名称很相似但功能不同,factorial(n)计算自然数的阶乘;factor(n)是对n进行因数分解。

factorial(6) 的计算结果为720
factor(6) 的计算结果为 2 3。

相关文档
最新文档