ChatGPT для математиков: гипотеза, контрпример и проверка

В этой статье

ChatGPT для математиков полезен там, где нужно уточнить утверждение, подготовить поиск контрпримера и разобрать логический вывод. Возьмём гипотезу: для любого целого n ≥ 0 число P(n) = n² + n + 11 простое. Она неверна: уже при n = 10 получаем

P(10) = 100 + 10 + 11 = 121 = 11 × 11.

Число 10 входит в заданную область, а 121 составное. Одного такого случая достаточно, чтобы опровергнуть утверждение «для любого». Разберём, как поставить эту задачу чату, получить проверяемый расчёт и не принять удачную таблицу за доказательство.

Для такого текстового запроса достаточно бесплатного ChatGPT, а Python-код ниже можно запустить на своём компьютере. Если вы уже решили выбрать Plus, сервис оплаты зарубежных сервисов Amber Market помогает оформить месячный ChatGPT Plus на вашем аккаунте через менеджера. Доступ действует 30 дней, заказ можно оплатить через СБП. Перед оформлением на аккаунте должен быть Free без активной подписки; продление доступно после окончания текущей.

Сначала уточните, что именно проверяете

В нашей гипотезе есть две важные части. Область — целые неотрицательные числа: 0, 1, 2 и далее. Квантор — слова «для любого»: утверждение должно выполняться для каждого числа из этой области. Найти несколько подходящих значений и проверить утверждение для всей области — разные задачи.

Готовый запрос можно скопировать целиком:

Рассматривай целые неотрицательные n. Проверь гипотезу: для любого n ≥ 0 число P(n) = n² + n + 11 простое. Подготовь Python-код для поиска первого контрпримера среди n от 0 до 100 включительно. Проверяй простоту числа x делителями от 2 до isqrt(x) включительно. Для найденного случая покажи вычисление P(n), разложение на множители и точный логический вывод. Если контрпример не найдётся, сообщи только результат поиска в этом диапазоне: конечный перебор не доказывает универсальное утверждение.

Такой запрос задаёт помощнику область, цель и вид результата. Это согласуется с рекомендациями OpenAI по составлению запросов: дать конкретную задачу с контекстом, затем при необходимости уточнить её по ответу.

Проведите числовой поиск

Вот короткий Python-код для нашего примера:

from math import isqrt

def is_prime(x):
    return x >= 2 and all(x % d for d in range(2, isqrt(x) + 1))

for n in range(101):
    value = n*n + n + 11
    if not is_prime(value):
        print(n, value)
        break

Функция сначала исключает числа меньше 2. Затем проверяет, что ни один из выбранных делителей не делит x без остатка. Почему достаточно дойти до квадратного корня? У составного числа есть пара множителей: если бы оба были больше √x, их произведение было бы больше x. Значит, хотя бы один нетривиальный делитель не превосходит √x.

Здесь isqrt(x) возвращает целую часть квадратного корня, а range не включает правую границу. Поэтому в range(2, isqrt(x) + 1) нужна прибавленная единица. Именно она позволяет проверить делитель 11 у числа 121.

Результат локального расчёта:

10 121

Код перебирает n по возрастанию и останавливается при первом составном значении. Первые десять значений, для n от 0 до 9, действительно простые: 11, 13, 17, 23, 31, 41, 53, 67, 83, 101. Но уже следующее значение — 121.

Найденный случай легко сверить без программы: подставить n = 10 в формулу и проверить равенство 121 = 11 × 11. Так проверяются обе части вывода: вычисление верно, а контрпример принадлежит нужной области.

Для своей формулы можно попросить чат подготовить похожий перебор. В руководстве как написать и проверить Python-скрипт с ChatGPT разобран этот следующий шаг.

Исправьте вывод, а не только вычисление

Во фразе «первые десять значений простые, поэтому гипотеза доказана» ошибка находится после слова «поэтому». Числа вычислены верно, но проверены лишь десять случаев. Точная замена:

Для n от 0 до 9 получены простые значения. Это проверка конечного набора, а не доказательство утверждения для всех целых n ≥ 0. При n = 10 получаем 121 = 11 × 11, поэтому исходная гипотеза опровергнута.

После контрпримера полезно поставить новую задачу: найти семейство значений, при которых выражение заведомо составное. Область n — целые неотрицательные числа — сохраняем.

Подставим n = 11k, где k — целое неотрицательное число:

P(11k) = 121k² + 11k + 11 = 11(11k² + k + 1).

При k ≥ 1 оба множителя — целые числа больше 1. Значит, для каждого целого k ≥ 1 значение P(11k) составное. Например, k = 1 даёт n = 11 и P(11) = 143 = 11 × 13.

При k = 0 множитель в скобках равен 1, а P(0) = 11 — простое число. Поэтому нулевой случай в семейство составных значений не входит. Это семейство не охватывает все контрпримеры: например, найденное n = 10 не кратно 11. Мы доказали утверждение об одном бесконечном семействе, а не перечислили все составные значения формулы.

Просите показать ключевой переход

Полезный вопрос к ответу чата — не только «всё ли правильно», но и «из какого шага следует вывод». Для этого примера можно написать:

Проверь отдельно вычисление P(10), принадлежность n = 10 заданной области и разложение 121 на множители. Затем объясни, почему этот случай опровергает исходную гипотезу. В разложении P(11k) укажи условие, при котором оба множителя больше 1, и отдельно разбери k = 0.

В публикации OpenAI о математических результатах описаны отдельное оформление доказательств и формализация в Lean. Само появление текста в ChatGPT такой формальной проверкой не является. В нашем примере вывод можно проверить по подстановке, разложению и условиям на переменные.

Если нужно подробнее понять отдельное преобразование в учебной задаче, начните с разбора математического решения с ChatGPT: там цель — восстановить связь между шагами, на которой потерялась мысль.

Источники

Есть следующая задача?Ещё по теме «Математика» →