Как более эффективно вычислить сумму бинома?

Я должен рассчитать уравнение следующим образом:

гдеk1,k2 дано. Я использую MATLAB для вычисленияP, Я думаю, что у меня есть правильная реализация для вышеуказанного уравнения. Тем не менее, моя реализация настолько медленная. Я думаю, что проблема от биномиального коэффициента. Исходя из уравнения, могу ли я найти эффективный способ ускорить время? Поблагодарить всех.

Заk1=150; k2=150; D=200;, занимает11,6 секунды

function main
warning ('off');
  function test_binom()
      k1=150; k2=150; D=200; P=0;
      for i=0:D-1
          for j=0:i
              if (i-j>k2||j>k1) 
                  continue;
              end
              P=P+nchoosek(k1,j)*nchoosek(k2,i-j)/nchoosek((k1+k2),i);          
          end 
      end
  end
f = @()test_binom(); 
timeit(f)
end

Обновление: для измерения времени я обнаружил, что nchoosek является причиной большого вычислительного времени. Следовательно, я переписываю функцию следующим образом

function re=choose(n, k)
    if (k == 0)
        re=1;
    else
        re=(n * choose(n - 1, k - 1)) / k;
    end
end

Теперь время вычислений сокращается до 0,25 секунды. Есть ли лучший способ?

Ответы на вопрос(3)

Ваш ответ на вопрос