Решение уравнения методом деления пополам - PullRequest
9 голосов
/ 01 декабря 2010

Есть ли способ деления пополам, который я могу найти онлайн, специально для python?

Например, учитывая эти уравнения, как я могу решить их, используя метод деления пополам?

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

1 Ответ

13 голосов
/ 01 декабря 2010

Использование 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 вызывает _zeros._bisect, что реализовано в C.

...