如何在 MATLAB 中执行涉及大量数字的计算。举一个简单的例子,任意精度计算器将显示 ((1/120)^132)*(370!)/(260!) 约为 1.56,但 MATLAB 无法执行此类计算(power(120,-132)*factorial(370)/factorial(260)
= NaN
).
我也尝试过以下方法,但不起作用:
syms a b c d;
a=120; b=-132; c=370; d=260;
f=sym('power(a,b)*gamma(c+1)/gamma(d+1)')
double(f); % produces error that instructs use of `vpa`
vpa(f) % produces (gamma(c + 1.0)*power(a, b))/gamma(d + 1.0)
如果你只想计算一些大数的阶乘,你可以使用Java任意精度工具,如下所示:
result = java.math.BigDecimal(1);
for ix = 1:300
result = result.multiply(java.math.BigDecimal(ix));
end
disp(result)
306057512216440636035370461297268629388588804173576999416776741259476533176716867465515291422477573349939147888701726368864263907759003154226842927906974559841225476930271954604008012215776252176854255965356903506788725264321896264299365204576448830388909753943489625436053225980776521270822437639449120128678675368305712293681943649956460498166450227716500185176546469340112226034729724066333258583506870150169794168850353752137554910289126407157154830282284937952636580145235233156936482233436799254594095276820608062232812387383880817049600000000000000000000000000000000000000000000000000000000000000000000000000
价值result
在本例中是一个java对象。您可以在此处查看可用的方法:http://docs.oracle.com/javase/6/docs/api/java/math/BigDecimal.html http://docs.oracle.com/javase/6/docs/api/java/math/BigDecimal.html
我仍然不确定我是否会信任这种方法(1e6)!
尽管。你必须尝试一下才能看到。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)