2014-10-02 58 views
0

我在Matlab中很新。我只是尝试实现系列1 + x + x^2/2!+ x^3/3!.....的和。但我无法找到如何去做。到目前为止,我只是数字的总和。请帮助。MATLAB sum系列函数

for ii = 1:length(a) 
    sum_a = sum_a + a(ii) 
    sum_a 



end 

回答

1
n = 0 : 10; % elements of the series 
x = 2; % value of x 
s = sum(x .^ n ./ factorial(n)); % sum 
+0

@cherry你能告诉我,为什么这给了我不同的结果?函数[输出参数] = my_function(a) 也为什么你把。。和./?对不起,如果我的问题太容易 n =长度(a); x = 2; s = sum(x。^ n。/ factorial(n)); 小号 结束 – user6548945 2014-10-02 03:01:46

+0

@ user6548945'different'与对比的是什么?我不知道你的'a'是什么。我的代码为一个“x”值计算11个项的总和。或者你想为'x'值的向量执行计算吗? – Cheery 2014-10-02 03:02:20

+0

基本上你有n = 0:10。但我只是想知道如何从用户获得n,以便它将从0开始直到用户输入的数字。一切都将是相同的,但n来自用户.... – user6548945 2014-10-02 03:05:36

0

你的答案的第二部分是:

n = 0:input('variable?') 
+0

是........ ............ – user6548945 2014-10-02 03:27:09

0

Cheery's approach是当一系列的项数少完全有效。对于大数值,更快的方法如下。这是更有效,因为它避免了重复乘法:

m = 10; 
x = 2; 
result = 1+sum(cumprod(x./[1:m])); 

实例运行时间m = 1000; x = 1;

tic 
for k = 1:1e4 
    result = 1+sum(cumprod(x./[1:m])); 
end 
toc 

tic 
for k = 1:1e4 
    result = sum(x.^(0:m)./factorial(0:m)); 
end 
toc 

Elapsed time is 1.572464 seconds. 
Elapsed time is 2.999566 seconds.