Единица 2 / 11

Расчеты и численные методы с Python

Прибыль:

  • Возможность полагаться на детерминированные выходные данные, а не на словесные догадки, поскольку ИИ переводит физические вычисления в код NumPy/SciPy и запускает сам код.
  • Способность проверить надежность числового кода, проверив его на простой ситуации, ответ на которую известен, и проверив ее сходимость.
  • Возможность физически обеспечить единицу и уровень результата путем отражения переменных единиц в коде.

Многие задачи в физике невозможно решить вручную: интеграл не имеет аналитического решения, корень системы уравнений невозможно найти в замкнутом виде, расчет приходится повторять тысячи раз. Здесь в игру вступают численные методы: вместо точной формулы компьютер производит вычисления шаг за шагом с приблизительной, но контролируемой точностью. В этом модуле вы узнаете, как использовать искусственный интеллект (ИИ) в качестве партнера по коду для расчетов по вычислительной физике, как проверять создаваемый им код и в какие ловушки следует избегать. Стандартными инструментами физика здесь будут язык Python и NumPy (библиотека для числовых массивов и быстрой математики), а также SciPy (библиотека для научных вычислений; включает интеграцию, радикальный поиск, оптимизацию).

Почему AI + Python, а почему не вручную?

Выполнение численных расчетов вручную является медленным и чревато ошибками. ИИ может перевести вашу физическую конструкцию в работающий код Python за несколько секунд. Но золотое правило здесь такое: ИИ пишет код, вы запускаете код и сверяете результат с физикой. ИИ, говорящий «этот код дает это», является предсказанием; На самом деле запуск кода и просмотр результатов — это детерминированный факт. LLM может «вычислить» результат кода, который он написал, в своей голове и назвать неправильное число; тогда как при запуске того же кода он дает правильный результат. Так что никогда не доверяйте численному результату, который дает ИИ устно — запускайте код.

Основные вычислительные задачи и роль ИИ

Квест

Метод/инструмент

физическая проверка

определенный интеграл

scipy.integrate.quad

Предельные состояния, размерный анализ

корень уравнения

scipy.optimize.brentq

Ставим рут на место и проверяем, равен ли он нулю.

Система линейных уравнений

numpy.linalg.solve

Возвращаем решение в систему

Производная (числовая)

Центральная разница или numpy.gradient

Сравнение с аналитическим выводом

Расчет объемного вектора

Массивы NumPy

Контроль юнитов и рангов

ИИ очень хорошо подсказывает, какой из этих инструментов подходит, и корректирует синтаксис (правила написания кода). Но вам решать, какой метод имеет физический смысл и точность результата.

Шаг за шагом: проверяемый численный расчет

1. Уточнить задачу и агрегаты. Например: «Вычислите интеграл e^(−x²) от 0 до бесконечности; результат должен быть √π/2 ≈ 0,8862». Перезапись ожидаемого результата (если он есть) упрощает проверку.

2. Запрашиваете у ИИ код, но запускаете вывод. Скопируйте блок кода и запустите его в своей среде (Jupyter, Colab, собственный Python).

3. Тест на известной ситуации. Попробуйте код на простой ситуации, ответ на которую вы уже знаете. Например, протестируйте интегральный код на знакомом вам примере, например ∫₀¹ x dx = 0,5. Если код дает это правильно, ваша уверенность возрастает.

4. Проверьте сходимость. В численных методах при увеличении количества шагов результат должен приближаться к постоянному значению. Если не подходит, метод не подходит.

5. Проверьте подразделение и звание. Всегда указывайте численный результат в физических единицах и порядке.

Совет: при запросе кода у ИИ скажите «также включите тестовую строку, которая сравнивает результат с известным аналитическим значением». Таким образом, код одновременно выполняет расчет и тестирует себя в известной ситуации. Это делает ошибки сразу видимыми.

три мини-кейса

Случай 1 — Неверное устное заключение. Студент попросил ИИ написать интегральный код, и ИИ сказал: «Этот код дает около 1,77». Студент запустил код: фактический результат составил 0,886. ИИ допустил ошибку при прогнозировании вывода кода; Код был правильным. Урок: доверяйте коду, не доверяйте словесным догадкам.

Случай 2 — Численная нестабильность. Исследователь искал корень уравнения с помощью кода поиска корня, написанного ИИ. Код вернул корень, но когда исследователь вернул корень в уравнение, результатом стал не ноль, а очень большое число. Проблема заключалась в том, что начальный диапазон не содержал корня; ИИ предположил соответствующий диапазон. Исследователь скорректировал интервал с помощью физической информации и нашел правильный корень.

