На числовой прямой даны три отрезка: ,
и
. Какова наименьшая длина отрезка
, при котором формула
тождественно истинна, то есть принимает значение 1 при любом значении переменной х?
Решение руками
Первым шагом раскроем импликацию и отрицание:
Для наглядности изобразим известную часть на числовой прямой:
Отсюда видно, что «перекрыты» все области числовой прямой, кроме отрезка . Значит эту область должен «перекрывать» отрезок
. Тогда наименьшая длина отрезка
:
.
Решение программой
def inn(x, A):
return A[0] <= x <= A[1]
def f(x, A):
P = [8, 34]
Q = [4, 16]
K = [33, 54]
return ((inn(x, P) <= inn(x, Q)) or ((not inn(x, A)) <= inn(x, K)))
borders = [0, 0]
minim = 100000
k = 5
for a in range(0, 80 * k):
for b in range(a, 80 * k):
A = [a / k, b / k]
good = True
for x in range(0, 100 * 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)
Программа вывела длину и границы отрезка
, значит нам подходит отрезок
, но из-за выколотой левой и правой границ программа показывает длину немного меньше реальной. При увеличении параметра
можно добиться приближения длины к
.