На числовой прямой даны два отрезка: ,
. Найдите наименьшую возможную длину отрезка
, при котором формула
тождественно истинна, то есть принимает значение 1 при любых x.
Решение руками
Первым шагом раскроем импликацию и отрицание:
Дальше инвертируем известную часть, чтобы определить при каких исходное выражение будет ложно:
Отсюда видно, что это выражение истинно (а исходное, соответственно, ложно), когда не принадлижит отрезку
и принадлежит отрезку
. На числовой прямой это область
Тогда, чтобы исходное выражение всегда было истино необходимо «перекрыть» эту облость отрезком
. Отсюда минимальный отрезок
.
Длина этого отрезка: . Это и будет ответом.
Решение программой
def inn(x, A):
return A[0] <= x <= A[1]
def f(x, A):
P = [23, 47]
Q = [13, 108]
return (inn(x, Q) <= (((not inn(x, P)) and inn(x, Q)) <= inn(x, A)))
borders = [0, 0]
minim = 10000000
k = 5
for a in range(0, 120 * k):
for b in range(a, 120 * k):
A = [a / k, b / k]
good = True
for x in range(0, 130 * k):
if not f(x/k, A):
good = False
break
if good:
if A[1] - A[0] <= minim:
minim = A[1] - A[0]
borders = A.copy()
print(minim)
print(borders)
Программа вывела длину и границы отрезка
, значит нам подходит отрезок
.