Случай 3 — Получено подтверждение. Инженеру нужен был код, который численно рассчитывал прогиб балки под нагрузкой. Код сработал, но результат показал прогиб в метрах, что невозможно для стальной балки. Инженер проверил единицы измерения: ИИ притворился, что у него модуль упругости в Па вместо ГПа, упустив коэффициент 10⁹. С единичной поправкой результат уменьшился до миллиметров и оказался приемлемым.

Четыре копируемых шаблона

1) Числовой расчет со строкой проверки:

Напишите код Python (NumPy/SciPy), который выполняет следующие физические вычисления: [проблема]. Объявите все переменные в единицах СИ и укажите единицу измерения в строке комментария. Добавьте контрольную строку (утвердить или распечатать) в конце кода, которая сравнивает результат с известным аналитическим/простым значением. Я запущу код; вы не угадываете результат, просто пишете код и ожидаемый ранг.

2) Консультация по выбору метода:

Я хочу решить следующую задачу численно: [проблема]. Какая функция SciPy/NumPy подходит и ПОЧЕМУ? Предложите 2 альтернативных метода, запишите плюсы и минусы каждого с точки зрения точности и стабильности. Укажите, какой из них следует отдать предпочтение в какой физической ситуации.

3) Проверка сходимости:

Напишите код Python, который показывает, как сходится результат при увеличении количества шагов следующего числового расчета (например, N = 10, 100, 1000). Распечатайте результаты в таблице. Если сходимости нет, объясните физическую/числовую причину этого в одном предложении. Код: [здесь]

4) Управление агрегатом:

В приведенном ниже коде закомментируйте единицу СИ каждой переменной и проверьте, соответствует ли единица конечного результата ожидаемой единице (например, метру, джоулю). Если есть несоответствие, покажите, в какой строке оно находится. Код: [здесь]

Слабая подсказка / Сильная подсказка

Слабое: «Назовите результат этого интеграла: ∫₀^∞ x²·e^(−x) dx»
Результат: ИИ выплевывает в голове число (может быть, правильное, а может и неправильное); ничего исполняемого, ничего проверяемого.
Стронг: «Напишите код Python, который вычисляет интеграл ∫₀^∞ x²·e^(−x) dx с помощью scipy.integrate.quad. Добавьте строку утверждения, которая сравнивает результат с аналитическим значением этого интеграла, 2! = 2. Я запущу код».
Результат: Исполняемый код, встроенная проверка (сравнение с аналитическим значением) и надежный результат.

Распространенные ошибки

  • Опираясь на словесный численный результат ИИ. LLM может неправильно предсказать вывод кода в голове. Всегда запускайте код.
  • Не тестирование с известной ситуацией. Код, который не тестируется на простом примере, ответ на который вы знаете, может содержать скрытые ошибки.
  • Не проверяет сходимость. Придерживаясь подсчета одного шага, неясно, является ли результат численно надежным.
  • Не отражает единицы измерения в коде. Отсутствие комментариев к блоку переменных приводит к молчаливым ошибкам 10ⁿ.
  • Игнорирование версии/предположений библиотеки. Иногда ИИ может выдавать несуществующее имя функции или устаревший синтаксис; Это заметно при запуске.
Внимание: прежде чем помещать числовой результат в публикацию, задание или проект, проверьте код на независимом известном случае и предоставьте результат в единицах/порядках. Даже работающий код может рассчитывать неправильную физику; Тот факт, что код работает, не означает, что физика верна.

В итоге

ИИ — мощный партнер в переводе физических расчетов в код Python; Но цифры, которые он приводит устно, — это оценки, а не факты. Безопасный рабочий процесс ясен: определите проблему с ее единицами, попросите ИИ написать код, а вы запустите вывод, протестируйте код в известной ситуации, проверьте сходимость и единицу измерения. Детерминистическим является код, который выполняется; Это не LLM. В следующем разделе мы перенесем эту численную основу на моделирование изменяющихся во времени физических систем.

Задача приложения

Выберите физический расчет, аналитическое решение которого вам известно (например, скорость свободно падающего объекта за определенный период времени или простой определенный интеграл). Попросите ИИ написать код Python с шаблоном 1; запустите код самостоятельно. Сравните результат с известным вам аналитическим значением. Затем понаблюдайте, как поведет себя результат, изменив количество шагов или параметр. Обратите внимание в 5–6 предложениях: соответствовали ли выходные данные кода устному предсказанию, была ли проблема с единицей/заказом?

контрольный список

  • [ ] Я уточнил проблему и единицу измерения всех переменных.
  • [ ] Код, написанный ИИ, я запускал сам, устному результату не доверял.
  • [ ] Я протестировал код в простой ситуации, на которую знал ответ.
  • [ ] Я проверил сходимость или чувствительность параметра.
  • [ ] Я физически указал единицу измерения и порядок результата.
  • [ ] Я убедился, что используемые мной библиотечные функции настоящие и актуальные.