【问题标题】:Compute sum of series计算系列之和
【发布时间】:2017-04-18 21:17:34
【问题描述】:

我需要计算这个系列的总和

我需要这样的输出:

If n = 3;

x = function_name(n)

我需要x = 11.

If n = 5;

x = function_name(n)

我需要x = 45

我相信我需要一个 for 循环来迭代;但我发现很难迭代增量值本身。

【问题讨论】:

    标签: matlab for-loop iteration vectorization series


    【解决方案1】:
    function Total = abc(n)
    
    nth_term=1;
    Total = 1 ;   
    
    
        for  d = 2:2:(2*(n-1))
             nth_term = nth_term + d;       
             Total =Total + nth_term;    
    
        end
    
    end
    

    【讨论】:

    • 这也有效;无论如何感谢你们两个,尤其是@netizen
    【解决方案2】:
    inc=2;
    sum=1;
    next=1;
    
    n=input('what is n?\n');
    
    for i=2:n
        next=next+inc;
        sum=sum+next;
        inc=inc+2;
    end
    
    disp('sum is ');
    disp(sum);
    

    【讨论】:

    • 我也想到了另一种方法。
    【解决方案3】:

    我猜你想要sumcumsum 的差异d 的数字:

    d = 2;
    n = 5;
    
    s  =  d:d:d*(n-1)
    cs  = cumsum( [1 s] )
    scs = sum(cs)
    
    %// or as anonymous function
    
    scsh = @(n,d) sum( cumsum( [1 d:d:d*(n-1)] ) )
    

    scs =
    
        45
    
    scsh(5,2) =
    
        45
    

    不需要循环!

    【讨论】:

    • 我需要图表第 2 列中数字的总和(仅),即系列
    • 如果 n = 5;我需要 1 + 3 + 7 + 13 + 21 = 45; Matlab 函数只能接受一个输入;那是n。
    • 如果我提供输入为 n= 3,那么 Matlab 需要获取我 11 作为输出;我需要在函数内部开发系列,然后生成总和
    • 图中最后一列(序列中数字的差异)仅用于编码目的
    • 非常感谢;我认为它有效;但是有没有可以使用 for-loop 提供的解决方案,并且可能也可以使用 while.loop。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-27
    • 2017-04-18
    • 2018-09-10
    • 2019-05-12
    • 1970-01-01
    相关资源
    最近更新 更多