FACTORIALRATIO
FACTORIALRATIO - ratio of factorial numbers
FR = FACTORIALRATIO (A,B) calculates the ratio between products of
factorials specified by A and B. A and B are lists of positive
integers, with N and M elements, respectively. The number of values in
each list may differ. The factorial ratio is based on the following formula:
(A1! * A2! * ... * AN!)
FR = -------------------------
(B1! * B2! * ... * BM!)
However, an approach is taken that increases the accuracy when A or B
contain larger values, as mentioned in the help of FACTORIAL.
Examples:
f1 = factorialratio([10 8 6],[9 6 5]) ;
f2 = 10 * 8 * 7 * 6 ; % by hand
f3 = (factorial(10) * factorial(8) * factorial(6)) ./ ...
(factorial(9) * factorial(6) * factorial(5)) ;
disp('f1, f2, f3 = ') ; disp([f1 f2 f3])
% Also for larger values FACTORIALRATIO works correctly
f1 = factorialratio(150,143) ;
f2 = prod(144:150) ; % by hand
% where FACTORIAL lacks precision
f3 = factorial(150) ./ factorial(143) ;
disp('f1, f2, f3 = ') ; disp([f1 f2 f3])
disp(' Differences with f2 = ') ; disp([f1-f2 f2-f2 f3-f2])
% and even for extreme numbers things turn out well
f1 = factorialratio(30000,29998) ;
f2 = (30000 * 29999) ; % by hand
% whereas calls to FACTORIAL fail miserably ...
f3 = factorial(30000) ./ factorial(29998) ;
disp('f1, f2, f3 = ') ; disp([f1 f2 f3])
Note that, for instance, factorialratio(200,1) also fails, of course.
For such occasions other engines have to be used.
See also prod, factorial, gammaln
Cite As
Jos (10584) (2024). FACTORIALRATIO (https://www.mathworks.com/matlabcentral/fileexchange/23018-factorialratio), MATLAB Central File Exchange. Retrieved .
MATLAB Release Compatibility
Platform Compatibility
Windows macOS LinuxCategories
Tags
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!Discover Live Editor
Create scripts with code, output, and formatted text in a single executable document.