2010-12-01 10 views
9

オンラインで見つけることができる二分法はありますか?二分法を使って方程式を解く

例えば、これらの方程式が与えられれば、二分法を使ってそれらをどのように解くことができますか?

scipy.optimize.bisectを使用して
x^3 = 9 
3 * x^3 + x^2 = x + 5 
cos^2x + 6 = x 
+0

で実装されている通話_zeros._bisect、私は私の数値法のコースは、Pythonを使用していた希望。 :/これは実際に自分自身を実装するのに有益なことです。アルゴリズムに関するWikipediaの説明を読んでください。 –

+0

多くの人が既に使っているものを自分で書き込もうとするよりもベストに使います。 [バイナリ検索の実装の75%〜90%は間違っています。](a https://en.wikipedia.org/wiki/Binary_search_algorithm#Implementation_issues) – endolith

答えて

12

import scipy.optimize as optimize 
import numpy as np 

def func(x): 
    return np.cos(x)**2 + 6 - x 

# 0<=cos(x)**2<=1, so the root has to be between x=6 and x=7 
print(optimize.bisect(func, 6, 7)) 
# 6.77609231632 

optimize.bisect C.

+0

aとbの値を取得する方法は?またループの数は? – bbnn

+0

はこの例のようにhttp://math.fullerton.edu/mathews/n2003/BisectionMod.htmlこの方程式(x^3 + 4x^2-10 = 0)を解こうとしており、関数Bisection [1、 2,30]番号1,2および30を取得する方法?それは方程式からですか? – bbnn

+0

@bn: 'bisect'を使うには、' func(a) 'と' func(b) 'が反対の符号を持つように' a'と 'b'を与えなければなりません。 、b] 'func'は連続している必要があるためです。あなたは 'a'と' b'の値を推測しようとするかもしれませんし、分析を少し使っても構いませんし、プログラムでそれをやりたいのであれば、 'a'と' b'を生成する方法反対のサインを持っている。しかし、それは単純なbisectメソッドの範囲を超えています。 – unutbu

関連する問題