единица 4 / 11

Символно изчисление: Контролиране на изкуствения интелект със SymPy

Печалби:

  • Възможност за разпознаване на основните възможности на SymPy (опростяване, разлагане на множители, решаване на уравнения, производна, интеграл, лимит) и използването му за валидиране на AI изхода
  • Възможност за получаване на детерминистични и точни резултати чрез отпечатване на SymPy код на изкуствен интелект и стартиране на самия код; Разберете, че изходният код, предсказан от изкуствения интелект, не е проверка
  • Когато резултатът от изкуствения интелект не съвпада с изхода на SymPy, възможността SymPy да се използва като основа за локализиране на грешката и ръчно добавяне на тънкости като домейни.

Най-практичният и мощен инструмент на този модул е ​​в този модул: символно изчисление и неговата Python библиотека SymPy. Символното смятане прави точна математика не с числа, а със символи (променливи като x, y и т.н.): вземане на интеграл с неговата точна формула, решаване на уравнение с букви, опростяване на израз. SymPy е безплатна и детерминирана Python библиотека с отворен код, която прави това — което означава, че винаги дава същия точен правилен резултат за един и същ вход. Това го прави идеален за валидиране на AI резултат: AI дава скорост и проницателност, SymPy дава прецизност.

Централната идея на тази единица е следната: накарайте AI да направи изчисленията, но SymPy да потвърди резултата. Дори по-добре: Накарайте изкуствения интелект да напише кода SymPy, вие стартирайте кода и ще получите крайния резултат. Така че елиминирате риска от халюцинации на AI с детерминизма на SymPy.

Още една дефиниция: CAS (Computer Algebra System) е общото име, дадено на софтуер, който изпълнява символна математика; SymPy е CAS. Търговски примери са Mathematica и Maple, но SymPy е безплатен и достъпен, защото работи на Python.

Основните възможности на SymPy

SymPy прави точно следното:

  • Опростяване: simplify(expression) намалява израза до неговата най-проста форма.
  • Факторинг / разширяване: фактор() и разширяване().
  • Решаване на уравнение: solve(equation, x) дава точните корени на уравнението.
  • Производна: diff(expr, x).
  • Интеграл: integrate(expr, x) (неопределено) или integrate(expr, (x, a, b)) (определено).
  • Ограничение: ограничение (израз, x, точка).
  • Серията означава: серия (израз, x, 0, n).
  • Матрични операции, системи уравнения, диференциални уравнения и др.

Стъпка по стъпка: AI + SymPy работен процес за валидиране

1. Накарайте AI да реши проблема. Получете стъпка по стъпка решение и краен резултат.

2. Накарайте AI да напише SymPy код за същия проблем. Кажете „Напишете код, който проверява този резултат със SymPy.“

3. Стартирайте кода сами. Не позволявайте на изкуствения интелект да "предскаже" изхода на кода - това би било халюцинация. Стартирайте кода в реална Python среда.

4. Сравнете двата резултата. Ако резултатът, намерен ръчно от AI ​​и изходът на SymPy, са еднакви, увереността се увеличава; ако е различен, повредата е в AI (доверете се на SymPy).

5. Ако има разлика, намерете грешката. Кажете на AI: "SymPy даде това, вашият резултат е различен; намерете грешката си."

Внимание: Ако вземете код от AI и попитате "какво произвежда този код?" Питането на AI ​​" НЕ е проверка — тъй като AI може също да състави изходния код. Не забравяйте да стартирате кода в реална Python среда (локална инсталация, Jupyter или онлайн Python runner). Силата на SymPy се разкрива, когато се стартира.

AI ръчно решение и др. SymPy — сравнение

функция

AI ръчно решение

SymPy

скорост

много бързо

бързо

прецизност

Няма гаранция (халюцинация)

Детерминиран, сигурен

Обяснете стъпките

добре

Слаб (ориентиран към резултати)

Интуиция/стратегия

добре

Няма

Допустимост за проверка

не

да

Най-добра комбинация: AI за обяснение и стратегия, SymPy за прецизност.

три мини калъфа

Случай 1 — Интегрално несъответствие. Студент попита AI ∫ x/(x²+1) dx. YZ даде (1/2)·ln(x²+1) + C. Ученикът изпълни integrate(x/(x**2+1), x); SymPy върна log(x**2 + 1)/2. Бяха еднакви — пълно доверие. След това контролът на производната също беше извършен с diff; Връща се към x/(x²+1). Тройно потвърждение, 3 минути.

Случай 2 — Грешка при опростяването. Един учител накара AI да опрости израза (x²−1)/(x−1); YZ каза x+1 (правилно, но пропусна условието x≠1). SymPy simply((x**2-1)/(x-1)) също даде x+1, но учителят ръчно добави ограничението на домейна (недефинирано при x=1). Урок: Дори SymPy понякога не подчертава финеса на домейна; човешкият добавя математически контекст.

Случай 3 — Система от уравнения. Инженер накара AI да реши система от линейни уравнения с 3 неизвестни и направи грешка в една променлива. SymPy с solve([equations], [x, y, z]) дава точното решение; Z стойността на AI беше грешна. Инженерът взе резултата от SymPy и накара изкуствения интелект да намери грешката: знакова грешка. Беше решен за 4 минути.

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

1) Искане на код за потвърждение на SymPy от YZ:

Решихте следния проблем: [проблем], вашият резултат е [резултат]. Сега напишете изпълним код на SymPy, който ПРОВЕРЯВА този резултат. Оставете кода да дефинира символите, изчислете резултата и го отпечатайте. Не предполагайте изхода на кода; Аз ще го управлявам.

2) Решение от нулата със SymPy:

Напишете код на Python, който решава следния проблем със SymPy: [проблем]. Добавете необходимите импортирания, дефиниции на символи и отпечатъци. Напишете какво произвежда кодът; Просто ми дайте кода и аз ще го пусна. Добавете кратък коментар към всеки ред от кода.

3) Коригирайте AI с изход на SymPy:

Казахте [резултат], но SymPy даде това: [изход на SymPy]. Двете са различни. Тъй като SymPy е детерминиран, приемете го за правилен. Разберете КОЯ стъпка сте направили грешка в решението си и я покажете.

4) Производен/интегрален код за кръстосана проверка:

Взехте следния интеграл: ∫ [f(x)] dx = [F(x)]. За да проверите това, напишете код в SymPy, който взема ПРОИЗВОДНАТА на F(x) и проверява дали е равна на f(x) (с логиката на simplify(diff(F)-f) == 0). Просто дайте кода.

Слаба подкана / Силна подкана

Слаб: "Какво е ∫ sin²(x) dx? Също така проверете със SymPy и напишете изхода."
Резултат: AI се вписва както в отговора, така и в „изхода на SymPy“; И двете изглеждат последователни, но нито едно не е потвърдено. Фалшива увереност.
Силно: „Напишете изпълним SymPy код за ∫ sin²(x) dx (импортиране, символ, интегриране, печат). Вие не пишете изхода — ще го пусна и ще видя. Също така добавете ред, който проверява, за да разграничи резултата и да го върне към sin²(x).“
Резултат: Изпълнявате кода и виждате точния изход на SymPy; проверката става реална.

Често срещани грешки

  • Накарайте AI да предскаже изходния код. Това не е валидиране; AI също може да пасне на изхода. Стартирате кода.
  • Приемане на резултата от SymPy, без да го четете. Изходният формат на SymPy понякога е необичаен (напр. log = натурален логаритъм); Знайте как да тълкувате.
  • Забравяне на домейна. Опростяването на SymPy не винаги набляга на ограничения като x≠1; човекът добавя контекст.
  • Неправилна дефиниция на символа. Ако x = symbols('x') е забравен, кодът няма да работи; предположения (положителни, реални) влияят на резултата (символи('x', positive=True)).
  • Липса на внос. Често срещана грешка е да забравите да импортирате от sympy import * или необходими функции.
Съвет: За да проверите коректността на равенството в SymPy, изразът simply(left_side - right_side) == 0 е много полезен: два израза са идентични, ако разликата се опростява до нула. Това е най-чистият начин за проверка на идентичност или опростяване, създадено от AI.

Предположения на SymPy: същият израз, различен резултат

Фина, но важна характеристика на SymPy е неговата система за предположения. Когато дефинирате символ, можете да му дадете свойства: symbols('x', positive=True) показва, че x е положителен, real=True показва, че е реален. Тези предположения могат да променят резултата. Например, изразът √(x²) остава sqrt(x**2), ако няма предположения за x (защото SymPy взема предвид, че x може да бъде отрицателно и знае, че трябва да бъде |x|); Но ако x е определено като положително, резултатът е директно x. Това не е грешка, а математическа строгост: √(x²) = |x|, а не x = x.

AI често пропуска или неправилно приема тези предположения, когато генерира код на SymPy. В резултат на това кодът, който AI произвежда, може да не направи опростяването, което „очаквате“ – и това всъщност означава, че SymPy се държи по-точно. Така че, когато едно опростяване изглежда „не работи“, първо вземете под внимание действителните математически условия на проблема (х положително ли е? реално ли е? различно от нула?) и добавете тези допускания към кода. Получаването на правилните предположения не само гарантира, че SymPy връща правилния резултат, но също така ви принуждава да мислите за домейна на проблема - което е част от математическата точност.

Внимание: Неуспехът на SymPy да "опрости" израз често не е недостатък, а въпрос на математическа строгост: тъй като не са дадени необходимите предположения (позитивност, реализъм), SymPy притежава най-общия и най-безопасен резултат. Ако не виждате опростяването, което очаквате, първо прегледайте предположенията за символа.

В обобщение

SymPy е идеален детерминистичен инструмент за валидиране на математическия резултат от AI. Най-мощният работен процес: стратегия и описание за AI, прецизност за SymPy. Поискайте от AI кода на SymPy, но не забравяйте да изпълните изхода сами — карането на AI да отгатне изходния код не е валидиране. Ако резултатите не съвпадат, доверете се на SymPy и оставете AI да открие грешката. Кръстосана проверка на идентичности с опростяване(разлика) == 0 и интеграли с разл.

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

Изберете интеграл, решение на уравнение и опростяване на израз (три отделни задачи). За всеки от тях накарайте AI да напише ръчно решението, след това кода SymPy. Стартирайте кодовете в реална Python среда (локална инсталация или онлайн runner). Сравнете изходите на SymPy с ръчните резултати на AI. Опитайте се да намерите поне едно несъответствие; Ако го намерите, накарайте AI да открие грешката му. Обърнете внимание на процеса.

контролен списък

  • [ ] Получих както AI решението, така и кода SymPy за всеки проблем.
  • [ ] Изпълних кода на SymPy в реална среда на Python.
  • [ ] Сравних ръчния резултат на YZ с изхода на SymPy.
  • [] Направих кръстосана проверка на обратната производна/интеграл със SymPy.
  • [ ] Добавих домейна и предположенията (положителни/реални) ръчно.
  • [ ] В спора разчитах на SymPy и накарах AI да намери грешката си.