Есть код:
def brute_force(f, a, b, step=0.1):
x_min = a
y_min_abs = abs(f(a))
x = a + step
while x < b:
y = abs(f(x))
if y < y_min_abs:
x_min = x
y_min_abs = y
x += step
return x_min
Уравнение: x^3 −x^2 + 30 = 0
Итервал: x приндлежит [-6:0]
Python
Как запустить метод перебора для уравнения
Если уж выбирать такой неэффективный численный метод, то я хотя бы сделала уменьшаемый шаг:
Вводим точность вычислений (например,
ε=1e-14) и получаются одинаковые результаты для обеих программ. А при полном переборе для получения корня с такой точностью шаг должен быть очень мелким и сколько будет работать такая программа - одному Богу известно, а так как бога нет, то никому неизвестно...
def f(x): return x * x * (x - 1) + 30
a, b, h, errmin, ε = -6.0, 0.0, 0.1, 1e303, float(input('ε: '))
while True:
n = (b - a) / h
for i in range(1 + int((b - a) / h)):
x = a + i * h; err = abs(f(x))
if err < errmin: errmin, X = err, x
if errmin < ε: break
else: a, b = X - h, X + h; h /= 10
print(X)
А это для проверки найденного корня с корнем, найденным методом касательных (их, эти два кода, в принципе можно объединить в одну программу), в котором начальное значение х находится посерёдке промежутка [-6;0]: h, d, x, X = 1e-4, 2e-4, -3, [-3]
while True:
x -= f(x) * d / (f(x + h) - f(x - h))
if x in X: print(x); break
else: X.append(x)
Вводим точность вычислений (например,
ε=1e-14) и получаются одинаковые результаты для обеих программ. А при полном переборе для получения корня с такой точностью шаг должен быть очень мелким и сколько будет работать такая программа - одному Богу известно, а так как бога нет, то никому неизвестно...
Похожие вопросы
- Как (новичку по программированию) прописать программу для переборов комбинаций без повторений.
- Паскаль. Решить систему уравнений на языке программирования Паскаль.
- Решите уравнение в натуральных числах Python
- Напишите код по перебору числа на Python.
- Pyhon обычный перебор
- Задача в Python? Помогите решить, не получается! Решить нужно без функций и методов. Только циклы и условные операторы.
- Первый элемент списка — 1 буква 'а', последний — 33 буквы 'я'. Используй метод append().
- Метод исключения в цикле for?
- Помогите составить правильную программу(код) для уравнения в pycharm
- Решите уравнение в Python