одиниця 2 / 11

Обчислення та чисельні методи з Python

Прибуток:

  • Можливість покладатися на детермінований вихід, а не на вербальні припущення, завдяки тому, що ШІ переводить фізичні розрахунки в код NumPy/SciPy і запускає сам код
  • Здатність перевіряти надійність числового коду, перевіряючи його за допомогою простої ситуації, відповідь на яку відома, і перевіряючи її збіжність.
  • Можливість фізично забезпечити одиницю та рівень результату шляхом відображення змінних одиниць у коді

Багато задач у фізиці неможливо розв’язати вручну: інтеграл не має аналітичного розв’язку, корінь системи рівнянь не можна знайти в замкнутому вигляді або обчислення потрібно повторювати тисячі разів. Ось тут і вступають у гру чисельні методи: замість точної формули комп’ютер обчислює крок за кроком із приблизною, але контрольованою точністю. У цьому розділі ви дізнаєтеся, як використовувати штучний інтелект (ШІ) як кодовий партнер для обчислювальних фізичних обчислень, як перевірити код, який він створює, і в які пастки вам слід уникати. Стандартними інструментами для фізиків тут будуть мова Python і NumPy (бібліотека для числових масивів і швидкої математики), а також SciPy (бібліотека для наукових обчислень; включає інтеграцію, радикальні пошуки, оптимізацію).

Чому AI + Python, чому не вручну?

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

Основні обчислювальні завдання та роль ШІ

Квест

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

фізична перевірка

певний інтеграл

scipy.integrate.quad

Граничні стани, розмірний аналіз

корінь рівняння

scipy.optimize.brentq

Поставте корінь на місце і перевірте, чи дорівнює він нулю.

Система лінійних рівнянь

numpy.linalg.solve

Повернення рішення в систему

Похідна (числова)

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

Порівняння з аналітичним виведенням

Масовий векторний розрахунок

Масиви NumPy

Контроль одиниць і звання

ШІ дуже добре підказує, який із цих інструментів підходить, і правильний синтаксис (правила написання коду). Але вам вирішувати, який метод має фізичний сенс і точність результату.

Крок за кроком: числове обчислення, яке можна перевірити

1. Уточніть задачу та одиниці. Наприклад: "Обчисліть інтеграл e^(−x²) від 0 до нескінченності; результат має бути √π/2 ≈ 0,8862." Переписування очікуваного результату (якщо такий є) полегшує перевірку.

2. Попросіть AI код, але ви запустите вихід. Скопіюйте блок коду та запустіть його у власному середовищі (Jupyter, Colab, нативний Python).

3. Тест з відомою ситуацією. Спробуйте код із простою ситуацією, на яку ви вже знаєте відповідь. Наприклад, перевірте інтегральний код на прикладі, який ви знаєте вручну, наприклад ∫₀¹ x dx = 0,5. Якщо код дає це правильно, ваша впевненість зростає.

4. Перевірка збіжності. У чисельних методах при збільшенні числа кроків результат повинен наближатися до постійного значення. Якщо не підходить, спосіб не підходить.

5. Перевірте одиницю та ранг. Завжди надавайте числовий результат у фізичній одиниці та порядку.

Порада. Запитуючи код у ШІ, скажіть «також додайте тестовий рядок, який порівнює результат із відомим аналітичним значенням». Таким чином, код одночасно виконує обчислення та перевіряє себе у відомій ситуації. Це робить помилки помітними відразу.

три міні-чохла

Випадок 1 — Невірний усний висновок. Студент попросив ШІ написати інтегральний код, і ШІ сказав, що «цей код дає приблизно 1,77». Студент запустив код: фактичний вихід був 0,886. ШІ припустився помилки в прогнозуванні результату коду; Код був правильний. Урок: довіряйте коду, не довіряйте усній здогадці.

Випадок 2 — Чисельна нестабільність. Дослідник шукав корінь рівняння за допомогою коду пошуку коренів, який написав ШІ. Код повернув корінь, але коли дослідник повернув корінь у рівняння, результат був не нульовим, а дуже великим числом. Проблема полягала в тому, що початковий діапазон не містив кореня; AI припустив відповідний діапазон. Дослідник виправив інтервал за допомогою фізичної інформації та знайшов правильний корінь.

Випадок 3 — Отримано підтвердження. Інженеру потрібен був код, який би чисельно обчислював прогин балки під навантаженням. Код спрацював, але результат показав метри прогину — неможливо для сталевої балки. Інженер перевірив одиниці вимірювання: штучний інтелект припустив, що модуль пружності був у Па замість ГПа, пропустивши коефіцієнт 10⁹. З поправкою на одиницю результат зменшувався до міліметрів і був розумним.

Чотири шаблони, які можна копіювати

1) Числове обчислення з лінією перевірки:

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

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

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

3) Перевірка конвергенції:

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

4) Контроль блоку:

У коді нижче закоментуйте одиницю СІ кожної змінної та перевірте, чи одиниця остаточного результату відповідає очікуваній одиниці (наприклад, метр, джоуль). Якщо є невідповідність, покажіть, у якому рядку вона знаходиться. Код: [тут]

Слабка підказка / Сильна підказка

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

Поширені помилки

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

Підсумовуючи

AI є потужним партнером у перекладі фізичних обчислень у код Python; Але цифри, які він наводить усно, є оцінками, а не фактами. Безпечний робочий процес зрозумілий: визначте проблему за допомогою її одиниць, попросіть штучний інтелект написати код, а ви запустіть вихід, перевірте код за допомогою відомої ситуації, перевірте конвергенцію та одиницю. Детермінованим є код, який виконується; Це не LLM. У наступному розділі ми перенесемо цю числову основу до моделювання фізичних систем, що змінюються в часі.

Аплікаційне завдання

Виберіть фізичне числення, для якого вам відоме аналітичне рішення (наприклад, швидкість вільного падіння об’єкта за певний період часу або простий певний інтеграл). Попросіть ШІ написати код Python із шаблоном 1; запустіть код самостійно. Порівняйте результат із відомим вам аналітичним значенням. Потім спостерігайте, як поводиться результат, змінюючи кількість кроків або параметр. Примітка в 5-6 реченнях: чи збігався вихід коду з усним прогнозом, чи була проблема з одиницею/порядком?

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

  • [ ] Я уточнив проблему та одиницю вимірювання всіх змінних.
  • [ ] Я сам запустив код, написаний ШІ, я не довіряв словесному результату.
  • [ ] Я перевірив код у простій ситуації, на яку знав відповідь.
  • [ ] Я перевірив конвергенцію або чутливість параметрів.
  • [ ] Я фізично вказав одиницю вимірювання та порядок результату.
  • [ ] Я переконався, що бібліотечні функції, якими я користуюся, справжні та оновлені.