Добивки:
- Способност за автоматизирање на инженерската пресметка, управувањето со единицата и обработката на податоци со Python код напојуван со вештачка интелигенција
- Способност да се потврди кодот за вештачка интелигенција со проверка на единицата, тестирање на познати резултати и рабови
- Способност да стекнете навика за производство на повторливи, следливи и контролирани од верзија документи за сметки
Во машинското инженерство, истата пресметка се прави одново и одново: напрегања на група делови, моќност на пумпата за низа работни точки, табели за својства на различни температури. Рачното вршење на овие работи е и бавно и склоно кон грешки. Python (програмски јазик кој лесно се учи со богати библиотеки за инженерство) ги автоматизира овие повторувања; Тоа ја прави сметката повторлива, следлива и контролирана од верзијата. Вештачка интелигенција (AI) Python е неверојатно брз во генерирањето код: конвертирање на формула во функција, додавање управување со единици, читање податоци, цртање графикони. Но, тука постои опасна заблуда: само затоа што кодот работи без грешки не значи дека се пресметува правилно. Кодот за вештачка интелигенција може тивко да враќа неточни резултати поради неточна конверзија на единици, неточна формула или во рабови случаи, а програмата ќе продолжи да работи без никакви грешки. Затоа секој инженерски код произведен со вештачка интелигенција; Тестните влезови со познати резултати се несигурни без верификација преку проверка на единицата (големина) и испитувања на рабови случаи. Во оваа единица, ќе научите како безбедно да поставите автоматизација на сметката на Python со вештачка интелигенција.
Зошто кодна сметка? Следливост и репродуктивност
Рачната пресметка е еднократна; Кога некој влез се менува, тоа се прави од нула и се губат средните чекори. Пресметката направена во код е како документ: влезовите, формулите и излезите се јасно напишани; менувате влез и добивате нов резултат за неколку секунди; Со контрола на верзијата (како git), може да се следи „што сум пресметал со која вредност на кој датум“. Ова е непроценливо во однос на контролата и одговорноста. Но, оваа моќ зависи од точноста на кодот; Погрешен код произведува погрешен резултат, исто така репродуктивно и брзо.
Совет: Напишете тест за секоја пресметковна функција со познат вистински резултат до неа (потврдете во Python). На пример, вашата функција на стрес треба да даде 28,1 MPa во познат примерок. Овој тест веднаш ве предупредува ако скршите нешто кога ќе го промените кодот во иднина. Инженерскиот код што не е тестиран е непроверена сметка.
Управување со волумен: најчест извор на грешка
Во инженерскиот код, повеќето грешки доаѓаат од единици: N со kN, m со mm, Pa со MPa, што може да се помеша со фактор 1000 или 1.000.000. Има две одбрани. Првата е дисциплина: избор на систем со една единица од почеток (на пр. N, mm, MPa) и конвертирање на сите влезови во него и додавање единици на имињата на променливите (должина_mm, сила_N). Втората е алатката: библиотека како пинта ги носи единиците во кодот и ја фаќа неконзистентната операција како грешка.
Пристап
Како функционира
Предност
Дисциплина за именување
како сила_N, должина_мм
Едноставно, без зависност
систем со една единица
Сите конвертирани во N-mm-MPa
Едноставност, брзина
пинта библиотека
Преместува единица по променлива
Автоматски фаќа недоследност
Тест со познат резултат
референца со тврдење
Фаќа грешка во формулата/единицата
Внимание: Може да недостасува конверзија на единица или да е неточна во кодот генериран со вештачка интелигенција и кодот сепак ќе „работи“. На пример, ако дијаметарот е mm и површината се очекува да биде m², резултатот ќе отстапи за 1.000.000 пати, но програмата нема да даде грешка. Пред да го извршите кодот, коментирајте ги единиците на влезовите и излезите; потоа дајте го резултатот со познат пример.
Чекор по чекор: Код на сметка што може да се потврди со вештачка интелигенција
- Разјаснете го проблемот и системот на единицата. Влезови, излези, единици.
- Генерирајте ја функцијата. Единствен одговорен, интерпретативен, обединет.
- Додадете тест за познати резултати. Потврдете со референтен пример.
- Обидете се со рабови. Нула, негативен, многу голем/мал влез.
- Направете проверка на единицата. Дали единицата за излез се совпаѓа со она што се очекува?
- Документ и верзија. Претпоставки, извор, датум; следливост со git.
Прашање што генерира функции и тестови
Улога: искусен развивач на Python кој пишува инженерски пресметки. Задача: Напишете функција која го пресметува максималниот напон на свиткување во конзолен греда со правоаголен пресек. Влез: F (N), L (mm), b (mm), h (mm). Излез: сигма (MPa).Конвенција: Единица систем N-mm-MPa; коментирајте ја единицата на секој запис.Правило: користете I = b*h^3/12 и сигма = M*c/I; коментирај ги чекорите.Правило: Додај тест со ПОЗНАТ РЕЗУЛТАТ: сигма ~28,1 MPa за F=500,L=300,b=20,h=40; Проверете со тврдење (мала толеранција).
Прашање за статус на раб
Додајте проверки на големината на рабовите на горната функција: - ако b, h или L се нула или негативни, дајте значајна грешка (подигнете ја ValueError).- Коментирајте ако има проблем со прелевање/прецизност со многу големи/мали влезови. Додадете уште 3 различни тест влезови и напишете го очекуваниот резултат; објаснете ги резултатите на начин што ќе можам рачно да ги потврдам.
Промпт за безбедност на единицата (пинта).
Заштитете ја истата сметка со библиотеката „pint“. Нека влезовите се дефинираат во единици (на пр. 500 * ureg.newton). Претворете го излезот во MPa и испечатете го. Додадете мал пример кој покажува како пинтата не успева кога ќе се даде влез со погрешна единица.
Прашање за проверка на кодот
Критикувајте го мојот код за инженерска пресметка подолу од перспектива на преглед на кодот, не се согласувајте со мене. Конкретно: дали е точна конверзијата на единиците, дали формулата е точна, дали се земени предвид рабовите (нула, негативни), дали тестовите навистина потврдуваат? За секој наод, напишете како да го поправите.[code]
Слаба навестување / Силен навестување
Слаба навестување:
Напишете Пајтон код за пресметување на стресот.
Нема избор на единици, формули, влезни дефиниции и тестови; Вештачката интелигенција генерира код кој работи, но е непроверен и чија единица е непозната.
Моќен потсетник:
Напишете ја функцијата на напрегање на свиткување во конзолниот сноп. Влез F(N), L(mm), b(mm), h(mm); излезна сигма (MPa). N-mm-MPa систем, наведете ја секоја единица во коментар. Додадете тест со познати резултати (F=500, L=300, b=20, h=40 → ~28,1 MPa, наведете). Дајте грешка на нула/негативен влез. Толкувајте случаи на рабови.
Вториот промпт бара единица систем, формула, влезови, тест и рабови; Тоа го прави кодот проверлив.
Три мини случаи (по бројки)
Случај 1 - Грешка во тивка јачина на звук. Пресметката на површината произведена од AI го зема дијаметарот во mm и дава mm² со pi*d**2/4, но следната линија ја става во формула која очекува m²; Кодот работи без грешки и го дава стресот 1.000.000 пати помал. Кога инженерот ќе го изврши тестот со познат резултат (потврдете апс (сигма-28,1)<0,5), тестот експлодира и грешката се открива. Ако немаше тест, погрешниот резултат ќе влезеше во извештајот незабележано. Лекција: работен код ≠ точен код.
Случај 2 - Пад на рабната состојба. Во кодот што се појавува за фамилија на дел, дебелината h=0 се внесува во една линија; Кога I = b*h**3/12 = 0, сигма = M*c/I дава грешка со поделба со нула. Благодарение на контролата if h<=0: raise ValueError додадена од вештачката интелигенција, кодот запира со значајна порака и не тивко произведува инф. Лекција: претходно ракувајте со рабови.
Случај 3 - Добивка на повторливост. На инженерот му требаше половина ден за рачно да ја пресмета моќноста на пумпата за 40 различни работни точки. Напишано во вештачка интелигенција, скриптата го чита CSV, ја пресметува моќноста за секоја линија и ја потврдува познатата точка со тврдење, намалувајќи ја работата на ~2 минути и запишувајќи ги резултатите во датотека што може да се следи. Кога некој запис се менува, целата табела се ажурира секоја секунда. Лекција: потврдената автоматизација е и брза и сигурна.
Вообичаени грешки
- Заблуда „Работеше = точен“: да се мисли дека кодот што работи без грешки е точно.
- Не пишување тестови: потпирање на код без референтен тест со познат резултат.
- Двосмисленост на единицата: оставање на влезно/излезни единици неинтерпретирани, прескокнување на конверзијата.
- Игнорирање на рабови: Тивка грешка или пад на нула/негативен влез.
- Недокументирање на изворот/претпоставката: Незапишување на изворот и претпоставката за употребената формула.
- Не верзија: оставање на сметката како еднократна датотека без да може да се следи (git).
Сумирано
- Пајтон го прави инженерското пресметување повторливо, следливо и контролирана верзија.
- ВИ е многу брза во генерирањето код; Но, тоа што кодот работи без грешки не значи дека правилно пресметува.
- Секој код треба да се потврди преку тестирање со познати резултати, проверка на единицата и рабови.
- Единските грешки се најчестиот и најподмолниот извор на грешка; Одбрани со единечна единица систем, номенклатура или пинта.
- Потврдената автоматизација заштедува време и дава доверба; Непроверениот код е опасен.
Задача за апликација
Изберете повторлива инженерска пресметка (како што се стрес, моќност на пумпата, топлинско оптоварување). Напишете функција на Python на вештачката интелигенција што ја прави оваа пресметка; Коментирајте ја единицата на секој влез и излез и додајте тест за потврдување со познат резултат. Изврши го тестот и види дали ќе помине. Потоа направете уште две проверки: обидете се со големина на рабовите (нула или негативен влез) за да проверите дали кодот враќа значителна грешка и рачно наведете ја единицата на излезот во пример. Ако е можно, имајте и верзија безбедна за единица произведена во пинта. Конечно, додајте ги претпоставките на пресметката, изворот на формулата и датумот на кодот како краток наслов и напишете зошто овој код сè уште бара одобрение од инженерот.
листа за проверка
- [ ] Влезните и излезните единици се јасно документирани во кодот; беше избран единечен систем.
- [ ] Беше додаден и положен тест (тврдење) со познат резултат.
- [ ] Беше обид за најмалку еден раб (нула/негативен); Кодот даде значителна грешка.
- [ ] Излезната единица беше обезбедена со рачен пример (не претпоставувајќи „работно = точно“).
- [ ] Изворот на формулата, претпоставките и датумот наведени во кодот.
- [ ] Сметката се чува за следење/следи; конечното одобрување било оставено на инженерот.