Напишите программу на языке Python. Уровень С. Необходимо создать программу, которая будет работать автоматически

  • 54
Напишите программу на языке Python. Уровень С. Необходимо создать программу, которая будет работать автоматически. Достаточно ввести функцию в программу и запустить ее. Программа будет находить все интервалы, на которых находятся корни, затем уточнять решения. После нахождения интервала программа будет выводить его на экран и, используя метод деления отрезка пополам, будет уточнять решение и определять необходимое количество шагов для этого. Пример: Заданный интервал [-2;-1,5] Решение: -1.7201 Количество шагов: 8 Заданный интервал [1,5;2] Решение: 1.7201 Количество шагов
Nadezhda
60
Конечно! Вот вам программа на языке Python, реализующая данную задачу:

python
import math

def find_roots(f, a, b, epsilon):
intervals = find_intervals(f, a, b, epsilon)

for interval in intervals:
x, steps = bisection(f, interval[0], interval[1], epsilon)
print(f"Заданный интервал [{interval[0]};{interval[1]}]")
print(f"Решение: {x:.4f}")
print(f"Количество шагов: {steps}\n")

def f(x):
return x3 - 2*x2 - 11*x +12

def find_intervals(f, a, b, epsilon):
intervals = []

while a < b:
if f(a) * f(a + epsilon) <= 0:
intervals.append((a, a+epsilon))
a += epsilon

return intervals

def bisection(f, a, b, epsilon):
steps = 0

while abs(a - b) > epsilon:
x = (a + b) / 2

if f(x) * f(a) <= 0:
b = x
else:
a = x

steps += 1

return (a + b) / 2, steps

find_roots(f, -2, 2, 0.001)


Данная программа создана для нахождения корней уравнения на заданном интервале с использованием метода деления отрезка пополам.

В функции `find_roots` мы сначала используем функцию `find_intervals`, которая находит все интервалы, на которых находятся корни уравнения. Затем мы проходимся по каждому интервалу и используем функцию `bisection`, которая уточняет решение методом деления отрезка пополам.

Функция `bisection` принимает функцию `f`, начальные значения `a` и `b` интервала и погрешность `epsilon`. Она выполняет итеративный процесс уточнения решения, пока разница между `a` и `b` больше `epsilon`. Затем она возвращает найденное решение и количество шагов, необходимых для этого.

В данном примере мы ищем корни уравнения `x^3 - 2*x^2 - 11*x + 12` на интервале от -2 до 2 с точностью 0.001. Каждый найденный интервал и соответствующее решение выводятся на экран.

Вы можете изменить функцию `f`, начальные значения `a` и `b` и точность `epsilon` в соответствии с вашими требованиями.