ОК, так как вы все равно получили спойлеры для домашнего задания, я опубликую ответ, который, как мне кажется, легче понять.
Мультипликативная формула для биномиального коэффициента говорит, что
n над k = произведение i = от 1 до k ((n + 1-i) / i)
(извинитеНельзя написать правильные формулы для SO, смотрите ссылку на Википедию, если это неясно).
Чтобы вычислить логарифм произведения, мы можем вычислить сумму логарифмов:
log (product (x i )) = сумма (log (x i ))
Таким образом, мы можем вычислить значения (n+1-i)/i
для всех i
, возьмите логарифм, а затем суммируйте первые k
значения, чтобы получить результат для данного k
.
Этот код выполняет то, что с помощью cumsum
, совокупныйсумма.Его вывод в элементе массива k
является суммой по всем элементам входного массива от 1 до k
.
n = 1000;
i = 1:1000;
f = (n+1-i)./i;
f = cumsum(log(f));
plot(i,f)
Также обратите внимание на ./
, поэлементное деление./
выполняет матричное деление в MATLAB, и здесь не то, что вам нужно.