微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Matlab中的双和

如何解决Matlab中的双和

我想写一个 Matlab 代码来计算以下内容

\sum_{k=0}^{N-1} \frac{1}{k!} \sum_{i=0}^{k} {k \choose i}(a-1)^{ki } a^k

我的代码是:

N = 3;
a = [3 4];
for k = 0:N-1
    f = 0;
     for i = 0:k
         f = f + nchoosek(k,i).* a.^k .* (a-1).^(k-i);  
     end
     sumoff = sum(f);
     all = (( 1./ (factorial(k))).*sumoff);
end
overall= sum(all);

'all' 变量在 for 循环内部而不是外部时给出不同的值。但我希望它在 k = 0:N-1 时进行计算。我做错了什么?

谢谢。

解决方法

问题是您当前的代码在每次迭代时都会覆盖 all。将其移出循环也不起作用,因为您只会保存上次迭代的结果。

要保存每次迭代的 all,请将 all 定义为向量,然后将每个中间结果分配给该向量:

N = 3;
a = [3 4];

% preallocate a vector for `all`
all = nan(N-1,1);

for k = 0:N-1
    f = 0;
    for i = 0:k
        f = f + nchoosek(k,i) .* a.^k .* (a-1).^(k-i);  
    end
    sumoff = sum(f);
    
    % assign your intermediate result into the `all` vector
    all(k+1) = ((1./(factorial(k))) .* sumoff);
end
overall = sum(all);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。