为什么我在此函数中计算重心权重时出错?

Why do i get an error for calculating barycentric weights in this function?

我在 Octave/Matlab 中实现了以下计算重心权重的方法:

function omega = bary_gewichte(m)
omega = nan(size(m+1));
for k = 0:m+1
  omega(k) = ((-1).^k) .* (factorial(m))./(factorial(k) .* factorial(m-i)); 
endfor
endfunction

但是我得到错误:

error: factorial: all N must be real non-negative integers

但我想所有的结果都不是对正 m 为负。我怎样才能让这个功能发挥作用?

以下代码有效:

function omega = bary_gewichte(m)
  omega = nan(size(m+1));
  for k = 0:m
    omega(k+1) = ((-1).^k) .* (factorial(m))./(factorial(k) .* factorial(m-k)); 
  endfor
endfunction

注意你写了for k=0:m+1 ...。在最后一次迭代中,我们得到了状态 m-k=-1,但是 factorial(-1) 是未定义的。同样在 Matlab 中,索引从 1 开始。 我不知道你的任务,所以我不知道这是否能解决你的问题。