为什么我在此函数中计算重心权重时出错?
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 开始。
我不知道你的任务,所以我不知道这是否能解决你的问题。
我在 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 开始。
我不知道你的任务,所以我不知道这是否能解决你的问题。