MATLAB中生成有限几何级数的常用方法
假设我有一些数字MATLAB中生成有限几何级数的常用方法,matlab,series,Matlab,Series,假设我有一些数字a,我想得到向量[1,a,a^2,…,a^N]。我使用[1,cumprod(a*ones(1,N-1))]代码。什么是做这件事的最好的(可能也是最有效的)方法?关于a.^[0:N]?ThibThib的答案绝对正确,但如果a发生在向量上,它就不容易推广。因此,作为一个起点: > a= 2 a = 2 > n= 3 n = 3 > a.^[0: n] ans = 1 2 4 8 现在,您还可以利用内置函数vander(虽然顺序不同,但如果需要
a
,我想得到向量[1,a,a^2,…,a^N]
。我使用[1,cumprod(a*ones(1,N-1))]
代码。什么是做这件事的最好的(可能也是最有效的)方法?关于a.^[0:N]
?ThibThib的答案绝对正确,但如果a
发生在向量上,它就不容易推广。因此,作为一个起点:
> a= 2
a = 2
> n= 3
n = 3
> a.^[0: n]
ans =
1 2 4 8
现在,您还可以利用内置函数vander
(虽然顺序不同,但如果需要,可以很容易地修复),以生成:
> vander(a, n+ 1)
ans =
8 4 2 1
对于向量值a
:
> a= [2; 3; 4];
> vander(a, n+ 1)
ans =
8 4 2 1
27 9 3 1
64 16 4 1
我担心它需要O(N^2)个产品,而cumprod只需要O(N)个产品,这是最紧凑的产品way@UncleAli:尝试分析这两种方法。但是是的,它肯定会慢一些。@Jacob:我的路快了大约两倍。尽管如此,它还是可以接受的,因为可读性大大提高。谢谢。@UncleAli:有几件事需要注意。。。1) 我不希望
a.^(0:N)
具有O(N^2)依赖性,可能更像O(NlogN),因为我想象幂运算是用。2) 当对a
使用浮点值时,如果两种不同方法的结果*不完全相同,不要太措手不及。由于它们使用两种不同的底层算法,具有不同的数学运算顺序,您可能会看到浮点精度顺序上的微小差异。