одиниця 10 / 11

Автоматизація інженерних розрахунків за допомогою Python

Прибуток:

  • Можливість автоматизувати інженерні розрахунки, керування агрегатами та обробку даних за допомогою коду Python на основі ШІ
  • Можливість перевірки коду штучного інтелекту за допомогою перевірки модулів, перевірки відомих результатів і граничних випадків
  • Здатність отримати звичку створювати повторювані, відстежувані та контрольовані версії облікові документи

У машинобудуванні один і той самий розрахунок виконується знову і знову: напруги групи деталей, потужність насоса для діапазону робочих точок, таблиці властивостей при різних температурах. Виконання цього вручну повільне та може призвести до помилок. Python (легка для вивчення мова програмування з багатими бібліотеками для проектування) автоматизує ці ітерації; Це робить обліковий запис повторюваним, відстежуваним і керованим версією. Штучний інтелект (AI) Python неймовірно швидкий у створенні коду: перетворює формулу на функцію, додає керування елементами, читає дані, будує графіки. Але тут існує небезпечна помилка: те, що код працює без помилок, не означає, що він обчислює правильно. ШІ-код може мовчки повертати неправильні результати через неправильне перетворення одиниць, неправильну формулу або в крайніх випадках, і програма продовжить працювати без будь-яких помилок. Ось чому кожен інженерний код, створений за допомогою ШІ; Тестові вхідні дані з відомими результатами є ненадійними без перевірки за допомогою перевірки одиниці (розміру) та випробувань крайніх випадків. У цьому розділі ви дізнаєтесь, як безпечно налаштувати автоматизацію облікового запису Python за допомогою ШІ.

Чому обліковий запис Code? Простежуваність і відтворюваність

Розрахунок вручну є одноразовим; Коли вхід змінюється, це робиться з нуля, а проміжні кроки втрачаються. Обчислення, виконане в коді, схоже на документ: вхідні дані, формули та виходи чітко записані; ви змінюєте вхід і отримуєте новий результат протягом декількох секунд; За допомогою керування версіями (наприклад, git) можна відстежувати «що я обчислив, з яким значенням на яку дату». Це неоціненне з точки зору контролю та підзвітності. Але ця сила залежить від правильності коду; Неправильний код дає неправильний результат, також відтворюваний і швидкий.

Порада: напишіть тест для кожної обчислювальної функції з відомим істинним результатом поруч із ним (assert у Python). Наприклад, ваша функція напруги повинна давати 28,1 МПа у відомому зразку. Цей тест негайно попередить вас, якщо ви щось порушите, коли зміните код у майбутньому. Інженерний код, який не перевірено, є неперевіреним обліковим записом.

Керування томами: найпоширеніше джерело помилок

У технічному коді більшість помилок походить від одиниць: Н з кН, м з мм, Па з МПа, які можна сплутати з коефіцієнтом 1000 або 1 000 000. Є два захисти. По-перше, це дисципліна: вибір однієї системи одиниць із самого початку (наприклад, Н, мм, МПа) і перетворення всіх вхідних даних до неї та додавання одиниць до назв змінних (length_mm, force_N). По-друге, це інструмент: бібліотека, як-от pint, переносить одиниці в код і виявляє непослідовну операцію як помилку.

Підхід

Як це працює

Перевага

Дисципліна іменування

наприклад force_N, length_mm

Просто, без залежностей

єдина одинична система

Усе переведено в Н-мм-МПа

Простота, швидкість

пінтова бібліотека

Переміщує одиницю за змінною

Автоматично виявляє невідповідність

Тест з відомим результатом

посилання з твердженням

Виявляє помилку формули/одиниці

Застереження: перетворення одиниць може бути відсутнім або неправильним у створеному штучним інтелектом коді, і код усе одно «працює». Наприклад, якщо діаметр дорівнює мм, а площа очікується дорівнює м², результат буде відхилятися в 1 000 000 разів, але програма не видасть помилку. Перед виконанням коду закоментуйте одиниці введення та виведення; потім надайте результат відомим прикладом.

Крок за кроком: Код облікового запису, який можна перевірити AI

  1. Уточніть задачу та систему одиниць. Входи, виходи, одиниці.
  2. Згенеруйте функцію. Єдиний відповідальний, тлумачний, єдиний.
  3. Додайте відомі результати тесту. Стверджуйте опорним прикладом.
  4. Спробуйте крайні випадки. Нульовий, негативний, дуже великий/малий вхід.
  5. Виконайте перевірку одиниці. Чи відповідає одиниця випуску очікуваному?
  6. Документ і версія. Припущення, джерело, дата; відстеження за допомогою git.

Підказка, що генерує функції та тести

Посада: Досвідчений розробник Python, який пише інженерні розрахунки. Завдання: Написати функцію, яка обчислює максимальне напруження згину в консольній балці прямокутного перерізу. Введення: F (N), L (мм), b (мм), h (мм). Вихід: сигма (МПа). Умовні позначення: система одиниць Н-мм-МПа; коментуйте одиницю кожного запису. Правило: використовуйте I = b*h^3/12 і sigma = M*c/I; прокоментуйте кроки. Правило: додайте тест із ВІДОМИМ РЕЗУЛЬТАТОМ: сигма ~28,1 МПа для F=500,L=300,b=20,h=40; Перевірте за допомогою assert (невеликий допуск).

Підказка стану краю

Додайте перевірку крайнього випадку до наведеної вище функції: - Якщо b, h або L дорівнюють нулю або від'ємні, дайте значну помилку (підніміть ValueError). - Прокоментуйте, якщо є проблема переповнення/точності з дуже великими/малими вхідними даними. Також додайте ще 3 різні тестові входи та запишіть очікуваний результат; пояснити результати так, щоб я міг перевірити їх вручну.

