利用 $(1+x)^{\alpha}$ 的展开式计算一些幂.
$(1+x)^{\alpha}$ 展开成幂级数为
\[
(1+x)^{\alpha}=1+\alpha x+\frac{\alpha(\alpha-1)}{2!}x^2+\cdots+\frac{\alpha(\alpha-1)(\alpha-2)\cdots(\alpha-n+1)}{n!}x^n+\cdots
\]
这里 $x\in(-1,1)$. 在端点 $\pm 1$ 的敛散性与具体的 $\alpha$ 有关.
计算 $10^{0.9181246048}$, 注意上面级数的收敛区间为 $(-1,1)$, 因此下面的计算方法是错误的.
\[
\begin{split}
10^{0.9181246048}&=(1+9)^{0.9181246048}\\
&=1+0.9181246048\times 9+\frac{0.9181246048(0.9181246048-1)}{2!}9^2\\
&\qquad+\frac{0.9181246048(0.9181246048-1)(0.9181246048-2)}{3!}9^3+\cdots
\end{split}
\]
我们需要将 $10^{\alpha}$ 转换为 $(2^{\alpha})^3\cdot(1.25)^{\alpha}$ 这样的形式. 即使是 $2^{\alpha}$, 有时也有很大的误差, 因为上面的级数在端点 $\pm 1$ 处不一定收敛. 因此需要转换为 $(1+x)^{\alpha}$ 的形式, 其中 $x\in(-1,1)$.
下面使用 Sowya 进行计算.
将下面的代码保存到 code/power.sc 中
//a^t =(1+x)^t
//(1+x)^t = 1+t*x+t*(t-1)/(2!)*x^2+...+t*(t-1)*(t-2)*...*(t-n+1)/(n!)*x^n+...
//make sure x is in (-1,1)
fun power(a,t)
{
var n=10;
var x;
x=a-1;
var sum=1;
var coeff, x_pow;
coeff=1;
x_pow=1;
for(var i=0; i {
coeff=coeff*(t-i)/(i+1);
x_pow=x_pow*x;
sum=sum+coeff*x_pow;
}
return sum;
}
启动 Sowya, 并进入到 clox 编程模式,
>> :mode clox
加载 power.sc 文件
> load(code\power.sc)
测试 $2^3$
> print power(2,3);
8>
计算 $2^{3.2}$
> print power(2,3.2);
2243569763|244140625>