Error in implemented function
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Nik joung
el 14 de Nov. de 2017
Comentada: Nik joung
el 15 de Nov. de 2017
Hello,
I have the function written above. It was calculated by WolframAlpha and the result is 0.
I've tried to implement the formula in Matlab with the code below:
tmp=0;
for s=0:24
if (48-s >= 24)
bin1 = nchoosek(48-s,24);
else
bin1 = 0;
end
if (47-s >= 24)
bin2 = nchoosek(47-s,24);
else
bin2 = 0;
end
tmp = tmp + (-1)^s * nchoosek(24,s) * (bin1-bin2);
end
But my code outputs (variable tmp) the result -2 instead of 0. I am not seeing, where the mistake is.
I would appreciate, if someone could help me.
0 comentarios
Respuesta aceptada
Michal
el 14 de Nov. de 2017
Editada: Michal
el 14 de Nov. de 2017
The double precision (default numerical values class in Matlab) is not enough for this kind of computation!!! You need to use symbolic math toolbox, to get multi-precision accuracy. Wolfram alpha (with Mathematica engine) using this approach by default.
Just a simple code using matlab symbolic toolbox: tmp = 0 !!!
tmp=sym(0);
syms s
for s=0:24
bin1 = nchoosek(sym(48)-s,sym(24));
bin2 = nchoosek(sym(47)-s,sym(24));
aux = (-1)^s * nchoosek(sym(24),s) * (bin1-bin2);
tmp = tmp + aux;
end
tmp
But you must know, that symbolic computations are significantly slower than numerical computations (double class).
2 comentarios
Más respuestas (0)
Ver también
Categorías
Más información sobre Number Theory en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!