[Scilab-users] Bernoulli numbers calculation
Samuel Gougeon
sgougeon at free.fr
Wed Dec 29 23:45:50 CET 2021
Hello Lester,
Le 29/12/2021 à 09:00, Lester Anderson a écrit :
> Hello,
>
> A quick query. Have adapted existing Matlab code for Scilan to
> calculate Bernoulli numbers using an explicit formula
> (www.bernoulli.org <http://www.bernoulli.org>).
Not so explicit. Could you please provide the formula, before
implementing it in Scilab language?
The following is a "vectorized" version of your code, likely with the
same mistake:
B=[];
for m = 0:20
Sum = 0;
for k=0:m
v = 0:k;
Sum = Sum + sum(((-1).^v).*nchoosek(k,v).*(v.^m)/(k+1));
end
B(m+1) = Sum;
end
A working implementation based on the recurrent formula
Bm=−1m+1∑k=0m−1(m+1k)Bk
could be:
mMax = 20;
B = zeros(1,mMax);
B(1:2) = [1 -1/2];
for m = 2:2:mMax
B(1,m+1) = -sum(nchoosek(m+1,0:m-1).*B(1,1:m))/(m+1);
end--> B ans = column 1 to 13 1. -0.5 0.1666667 0.
-0.0333333 0. 0.0238095 0. -0.0333333 0. 0.0757576 0.
-0.2531136
column 14 to 21
0. 1.1666667 0. -7.0921569 0. 54.971178 0. -529.12424
To fasten the loop, the call to nchoosek() could be replaced with the 3
last rows of Pascal's triangle.
Regards
Samuel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.scilab.org/pipermail/users/attachments/20211229/c393f433/attachment.htm>
More information about the users
mailing list