この方程式 ( x^3 + x -1 = 0 ) を固定小数点反復を使用して解くプログラムを作成するように依頼されました。
固定小数点反復のアルゴリズムは何ですか? Python の固定小数点反復コード サンプルはありますか? (モジュールの関数ではなく、アルゴリズムを含むコード)
ありがとうございました
この方程式 ( x^3 + x -1 = 0 ) を固定小数点反復を使用して解くプログラムを作成するように依頼されました。
固定小数点反復のアルゴリズムは何ですか? Python の固定小数点反復コード サンプルはありますか? (モジュールの関数ではなく、アルゴリズムを含むコード)
ありがとうございました
まず、これを読んでください: Fixed point iteration:Applications
私はニュートン法を選びました。
ジェネレーター関数について学びたい場合は、ジェネレーター関数を定義し、次のようにジェネレーター オブジェクトをインスタンス化できます。
def newtons_method(n):
n = float(n) #Force float arithmetic
nPlusOne = n - (pow(n,3) + n - 1)/(3*pow(n,2) +1)
while 1:
yield nPlusOne
n = nPlusOne
nPlusOne = n - (pow(n,3) + n - 1)/(3*pow(n,2) +1)
approxAnswer = newtons_method(1.0) #1.0 can be any initial guess...
次に、以下を呼び出すことで、より適切な近似値を連続して得ることができます。
approxAnswer.next()
参照:ジェネレーターの詳細については、 PEP 255またはクラス (ジェネレーター) - Python v2.7
例えば
approx1 = approxAnswer.next()
approx2 = approxAnswer.next()
または、ループを使用することをお勧めします。
あなたの近似がいつ十分であるかを決定することに関しては... ;)
擬似コードはここにあります。そこから理解できるはずです。