Hello,

A quick query. Have adapted existing Matlab code for Scilan to calculate
Bernoulli numbers using an explicit formula (www.bernoulli.org). The code
works fine for numbers from 0 to 10, but 11 onwards the values are
incorrect:

Not the most efficient code but do need to understand where the errors are
coming in.

clear

function Binomial_coefficient=bcoeff(n,k)
    Binomial_coefficient=factorial(n)/(factorial(k)*factorial(n-k))
endfunction

B=[];
for m=0:20
    sum2=0;
    for k=0:m
        sum1=0;
            for v=0:k
             sum1=sum1+ (((-1)^v)*bcoeff(k,v)*(v^m)/(k+1));
            end
        sum2=sum2+sum1;
    end
B(m+1)=sum2;
end

Output of B(n) for 0 to 20 (left column), right column = expected values;
note B(7) and B(9)  show rounding issues*

   1.
  -0.5
   0.1666667
   0.
  -0.0333333
   0.
   0.0238095
   7.503D-12*  0.0
  -0.0333333
   2.215D-08*  0.0
   0.0757573
   0.0000024  0.0
  -0.2520505  −0.253113553
  -0.0072098  0.0
   1.2467346  +1.166666666
  -12.6875    0.0
  -827.875    −7.092156862
   12752.25   0.0
  -2091400.   +54.97117794
   2.104D+09  0.0
   6.417D+10  −529.1242424

Also, is it possible to print/write values in a more readable form, e.g.:
B(0) = 1
B(1) =  -0.5
...etc
B(20) = −529.1242424

Thanks for any pointers
Lester
_______________________________________________
users mailing list
users@lists.scilab.org
http://lists.scilab.org/mailman/listinfo/users

Reply via email to