それがあなたの3次ソルバーに問題がない場合(phkahlerが示唆したように)、次の行のint除算の場合であると確信しています:
f = float(c - (3*b**2 / 8))
g = float(d + (b**3/ 8) - (b*c / 2))
h = e - (3*b**4 / 256) + (b**2 * c / 16) - (b*d / 4)
3.0 より前のバージョンの Python を使用していて、 から除算をインポートしていない場合__future__
、ここで大きな問題が発生する可能性があります。たとえば、b = 3(3*b**2/8)
の場合、正しい float 除算値の 3.375 ではなく、int 除算によって 3 に等しくなります。おそらく、これを修正する最善の方法は、計算を開始する前に a、b、c、d、および e を float に変換することです。f と g のすべての計算の後の float への変換は、この修正を行った後は本当に不要であり、現在はあまり役に立ちません。
この分割問題とその歴史の詳細については、次を参照してください。
http://www.python.org/dev/peps/pep-0238/
http://python-history.blogspot.com/2009/03/problem-with-integer-division.html