五、形式级数的乘积
设有形式幂级数 A(z)=a(0)+A'(z)z, B(z), 则
A(z)B(z) = a(0) B(z)+ A'(z)B(z)z
从 a(0) B(z) 中已经可以得到 A(z)B(z) 的第一项,A'(z)B(z)z 等于把 A'(z)B(z) 往右推了一步,若 A'(z)B(z) 的展开式为 s,则 0:s 是 A'(z)B(z)z 的展开式。于是有如下代码:
- scale_series k s = map (k*) s
- mul_series (a:s1) s2 = add_series (scale_series a s2)
- (0:(mul_series s1 s2))
复制代码
scale_series 用一个常数 k 乘上形式幂级数,用来实现 a(0)B(z)。
检验一下效果:sin^2+cos^2 =1
- *Main> let a = mul_series sin_series sin_series
- *Main> let b = mul_series cos_series cos_series
- *Main> let one = add_series a b
- *Main> take 100 one
- [1%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1,0%1]
复制代码
[ 本帖最后由 win_hate 于 2009-1-21 15:04 编辑 ] |