Üksus 4 / 11

Sümboolne arvutamine: tehisintellekti juhtimine SymPy abil

Kasu:

  • Võimalus ära tunda SymPy põhivõimalused (lihtsustamine, faktoriseerimine, võrrandite lahendamine, tuletis, integraal, piirang) ja kasutada seda AI väljundi kinnitamiseks
  • Võimalus saada deterministlikke ja täpseid tulemusi tehisintellektile SymPy koodi printimisel ja koodi enda käivitamisel; Mõistke, et tehisintellekti ennustatud koodi väljund ei ole kontrollimine
  • Kui tehisintellekti tulemus ei ühti SymPy väljundiga, on võimalus kasutada SymPy-d vea asukoha leidmiseks ja peensuste (nt domeenid) käsitsi lisamiseks.

Selle mooduli kõige praktilisem ja võimsam tööriist on selles üksuses: sümboolne arvutus ja selle Pythoni teek SymPy. Sümboolne arvutamine on täpse matemaatika tegemine mitte numbrite, vaid sümbolite (muutujad nagu x, y jne) abil: integraali võtmine selle täpse valemiga, võrrandi lahendamine tähtedega, avaldise lihtsustamine. SymPy on avatud lähtekoodiga tasuta ja deterministlik Pythoni teek, mis seda teeb – see tähendab, et see annab samale sisendile alati sama täpse ja õige tulemuse. See muudab selle ideaalseks tehisintellekti väljundi kinnitamiseks: AI annab kiiruse ja ülevaate, SymPy annab täpsuse.

Selle seadme keskne idee on järgmine: laske tehisintellektil teha matemaatika, kuid laske SymPyl tulemus kinnitada. Veelgi parem: laske tehisintellektil kirjutada SymPy kood, käivitate koodi ja saate lõpptulemuse. Seega kõrvaldate AI hallutsinatsiooniriski SymPy determinismiga.

Veel üks määratlus: CAS (Computer Algebra System) on sümboolset matemaatikat sooritava tarkvara üldnimetus; SymPy on CAS. Kaubanduslikud näited on Mathematica ja Maple, kuid SymPy on tasuta ja juurdepääsetav, kuna see töötab Pythonis.

SymPy põhivõimalused

SymPy teeb täpselt järgmist:

  • Lihtsustamine: lihtsustamine (avaldis) taandab avaldise selle lihtsaimale kujule.
  • Faktooring / laiendamine: tegur() ja expand().
  • Võrrandi lahendamine: lahenda(võrrand, x) annab võrrandi täpsed juured.
  • Tuletis: diff(avaldis, x).
  • Integraal: integreerima(avaldis, x) (määramata) või integreerima(väljend, (x, a, b)) (määratletud).
  • Piirang: piir (avaldis, x, punkt).
  • Seeria tähistab: seeria(avaldis, x, 0, n).
  • Maatrikstehted, võrrandisüsteemid, diferentsiaalvõrrandid ja palju muud.

Samm-sammult: AI + SymPy valideerimise töövoog

1. Laske tehisintellektil probleem lahendada. Hankige samm-sammult lahendus ja lõpptulemus.

2. Laske AI-l kirjutada sama probleemi jaoks SymPy kood. Öelge "Kirjutage kood, mis kinnitab selle tulemuse SymPy abil".

3. Käivitage kood ise. Ärge laske tehisintellektil koodi väljundit "ennustada" - see oleks hallutsinatsioon. Käivitage kood päris Pythoni keskkonnas.

4. Võrrelge kahte tulemust. Kui AI ja SymPy väljundi käsitsi leitud tulemus on sama, suureneb usaldus; kui see on erinev, on viga AI-s (usalda SymPyt).

5. Kui on erinevus, leidke viga. Öelge tehisintellektile: "SymPy andis selle, teie tulemus on erinev; leidke oma viga."

Tähelepanu: kui võtate AI-st koodi ja küsite "mida see kood toodab?" Tehisintellekti küsimine EI OLE kontrollimine – kuna AI saab ka koodi väljundi moodustada. Käivitage kood kindlasti reaalses Pythoni keskkonnas (kohalik install, Jupyter või Pythoni veebipõhine jooksja). SymPy jõud avaldub selle käivitamisel.

AI manuaallahendus jne SymPy — võrdlus

funktsiooni

AI käsitsi lahendus

SymPy

kiirust

väga kiire

kiire

täpsus

Garantii puudub (hallutsinatsioonid)

Deterministlik, kindel

Selgitage samme

hea

Nõrk (tulemustele orienteeritud)

Intuitsioon/strateegia

hea

Mitte ühtegi

Sobivus kontrollimiseks

ei

Jah

Parim kombinatsioon: AI selgituse ja strateegia jaoks, SymPy täpsuse jaoks.

kolm minikarpi

Juhtum 1 – integraalne mittevastavus. Õpilane küsis AI ∫ x/(x²+1) dx. YZ andis (1/2)·ln(x²+1) + C. Õpilane jooksis integrate(x/(x**2+1), x); SymPy tagastas logi(x**2 + 1)/2. Nad olid samad – täielik usaldus. Seejärel tehti tuletiskontroll ka diff-iga; See on tagasi x/(x²+1). Kolmekordne kinnitus, 3 minutit.

Juhtum 2 – lihtsustusviga. Õpetaja lasi AI-l avaldist (x²−1)/(x−1) lihtsustada; YZ ütles x+1 (õige, kuid jättis tingimuse x≠1 välja). SymPy simplify((x**2-1)/(x-1)) andis samuti x+1, kuid õpetaja lisas käsitsi domeenipiirangu (määramata x=1 juures). Õppetund: isegi SymPy ei rõhuta mõnikord domeeni peenust; inimene lisab matemaatilise konteksti.

3. juhtum – võrrandisüsteem. Insener lasi tehisintellektil lahendada 3 tundmatuga lineaarvõrrandisüsteemi ja tegi ühes muutujas vea. SymPy koos solve([võrrandid], [x, y, z]) andis täpse lahenduse; AI z väärtus oli vale. Insener võttis SymPy tulemuse ja lasi tehisintellektil leida vea: märgiviga. See lahendati 4 minutiga.

Neli kopeeritavat malli

1) SymPy kinnituskoodi küsimine YZ-lt:

Lahendasite järgmise ülesande: [probleem], teie tulemus on [tulemus]. Nüüd kirjutage SymPy käivitatav kood, mis KINNITAB selle tulemuse. Laske koodil defineerida sümbolid, arvutage tulemus ja printige see välja. Ärge arvake koodi väljundit; Panen selle käima.

2) Lahendus nullist SymPy abil:

Kirjutage Pythoni kood, mis lahendab SymPy järgmise probleemi: [probleem]. Lisage vajalikud impordid, sümbolite definitsioonid ja väljatrükid. Kirjutage, mida kood toodab; Andke mulle lihtsalt kood ja ma käivitan selle. Lisage igale koodireale lühike kommentaar.

3) Parandage AI SymPy väljundiga:

Ütlesite [tulemus], kuid SymPy andis selle: [SymPy väljund]. Need kaks on erinevad. Kuna SymPy on deterministlik, aktsepteerige seda õigena. Uuri välja, MILLES sammus sa oma lahenduses vea tegid ja näita seda.

4) Tuletise/integraalse ristkontrolli kood:

Võtsite järgmise integraali: ∫ [f(x)] dx = [F(x)]. Selle kontrollimiseks kirjutage SymPysse kood, mis võtab F(x) TULETIST ja kontrollib, kas see on võrdne f(x)-ga (loogikaga lihtsustada(diff(F)-f) == 0). Andke lihtsalt kood.

Nõrk viip / Tugev viip

Nõrk: "Mis on ∫ sin²(x) dx? Kontrollige ka SymPyga ja kirjutage väljund."
Tulemus: AI sobib nii vastusele kui ka "SymPy väljundile"; Mõlemad näivad olevat järjekindlad, kuid kumbagi pole kinnitatud. Võlts enesekindlus.
Tugev: "Kirjutage käivitatav SymPy kood ∫ sin²(x) dx jaoks (import, sümbol, integreerimine, printimine). Väljundit te ei kirjuta – ma käivitan selle ja vaatan. Lisage ka rida, mis kontrollib, et tulemust eristada ja see tagastada sin²(x)-le."
Tulemus: käivitate koodi ja näete SymPy täpset väljundit; kinnitus muutub tõeliseks.

Levinud vead

  • Lases AI-l koodiväljundit ennustada. See ei ole valideerimine; AI mahub ka väljundisse. Käitate koodi.
  • SymPy tulemuse vastuvõtmine ilma seda lugemata. SymPy väljundvorming on mõnikord ebatavaline (nt log = naturaallogaritm); Tea, kuidas tõlgendada.
  • Domeeni unustamine. SymPy lihtsustamine ei rõhuta alati piiranguid, nagu x≠1; inimene lisab konteksti.
  • Vale sümboli definitsioon. Kui x = symbols('x') on unustatud, siis kood ei tööta; oletused (positiivsed, tegelikud) mõjutavad tulemust (sümbolid('x', positiivne=tõene)).
  • Impordi puudumine. Levinud viga on see, et unustatakse sympy import * või vajalikud funktsioonid importida.
Näpunäide: SymPy võrdsuse õigsuse kontrollimiseks on väga kasulik avaldis lihtsustada(vasak_külg - parem_külg) == 0: kaks avaldist on identsed, kui erinevus lihtsustub nullini. See on puhtaim viis tehisintellekti loodud identiteedi või lihtsustuse kontrollimiseks.

SymPy eeldused: sama väljend, erinev tulemus

SymPy peen, kuid oluline omadus on selle eeldussüsteem. Sümboli defineerimisel saab anda sellele omadused: symbols('x', positiivne=True) näitab, et x on positiivne, real=True näitab, et see on tõeline. Need eeldused võivad tulemust muuta. Näiteks avaldis √(x²) jääb sqrt(x**2), kui x kohta pole eeldusi (sest SymPy võtab arvesse, et x võib olla negatiivne ja teab, et see peab olema |x|); Aga kui x on defineeritud positiivsena, on tulemuseks otse x. See pole viga, vaid matemaatiline rangus: √(x²) = |x|, mitte x = x.

AI jätab need eeldused SymPy koodi genereerimisel sageli välja või eeldab neid valesti. Selle tulemusel ei pruugi tehisintellekti toodetav kood lihtsustada ootusi – ja see tähendab tegelikult, et SymPy käitub täpsemalt. Nii et kui tundub, et lihtsustamine ei tööta, kaaluge esmalt probleemi tegelikke matemaatilisi tingimusi (kas x on positiivne? kas see on reaalne? kas see on nullist erinev?) ja lisage need eeldused koodi. Eelduste õigeks tegemine mitte ainult ei taga, et SymPy tagastab õige tulemuse, vaid sunnib teid ka mõtlema probleemi valdkonnale – mis on osa matemaatilisest täpsusest.

Ettevaatust: SymPy suutmatus avaldist "lihtsustada" ei ole sageli puudujääk, vaid matemaatilise ranguse küsimus: kuna vajalikke eeldusi (positiivsus, realism) ei esitata, on SymPy kõige üldisem ja turvalisem tulemus. Kui te ei näe oodatud lihtsustust, vaadake esmalt üle sümboli eeldused.

Kokkuvõttes

SymPy on ideaalne deterministlik tööriist AI matemaatilise väljundi kinnitamiseks. Kõige võimsam töövoog: strateegia ja kirjeldus AI-le, täpsus SymPyle. Küsige tehisintellektilt SymPy koodi, kuid käivitage väljund kindlasti ise - tehes AI-i arvama, et koodi väljund ei ole valideerimine. Kui tulemused ei ühti, usaldage SymPyt ja laske tehisintellektil viga leida. Ristkontrolli identiteedid lihtsustus(difference) == 0 ja integraalide erinevusega.

Rakenduse ülesanne

Valige integraal, võrrandilahendus ja avaldise lihtsustus (kolm eraldi ülesannet). Laske AI-l igaühe jaoks lahendus käsitsi kirjutada ja seejärel SymPy kood. Käivitage koodid päris Pythoni keskkonnas (kohalik installimine või veebipõhine jooksja). Võrrelge SymPy väljundeid tehisintellekti käsitsi saadud tulemustega. Proovige leida vähemalt üks lahknevus; Kui leiate selle, laske tehisintellektil oma viga leida. Pange tähele protsessi.

kontrollnimekiri

  • [ ] Sain iga probleemi jaoks nii AI-lahenduse kui ka SymPy koodi.
  • [ ] Käitasin SymPy koodi päris Pythoni keskkonnas.
  • [ ] Võrdlesin YZ käsitsi saadud tulemust SymPy väljundiga.
  • [ ] Kontrollisin tuletise/integraali pöördväärtust SymPy-ga.
  • [ ] Lisasin domeeni ja eeldused (positiivsed/reaalsed) käsitsi.
  • [ ] Vaidluses tuginesin SymPyle ja lasin tehisintellektil oma vea üles leida.