2つの問題があります。1つはマイナーで、もう1つはメジャーです。マイナーな点は、展開がでは(1+x)^alpha
なくx^alpha
、で記述されているため、i**k
実際にはである必要があります(i-1)**k
。これを行うと、
1.41920471191 1.0
5.234375 1.41421356237
あなたの答えがどれほど不審に近いかを見ることがsqrt(1)
できるsqrt(2)
場所
1.0 1.0
1.41920471191 1.41421356237
これははるかに優れています。残念ながら、残りの用語はまだあまり良くありません:
5.234375 1.73205080757
155.677841187 2.0
2205.0 2.2360679775
17202.2201691 2.44948974278
91687.28125 2.64575131106
376029.066696 2.82842712475
1273853.0 3.0
合計する用語の数を10から100に増やすと、事態はさらに悪化します。
1.0 1.0
1.4143562059 1.41421356237
1.2085299569e+26 1.73205080757
3.68973817323e+43 2.0
9.21065601505e+55 2.2360679775
3.76991761647e+65 2.44948974278
2.67712017747e+73 2.64575131106
1.16004174256e+80 2.82842712475
6.49543428975e+85 3.0
ただし、リンクしたページで説明されているように、これはxの絶対値が1未満の場合にのみ収束することが保証されているため、これは予想されることです。したがって、少数の根を取得するための適切な作業を行うことができます。
>>> i = 0.7
>>> sum(binomical(0.5, k) * (i-1) ** k for k in range(10))
0.8366601005565644
>>> i**0.5
0.8366600265340756
そして、他の数値を処理するために物事を縮小してみることができます。
>>> i0 = 123.0
>>> i = i0/(20**2)
>>> sum(binomical(0.5, k) * (i-1) ** k for k in range(50))
0.5545268253462641
>>> _*20
11.090536506925282
>>> i0**0.5
11.090536506409418
または、テイラー級数を別のポイントで回すなど。
一般的なポイントは、テイラー級数の収束半径がゼロである可能性があることです。-その中で彼らは正しい結果を出します。ウィキペディアのテイラー級数ページには、これをカバーする「近似と収束」に関するセクションがあります。
(PS「二項」に「c」はありません。:^)