2010-12-01 7 views
9

Existe-t-il une méthode de bissection que je peux trouver en ligne, spécifiquement pour python? Par exemple, étant donné ces équations, comment puis-je les résoudre en utilisant la méthode de bissection?Résoudre l'équation en utilisant la méthode de la bissection

x^3 = 9 
3 * x^3 + x^2 = x + 5 
cos^2x + 6 = x 
+0

Je souhaite que mon cours de méthodes numériques avaient utilisé Python. :/Ceci est vraiment instructif pour vous implémenter; il suffit de lire la description de Wikipedia pour l'algorithme. –

+0

Il est préférable d'utiliser quelque chose qui a déjà été utilisé par de nombreuses personnes plutôt que d'essayer de l'écrire vous-même. [75% -90% des implémentations de recherche binaire sont incorrectes.] (Https://en.wikipedia.org/wiki/Binary_search_algorithm#Implementation_issues) – endolith

Répondre

12

En utilisant scipy.optimize.bisect:

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 appels _zeros._bisect, qui est mis en œuvre en C.

+0

Comment obtenir les valeurs a et b? et aussi le nombre de boucle? – bbnn

+0

comme dans l'exemple http://math.fullerton.edu/mathews/n2003/BisectionMod.html il essaie de résoudre cette équation (x^3 + 4x^2-10 = 0) et il utilise la fonction Bisection [1, 2,30] comment obtenir le numéro 1 2 et 30? est-ce de l'équation? – bbnn

+0

@bn: Pour utiliser 'bisect', vous devez fournir' a' et 'b' tels que' func (a) 'et' func (b) 'aient des signes opposés, garantissant ainsi qu'il y a une racine dans' [a , b] 'puisque' func' doit être continu. Vous pouvez essayer de deviner les valeurs de 'a' et' b', utiliser un peu d'analyse, ou si vous voulez le faire par programmation, vous pouvez concevoir une méthode de génération de candidats 'a' et' b' jusqu'à ce que vous trouviez deux qui ont des signes opposés. Cependant, tout cela dépasse la portée de la méthode simple "bisect". – unutbu

Questions connexes