Підказка безпеки одиниці (пінта).

Unit-safe той самий обліковий запис із бібліотекою «pint». Нехай вхідні дані визначаються в одиницях (наприклад, 500 * урег.ньютон). Перетворіть результат у МПа та роздрукуйте його. Додайте невеликий приклад, який показує, як пінта не вдається, якщо ввести неправильну одиницю.

Підказка перевірки коду

Критикуйте мій код інженерних розрахунків нижче з точки зору перевірки коду, не погоджуйтеся зі мною. Зокрема: чи правильне перетворення одиниць вимірювання, чи правильна формула, чи враховувалися крайові випадки (нульовий, негативний), чи справді тести підтверджують? Для кожної знахідки напишіть, як це виправити.[код]

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

Слабка підказка:

Напишіть код Python для розрахунку напруги.

Немає вибору одиниць, формул, вхідних визначень і тестів; AI генерує код, який працює, але не перевірений і блок якого невідомий.

Потужна підказка:

Запишіть функцію напруги згину в консольній балці. Вхід F(N), L(мм), b(мм),h(мм); вихід сигма (МПа). Система Н-мм-МПа, кожну одиницю вказуйте в коментарі. Додайте випробування з відомими результатами (F=500, L=300, b=20, h=40 → ~28,1 МПа, підтвердити). Видає помилку при нульовому/негативному введенні. Інтерпретація граничних випадків.

Друга підказка вимагає системи одиниць, формули, вхідних даних, тесту та крайових випадків; Це робить код верифікованим.

Три міні-кейси (за номерами)

Випадок 1. Помилка тихого звуку. Розрахунок площі, створений штучним інтелектом, бере діаметр у мм і дає мм² з pi*d**2/4, але наступний рядок поміщає його у формулу, яка очікує м²; Код працює без помилок і дає стрес в 1 000 000 разів менше. Коли інженер запускає тест із відомим результатом (assert abs(sigma-28.1)<0.5), тест вибухає, і помилка виявляється. Якби тесту не було, неправильний результат увійшов би до звіту непоміченим. Урок: робочий код ≠ правильний код.

Випадок 2 – Збій у стані межі. У коді, який виконує цикл для сімейства деталей, товщина h=0 вводиться в один рядок; Коли I = b*h**3/12 = 0, сигма = M*c/I дає помилку ділення на нуль. Завдяки елементу if h<=0: raise ValueError, доданому штучним інтелектом, код зупиняється зі значущим повідомленням і не видає мовчки інформацію. Урок: обробляйте крайові випадки заздалегідь.

Випадок 3 - Збільшення повторюваності. Інженеру знадобилося півдня, щоб вручну розрахувати потужність насоса для 40 різних робочих точок. Написаний у штучному інтелекті сценарій зчитує CSV, обчислює потужність для кожного рядка та перевіряє відому точку за допомогою assert, скорочуючи роботу до ~2 хвилин і записуючи результати у файл, який можна відстежити. Коли запис змінюється, вся таблиця оновлюється щосекунди. Урок: перевірена автоматизація є швидкою та надійною.

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

  • Помилка «працював = правильно»: думати, що код, який працює без помилок, є правильним.
  • Не написання тестів: покладання на код без еталонного тесту з відомим результатом.
  • Неоднозначність одиниць: залишення одиниць введення/виведення без інтерпретації, пропуск перетворення.
  • Ігнорування граничних випадків: тиха помилка або збій при нульовому/негативному введенні.
  • Недокументування джерела/припущення: Незапис джерела та припущення використаної формули.
  • Без версії: обліковий запис залишається одноразовим файлом без можливості відстеження (git).

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

  • Python робить інженерні обчислення повторюваними, відстежуваними та контрольованими версіями.
  • ШІ дуже швидко генерує код; Але той факт, що код працює без помилок, не означає, що він обчислює правильно.
  • Кожен код має бути перевірений за допомогою тестування з відомими результатами, перевірки модулів і граничних випадків.
  • Помилки одиниць є найпоширенішим і найпідступнішим джерелом помилок; Захищати за одиничною системою, номенклатурою або пінтою.
  • Перевірена автоматизація економить час і додає впевненості; Неперевірений код небезпечний.

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

Виберіть повторювані інженерні розрахунки (наприклад, навантаження, потужність насоса, теплове навантаження). Напишіть функцію Python для ШІ, який виконує це обчислення; Закоментуйте одиницю кожного входу та виходу та додайте перевірку підтвердження з відомим результатом. Запустіть тест і перевірте, чи він пройшов. Потім виконайте ще дві перевірки: спробуйте граничний випадок (нульовий або негативний вхід), щоб переконатися, що код повертає значну помилку, і вручну вкажіть одиницю виведення в прикладі. Якщо можливо, також виготовте безпечну версію в пінті. Нарешті, додайте припущення розрахунку, джерело формули та дату до коду як короткий заголовок і напишіть, чому цей код все ще потребує схвалення інженера.

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

  • [ ] Блоки введення та виведення чітко задокументовані в коді; була обрана одноблочна система.
  • [ ] Тест (assert) з відомим результатом додано та пройдено.
  • [ ] Виконано принаймні один граничний випадок (нульовий/негативний); Код дав суттєву помилку.
  • [ ] Одиницю виведення надано прикладом вручну (без припущення «працював = правильно»).
  • [ ] Джерело формули, припущення та дата, зазначені в коді.
  • [ ] Обліковий запис можна відстежувати/відстежувати; остаточне затвердження залишалося за інженером.