我在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
我在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
n = 0 : 10; % elements of the series
x = 2; % value of x
s = sum(x .^ n ./ factorial(n)); % sum
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.
@cherry你能告诉我,为什么这给了我不同的结果?函数[输出参数] = my_function(a) 也为什么你把。。和./?对不起,如果我的问题太容易 n =长度(a); x = 2; s = sum(x。^ n。/ factorial(n)); 小号 结束 – user6548945 2014-10-02 03:01:46
@ user6548945'different'与对比的是什么?我不知道你的'a'是什么。我的代码为一个“x”值计算11个项的总和。或者你想为'x'值的向量执行计算吗? – Cheery 2014-10-02 03:02:20
基本上你有n = 0:10。但我只是想知道如何从用户获得n,以便它将从0开始直到用户输入的数字。一切都将是相同的,但n来自用户.... – user6548945 2014-10-02 03:05:36