fgh1124
2009-06-02, 16:05
俺是一个绝对的菜鸟,最近写了一个计算bayes 释然比的函数,如下,可是当数据大到一定程度就报错:
function [z] = bayes(n,k,m,l)
syms r1 r2;
a = int (nchoosek(n,k)*r1^k*(1-r1)^(n-k), 0,1);
b = int (nchoosek(m,l)*r2^l*(1-r2)^(m-l), 0,1);
y = int(int (1/a*1/b*nchoosek(n,k)*r1^k*(1-r1)^(n-k)*nchoosek(m,l)*r2^l*(1-r2)^(m-l),r2,0,r1),r1,0,1);
z = double (log10(y/(1-y)));
运行:bayes(1823,2,200,4)
显示如下错误:
>> bayes(1823,3,200,4)
??? Error using ==> sym.maple
Error, (in series/power) integer too large in context
Error in ==> sym.int at 51
r = reshape(maple('map','int',f(:),[x.s '=(' a.s ')..(' b.s ')']),size(f));
Error in ==> bayes at 5
y = int(int (1/a*1/b*nchoosek(n,k)*r1^k*(1-r1)^(n-k)*nchoosek(m,l)*r2^l*(1-r2)^(m-l),r2,0,r1),r1,0,1);
请问如果运算这种大数的时候怎么改正
function [z] = bayes(n,k,m,l)
syms r1 r2;
a = int (nchoosek(n,k)*r1^k*(1-r1)^(n-k), 0,1);
b = int (nchoosek(m,l)*r2^l*(1-r2)^(m-l), 0,1);
y = int(int (1/a*1/b*nchoosek(n,k)*r1^k*(1-r1)^(n-k)*nchoosek(m,l)*r2^l*(1-r2)^(m-l),r2,0,r1),r1,0,1);
z = double (log10(y/(1-y)));
运行:bayes(1823,2,200,4)
显示如下错误:
>> bayes(1823,3,200,4)
??? Error using ==> sym.maple
Error, (in series/power) integer too large in context
Error in ==> sym.int at 51
r = reshape(maple('map','int',f(:),[x.s '=(' a.s ')..(' b.s ')']),size(f));
Error in ==> bayes at 5
y = int(int (1/a*1/b*nchoosek(n,k)*r1^k*(1-r1)^(n-k)*nchoosek(m,l)*r2^l*(1-r2)^(m-l),r2,0,r1),r1,0,1);
请问如果运算这种大数的时候怎么改正