zoukankan      html  css  js  c++  java
  • Matlab 计算大数的阶乘

    http://hi.baidu.com/dreamflyman/item/11e920165596280fd0d66d9f

    >> syms k;
    >> kfac=sym('k!');
    >> subs(kfac,k,10)

    ans =

    3628800

    >> subs('x!',10)

    ans =

    3628800

    其实,以上程序还可以求更大的数的阶乘,只不过即使算出来为Inf,似乎没有什么用处。

    http://www.zdh1909.com/html/matlab/15832.html

    MATLAB做为一个流行的数学计算工具居然不支持32位以上大数的运算,实在是匪夷所思。或许是我对基于矩阵这个概念了解不深,大数运算是MATLAB的弱项,连同数论中专门的大量计算的不支持,使人们无法放弃MATHEMATICA。MATLAB连一个计算阶乘的函数都没有么?对我来说,这毫无疑问是一种遗憾。
    但我竟有幸发现了藏在MATLAB里的一个秘密,利用limit('x+5525...6816 mod 105...459',x,0),轻松的计算了4760位数与2332位数的大数的模(不足一秒!!)这说明了什么呢?同样的方法,我顺利的实现了不少计算,下面来看看这些激动人心的尝试把!
    >>limit('x+isprime(10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000267)',x,0)
    ans =
    true
    >> limit('x+2^(2^10)+1',x,0)
    ans =
    179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137217
    >> limit('x+2^111 mod 123',x,0)
    ans =
    80

    >> limit('x+66!',x,0)

    ans =

    544344939077443064003729240247842752644293064388798874532860126869671081148416000000000000000

    200000的阶乘约半分钟计算完毕,但运算结果的输出几乎要了Matlab的命
    我算领教了Matlab强大的功能,我原以为Mathematic是不可替代的,现在看来,除了显示方式与计算方式的不同,Matlab始终是完美的。。。
    这些只是初步的尝试,我的解释是:据说MATLAB的符号运算是基于MAPLE核心的,可能在继承符号运算的同时也继承了这些基本的运算能力。这只是可能的解释,不过,这么看MATLAB就更加可爱了,如果某一天MATLAB能够调用MATHEMATICA的函数就更可爱了:)
    是否这种方法能够实现全部的MAPLE的基本运算还有待考证,不过由此也看出了MATLAB的博大,它的开放性!

    如果只需要大致的值,取log10,
    计算出result=log10(1000!)=log10(1)+log10(2)+...log10(1000)
    然后求10^result=10^result的小数部分*10^result的整数部分

    用x^1000的1000阶导数求的

    x=[1:1000];
    prod(x)

    prod

    factorial

    gamma(n+1) = n! = prod(1:n)

  • 相关阅读:
    golang ---cron
    Maven私库安装与配置
    Java8新特性之重复注解(repeating annotations)浅析
    String split
    如何将xml转为python中的字典
    json字符串和dict互转
    为什么空格拷贝到linux 会变成两个
    python之socket编程
    ntpdate设置
    Nginx配置ssl证书
  • 原文地址:https://www.cnblogs.com/xfzhang/p/3317708.html
Copyright © 2011-2022 走看看