-4

このコードを入力するOverflowError: math range errorと、4 行目に が表示されます。どうすれば修正できますか?

x=0
while True:
    x=int(x)+1
    first_root=first_root-((a*(math.pow(first_root, 3)))+(b*(math.pow(first_root, 2))+(c*first_root)+d)/(3*(a*   (math.pow(first_root, 2))))+(2*(b*first_root))+c)
    if x==30:
        break
4

1 に答える 1

0

簡単な答えは、使用している方程式に根がないということです。これは、while ループ内でステートメントを使用しprint first_rootて +-inf に分岐することで確認できます。

ただし、教科書に問題がなく、方程式に根があると仮定すると、括弧が間違った場所にあることはほぼ保証できます。以下は、読みやすくするために不要な括弧をすべて削除して にfirst_root置き換えた正確なコードです。r

r = r - a*pow(r, 3) + b*(pow(r, 2) + c*r + d) / 3*a*pow(r, 2) + 2*b*r + c

あなたがする必要があるのは、これをあなたの本の方程式と比較して、どこで/どこを台無しにしたかを確認することです.

于 2013-06-02T19:08:23.907 に答える