【发布时间】:2011-09-12 12:32:10
【问题描述】:
假设我有一些数字a,我想得到向量[ 1 , a , a^2 , ... , a^N ]。我使用[ 1 , cumprod( a * ones( 1 , N - 1 ) ) ] 代码。最好的(并且可能是有效的)方法是什么?
【问题讨论】:
假设我有一些数字a,我想得到向量[ 1 , a , a^2 , ... , a^N ]。我使用[ 1 , cumprod( a * ones( 1 , N - 1 ) ) ] 代码。最好的(并且可能是有效的)方法是什么?
【问题讨论】:
a.^[0:N] 呢?
【讨论】:
a.^(0:N) 有 O(N^2) 依赖,可能更像 O(NlogN ) 因为我想求幂是用a more efficient algorithm 完成的。 2) 当使用a 的浮点值时,如果两种不同方法的结果不*完全 相等,请不要过于措手不及。由于它们使用两种不同的底层算法,具有不同的数学运算顺序,因此您可能会看到浮点精度顺序上的微小差异。
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
【讨论】: