Jedinica 4 / 11

Simboličko izračunavanje: Upravljanje umjetnom inteligencijom pomoću SymPyja

Dobici:

  • Sposobnost prepoznavanja osnovnih mogućnosti SymPyja (pojednostavljenje, faktorizacija, rješavanje jednadžbi, derivacija, integral, granica) i njihova upotreba za provjeru AI izlaza
  • Sposobnost dobivanja determinističkih i preciznih rezultata ispisom SymPy koda umjetnoj inteligenciji i pokretanjem samog koda; Shvatite da izlaz koda koji predviđa umjetna inteligencija nije provjera
  • Kada se rezultat umjetne inteligencije ne podudara s SymPy izlazom, mogućnost korištenja SymPyja kao osnove za lociranje pogreške i ručno dodavanje suptilnosti kao što su domene.

Najpraktičniji i najmoćniji alat ovog modula je u ovoj jedinici: simboličko računanje i njegova Python biblioteka SymPy. Simbolički račun izvodi egzaktnu matematiku ne brojevima već simbolima (varijablama poput x, y itd.): uzima integral s njegovom točnom formulom, rješava jednadžbe slovima, pojednostavljuje izraz. SymPy je besplatna i deterministička Python biblioteka otvorenog koda koja to čini — što znači da uvijek daje isti točan rezultat za isti unos. To ga čini idealnim za provjeru valjanosti AI rezultata: AI daje brzinu i uvid, SymPy daje preciznost.

Središnja ideja ove jedinice je sljedeća: neka AI izračuna, ali neka SymPy potvrdi rezultat. Još bolje: Neka AI napiše SymPy kod, vi pokrenite kod i dobit ćete konačni rezultat. Tako eliminirate rizik od halucinacija AI-ja pomoću determinizma SymPy-ja.

Još jedna definicija: CAS (Computer Algebra System) je opći naziv za softver koji izvodi simboličku matematiku; SymPy je CAS. Komercijalni primjeri su Mathematica i Maple, ali SymPy je besplatan i dostupan jer radi u Pythonu.

Osnovne mogućnosti SymPyja

SymPy radi upravo sljedeće:

  • Pojednostavljenje: simplify(expression) svodi izraz na njegov najjednostavniji oblik.
  • Faktoring / proširivanje: faktor() i expand().
  • Rješavanje jednadžbe: riješiti (jednadžba, x) daje točne korijene jednadžbe.
  • Derivacija: diff(expr, x).
  • Integral: integrirati(expr, x) (neodređeno) ili integrirati(expr, (x, a, b)) (određeno).
  • Granica: granica(izraz, x, točka).
  • Serija označava: seriju (izraz, x, 0, n).
  • Matrične operacije, sustavi jednadžbi, diferencijalne jednadžbe i više.

Korak po korak: tijek rada provjere valjanosti AI + SymPy

1. Neka AI riješi problem. Dobijte rješenje korak po korak i konačni rezultat.

2. Neka AI napiše SymPy kod za isti problem. Recite "Napišite kod koji potvrđuje ovaj rezultat pomoću SymPy-ja."

3. Sami pokrenite kod. Ne dopustite da AI "predvidi" izlaz koda - to bi bila halucinacija. Pokrenite kod u stvarnom Python okruženju.

4. Usporedite dva rezultata. Ako su rezultat koji je ručno pronašao AI i SymPy izlaz isti, povjerenje se povećava; ako je drugačiji, greška je u AI ​​(povjerite SymPy).

5. Ako postoji razlika, pronađite grešku. Recite umjetnoj inteligenciji: "SymPy je dao ovo, vaš rezultat je drugačiji; pronađite svoju pogrešku."

Pažnja: Ako uzmete kod iz umjetne inteligencije i pitate "što ovaj kod proizvodi?" Pitati AI ​​" NIJE provjera — jer AI ​​može također napraviti izlaz koda. Obavezno pokrenite kod u stvarnom Python okruženju (lokalna instalacija, Jupyter ili mrežni Python runner). Snaga SymPyja otkriva se kada se pokrene.

AI ručno rješenje itd. SymPy — usporedba

značajka

AI ručno rješenje

SymPy

brzina

vrlo brzo

brzo

preciznost

Nema garancije (halucinacija)

Određen, siguran

Objasnite korake

dobar

Slab (orijentiran na rezultate)

Intuicija/strategija

dobar

Nijedan

Podobnost za provjeru

br

da

Najbolja kombinacija: AI za objašnjenje i strategiju, SymPy za preciznost.

tri mini kućišta

Slučaj 1 — Integralna neusklađenost. Student je pitao AI ∫ x/(x²+1) dx. YZ je dao (1/2)·ln(x²+1) + C. Učenik je pokrenuo integrate(x/(x**2+1), x); SymPy je vratio log(x**2 + 1)/2. Bili su isti — potpuno povjerenje. Tada je također izvršena kontrola derivata s diff; Vraćamo se na x/(x²+1). Trostruka potvrda, 3 minute.

Slučaj 2 — Pogreška pojednostavljenja. Učitelj je dao umjetnoj inteligenciji da pojednostavi izraz (x²−1)/(x−1); YZ je rekao x+1 (točno, ali je izostavio uvjet x≠1). SymPy simplify((x**2-1)/(x-1)) također je dao x+1, ali je učitelj ručno dodao ograničenje domene (nedefinirano na x=1). Lekcija: čak ni SymPy ponekad ne naglašava finese domene; ljudski dodaje matematički kontekst.

Slučaj 3 — Sustav jednadžbi. Inženjer je AI-ju dao riješiti sustav linearnih jednadžbi s 3 nepoznanice i pogriješio je u jednoj varijabli. SymPy s solve([equations], [x, y, z]) dao je točno rješenje; Z vrijednost AI-a bila je pogrešna. Inženjer je uzeo SymPy rezultat i tražio od umjetne inteligencije da pronađe pogrešku: znak pogreške. Riješeno je za 4 minute.

Četiri predloška za kopiranje

1) Traženje kontrolnog koda SymPy od YZ:

Riješili ste sljedeći problem: [problem], vaš rezultat je [rezultat]. Sada napišite SymPy izvršni kod koji POTVRĐUJE ovaj rezultat. Neka kod definira simbole, izračunajte rezultat i ispišite ga. Ne pogađajte izlaz koda; Ja ću to pokrenuti.

2) Rješenje od nule uz SymPy:

Napišite Python kod koji rješava sljedeći problem sa SymPy: [problem]. Dodajte potrebne uvoze, definicije simbola i ispise. Napišite što kod proizvodi; Samo mi dajte kod i ja ću ga pokrenuti. Dodajte kratki komentar svakom retku koda.

3) Popravite AI sa SymPy izlazom:

Rekli ste [rezultat], ali SymPy je dao ovo: [SymPy izlaz]. To dvoje je različito. Budući da je SymPy deterministički, prihvatite ga kao točan. Saznaj U KOJEM si koraku pogriješio u rješenju i pokaži to.

4) Kod za unakrsnu provjeru derivata/integrala:

Uzeli ste sljedeći integral: ∫ [f(x)] dx = [F(x)]. Da biste to potvrdili, napišite kod u SymPy koji uzima DERIVATIV od F(x) i provjerava je li jednak f(x) (s logikom pojednostavljenja(diff(F)-f) == 0). Samo dajte šifru.

Slab upit / Jak upit

Slabo: "Što je ∫ sin²(x) dx? Također provjerite sa SymPy i napišite izlaz."
Rezultat: AI odgovara i odgovoru i "SymPy izlazu"; Oboje se čini dosljednim, ali nijedno nije potvrđeno. Lažno samopouzdanje.
Jako: "Napišite izvršni SymPy kod za ∫ sin²(x) dx (import, symbol, integrate, print). Ne pišete izlaz — ja ću ga pokrenuti i vidjeti. Također dodajte redak koji provjerava kako bi razlikovao rezultat i vratio ga na sin²(x)."
Rezultat: Pokrenete kod i vidite točan izlaz SymPyja; verifikacija postaje stvarna.

Uobičajene greške

  • AI predviđa izlaz koda. Ovo nije provjera valjanosti; AI također može prilagoditi izlaz. Pokrenite kod.
  • Prihvaćanje SymPy rezultata bez čitanja. SymPyjev izlazni format ponekad je neobičan (npr. log = prirodni logaritam); Znati tumačiti.
  • Zaboravljanje domene. SymPy pojednostavljenje ne naglašava uvijek ograničenja kao što je x≠1; ljudski dodaje kontekst.
  • Netočna definicija simbola. Ako je x = symbols('x') zaboravljen, kôd neće raditi; pretpostavke (pozitivne, stvarne) utječu na rezultat (symbols('x', positive=True)).
  • Nedostatak uvoza. Uobičajena je pogreška zaboraviti uvoz iz sympy import * ili potrebne funkcije.
Savjet: Za provjeru točnosti jednakosti u SymPyju vrlo je koristan izraz simplify(left_side - right_side) == 0: dva su izraza identična ako se razlika pojednostavi na nulu. Ovo je najčišći način provjere identiteta ili pojednostavljenja koje proizvodi AI.

SymPyjeve pretpostavke: isti izraz, drugačiji rezultat

Suptilna, ali važna značajka SymPyja je njegov sustav pretpostavki. Kada definirate simbol, možete mu dati svojstva: symbols('x', positive=True) označava da je x pozitivan, real=True označava da je stvaran. Ove pretpostavke mogu promijeniti ishod. Na primjer, izraz √(x²) ostaje sqrt(x**2) ako nema pretpostavki o x (jer SymPy uzima u obzir da x može biti negativan i zna da mora biti |x|); Ali ako je x definiran kao pozitivan, rezultat je izravno x. Ovo nije pogreška, već matematička strogost: √(x²) = |x|, a ne x = x.

AI često izostavlja ili netočno pretpostavlja te pretpostavke prilikom generiranja SymPy koda. Kao rezultat toga, kôd koji AI proizvodi možda neće učiniti pojednostavljenje koje "očekujete" - a to zapravo znači da se SymPy ponaša točnije. Dakle, kada se čini da pojednostavljenje "ne funkcionira", prvo razmotrite stvarne matematičke uvjete problema (je li x pozitivan? je li stvaran? je li različit od nule?) i dodajte te pretpostavke kodu. Ispravne pretpostavke ne samo da osiguravaju da SymPy vrati točan rezultat, već vas također tjera da razmislite o domeni problema—što je dio matematičke točnosti.

Oprez: SymPyjev neuspjeh da "pojednostavi" izraz često nije nedostatak, već stvar matematičke strogosti: budući da nisu dane potrebne pretpostavke (pozitivnost, realizam), SymPy ima najopćenitiji, najsigurniji rezultat. Ako ne vidite pojednostavljenje koje očekujete, prvo pregledajte pretpostavke simbola.

Ukratko

SymPy je idealan deterministički alat za provjeru valjanosti matematičkog rezultata umjetne inteligencije. Najmoćniji tijek rada: strategija i opis za AI, preciznost za SymPy. Zamolite AI za SymPy kod, ali svakako sami pokrenite izlaz — natjerati AI da pogodi izlaz koda nije provjera valjanosti. Ako se rezultati ne podudaraju, vjerujte SymPyju i pustite AI da pronađe grešku. Unakrsna provjera identiteta pomoću simplify(difference) == 0 i integrala pomoću diff.

Zadatak aplikacije

Odaberite integral, rješenje jednadžbe i pojednostavljenje izraza (tri odvojena zadatka). Za svaki od njih neka AI ručno napiše rješenje, a zatim SymPy kod. Pokrenite kodove u stvarnom Python okruženju (lokalna instalacija ili mrežni pokretač). Usporedite rezultate SymPyja s ručnim rezultatima AI-ja. Pokušajte pronaći barem jednu nepodudarnost; Ako ga pronađete, neka AI pronađe njegovu grešku. Zabilježite postupak.

popis za provjeru

  • [ ] Dobio sam i AI rješenje i SymPy kod za svaki problem.
  • [ ] Pokrenuo sam SymPy kod u stvarnom Python okruženju.
  • [ ] Usporedio sam YZ ručni rezultat sa SymPy izlazom.
  • [ ] Provjerio sam inverznu derivaciju/integral sa SymPy.
  • [ ] Dodao sam domenu i pretpostavke (pozitivne/stvarne) ručno.
  • [ ] U sporu sam se oslonio na SymPy i natjerao AI da pronađe svoju grešku.