Enhet 4 / 11

Symbolisk beräkning: Kontrollera artificiell intelligens med SymPy

Vinster:

  • Förmåga att känna igen SymPys kärnfunktioner (förenkling, faktorisering, ekvationslösning, derivata, integral, limit) och använda den för att validera AI-utdata
  • Möjlighet att få deterministiska och exakta resultat genom att skriva ut SymPy-kod till artificiell intelligens och köra själva koden; Förstå att det inte är verifiering att ha koden som förutsägs av artificiell intelligens
  • När resultatet av artificiell intelligens inte stämmer överens med SymPy-utgången, kan möjligheten att använda SymPy som grund för att lokalisera felet och manuellt lägga till subtiliteter som domäner.

Det mest praktiska och kraftfulla verktyget i denna modul finns i den här enheten: symbolisk beräkning och dess Python-bibliotek SymPy. Symbolisk kalkyl är att göra exakt matematik inte med siffror utan med symboler (variabler som x, y, etc.): ta en integral med dess exakta formel, lösa en ekvation med bokstäver, förenkla ett uttryck. SymPy är ett öppen källkod, gratis och deterministiskt Python-bibliotek som gör detta - vilket innebär att det alltid ger samma exakta korrekta resultat till samma ingång. Detta gör den idealisk för att validera AI-utdata: AI ger snabbhet och insikt, SymPy ger precision.

Den centrala idén med den här enheten är denna: låt AI:en räkna ut, men låt SymPy validera resultatet. Ännu bättre: Låt AI:en skriva SymPy-koden, du kör koden och får det slutliga resultatet. Så du eliminerar hallucinationsrisken för AI med SymPys determinism.

Ytterligare en definition: CAS (Computer Algebra System) är det allmänna namnet på programvara som utför symbolisk matematik; SymPy är ett CAS. Kommersiella exempel är Mathematica och Maple, men SymPy är gratis och tillgängligt eftersom det körs i Python.

SymPys kärnfunktioner

SymPy gör följande exakt:

  • Förenkling: förenkla(uttryck) reducerar ett uttryck till dess enklaste form.
  • Factoring / expanding: factor() och expand().
  • Lösa en ekvation: solve(ekvation, x) ger ekvationens exakta rötter.
  • Derivat: diff(expr, x).
  • Integral: integrera(expr, x) (obestämd) eller integrera(expr, (x, a, b)) (definitiv).
  • Limit: limit(uttryck, x, punkt).
  • Serie står för: serie(uttryck, x, 0, n).
  • Matrisoperationer, ekvationssystem, differentialekvationer med mera.

Steg för steg: AI + SymPy-valideringsarbetsflöde

1. Låt AI lösa problemet. Få en steg för steg lösning och slutresultat.

2. Låt AI skriva SymPy-koden för samma problem. Säg "Skriv kod som verifierar detta resultat med SymPy."

3. Kör koden själv. Låt inte AI:n "förutsäga" utmatningen av koden - det skulle vara hallucinationer. Kör koden i en riktig Python-miljö.

4. Jämför de två resultaten. Om resultatet som hittas manuellt av AI och SymPy-utgången är detsamma ökar förtroendet; om annorlunda är felet i AI (lita på SymPy).

5. Hitta felet om det finns en skillnad. Säg till AI:n "SymPy gav detta, ditt resultat är annorlunda; hitta ditt misstag."

Observera: Om du tar kod från AI och frågar "vad producerar den här koden?" Att fråga AI’en” är INTE verifiering – eftersom AI:n också kan utgöra kodens utdata. Se till att köra koden i en riktig Python-miljö (lokal installation, Jupyter eller en online Python-runner). Kraften hos SymPy avslöjas när den körs.

AI manuell lösning etc. SymPy — jämförelse

funktion

AI manuell lösning

SymPy

hastighet

mycket snabbt

snabbt

precision

Ingen garanti (hallucination)

Deterministisk, visst

Förklara stegen

bra

Svag (resultatorienterad)

Intuition/strategi

bra

Inga

Behörighet för verifiering

nej

Ja

Bästa kombination: AI för förklaring och strategi, SymPy för precision.

tre minifodral

Fall 1 – Integral missmatchning. En elev frågade AI ∫ x/(x²+1) dx. YZ gav (1/2)·ln(x²+1) + C. Eleven körde integrate(x/(x**2+1), x); SymPy returnerade logg(x**2 + 1)/2. De var desamma - fullständigt förtroende. Sedan gjordes även derivatkontrollen med diff; Det är tillbaka till x/(x²+1). Trippelbekräftelse, 3 minuter.

Fall 2 — Förenklingsfel. En lärare lät AI förenkla uttrycket (x²−1)/(x−1); YZ sa x+1 (rätt men utelämnade villkoret x≠1). SymPy simplify((x**2-1)/(x-1)) gav också x+1, men läraren la manuellt till domänbegränsningen (odefinierad vid x=1). Lektion: Även SymPy betonar ibland inte domänfinesser; människan lägger till matematisk kontext.

Fall 3 — Ekvationssystem. En ingenjör lät AI lösa ett system av linjära ekvationer med 3 okända och gjorde ett misstag i en variabel. SymPy med solve([ekvationer], [x, y, z]) gav den exakta lösningen; AI:s z-värde var fel. Ingenjören tog SymPy-resultatet och fick AI att hitta felet: ett teckenfel. Det löstes på 4 minuter.

Fyra kopierbara mallar

1) Begär SymPy-verifieringskod från YZ:

Du löste följande problem: [problem], ditt resultat är [resultat]. Skriv nu en SymPy körbar kod som VERIFIERAR detta resultat. Låt koden definiera symbolerna, beräkna resultatet och skriv ut det. Gissa inte resultatet av koden; Jag kommer att köra den.

2) Lösning från grunden med SymPy:

Skriv en Python-kod som löser följande problem med SymPy: [problem]. Lägg till nödvändiga importer, symboldefinitioner och utskrifter. Skriv vad koden producerar; Ge mig bara koden så kör jag den. Lägg till en kort kommentar till varje kodrad.

3) Fixa AI med SymPy-utgång:

Du sa [resultat], men SymPy gav detta: [SymPy output]. De två är olika. Eftersom SymPy är deterministisk, acceptera det som korrekt. Ta reda på VILKT steg du gjorde ett misstag i din lösning och visa det.

4) Derivat/integral krysskontrollkod:

Du tog följande integral: ∫ [f(x)] dx = [F(x)]. För att verifiera detta, skriv en kod i SymPy som tar DERIVATIV av F(x) och kontrollerar om den är lika med f(x) (med logiken förenkla(diff(F)-f) == 0). Ge bara koden.

Svag prompt / Stark prompt

Svag: "Vad är ∫ sin²(x) dx? Kontrollera också med SymPy och skriv utdata."
Resultat: AI:n passar både svaret och "SymPy-utgången"; Båda verkar konsekventa, men ingen av dem har bekräftats. Falskt förtroende.
Stark: "Skriv en körbar SymPy-kod för ∫ sin²(x) dx (importera, symbol, integrera, skriv ut). Du skriver inte utdata — jag kör den och ser. Lägg också till en rad som kontrollerar att resultatet kan skiljas åt och returnera det till sin²(x)."
Resultat: Du kör koden och ser den exakta utdata från SymPy; verifiering blir verklig.

Vanliga misstag

  • Att låta AI förutsäga koden. Detta är inte validering; AI kan också passa utgången. Du kör koden.
  • Acceptera SymPy-resultatet utan att läsa det. SymPys utdataformat är ibland ovanligt (t.ex. log = naturlig logaritm); Vet hur man tolkar.
  • Att glömma domänen. SymPy-förenkling betonar inte alltid begränsningar som x≠1; människan lägger till sammanhang.
  • Felaktig symboldefinition. Om x = symbols('x') glöms bort kommer koden inte att fungera; antaganden (positiva, verkliga) påverkar resultatet (symboler('x', positiv=Sant)).
  • Brist på import. Det är ett vanligt misstag att glömma att importera från sympy import * eller nödvändiga funktioner.
Tips: För att kontrollera riktigheten av en likhet i SymPy är uttrycket simplify(left_side - right_side) == 0 mycket användbart: två uttryck är identiska om skillnaden förenklas till noll. Detta är det renaste sättet att verifiera en identitet eller förenkling som produceras av AI.

SymPys antaganden: samma uttryck, olika resultat

En subtil men viktig egenskap hos SymPy är dess antagandesystem. När du definierar en symbol kan du ge den egenskaper: symbols('x', positive=True) indikerar att x är positivt, real=True indikerar att det är verkligt. Dessa antaganden kan förändra resultatet. Till exempel, uttrycket √(x²) förblir sqrt(x**2) om det inte finns några antaganden om x (eftersom SymPy tar hänsyn till att x kan vara negativt och vet att det måste vara |x|); Men om x definieras som positivt blir resultatet direkt x. Detta är inte ett fel, utan matematisk rigor: √(x²) = |x|, inte x = x.

AI utelämnar ofta eller antar felaktigt dessa antaganden när man genererar SymPy-kod. Som ett resultat kan koden som AI producerar inte göra den förenkling du "förväntar dig" - och detta betyder faktiskt att SymPy beter sig mer exakt. Så när en förenkling verkar "inte fungera", överväg först de faktiska matematiska förutsättningarna för problemet (är x positivt? är det verkligt? är det inte noll?) och lägg till dessa antaganden till koden. Att få rätt antaganden säkerställer inte bara att SymPy returnerar rätt resultat, utan tvingar dig också att tänka på problemets domän – vilket är en del av matematisk noggrannhet.

Varning: SymPys misslyckande med att "förenkla" ett uttryck är ofta inte en brist, utan en fråga om matematisk noggrannhet: eftersom de nödvändiga antagandena (positivitet, realism) inte ges, har SymPy det mest allmänna, säkraste resultatet. Om du inte ser den förenkling du förväntar dig, granska först symbolantagandena.

Sammanfattningsvis

SymPy är ett idealiskt deterministiskt verktyg för att validera den matematiska produktionen av AI. Kraftfullaste arbetsflödet: strategi och beskrivning till AI, precision till SymPy. Fråga AI om SymPy-kod, men se till att köra utgången själv - så att AI:n antar att koden inte är validering. Om resultaten inte matchar, lita på SymPy och låt AI:n hitta felet. Korskontrollera identiteter med simplify(difference) == 0 och integraler med diff.

Applikationsuppgift

Välj en integral, en ekvationslösning och en uttrycksförenkling (tre separata problem). Låt AI:n skriva lösningen manuellt för var och en och sedan SymPy-koden. Kör koderna i en riktig Python-miljö (lokal installation eller online-runner). Jämför SymPy-utgångar med AI:s manuella resultat. Försök att hitta minst en avvikelse; Om du hittar det, låt AI:n hitta sitt misstag. Notera processen.

checklista

  • [ ] Jag fick både AI-lösningen och SymPy-koden för varje problem.
  • [ ] Jag körde SymPy-koden i en riktig Python-miljö.
  • [ ] Jag jämförde YZ manuella resultat med SymPy-utgången.
  • [ ] Jag krysskontrollerade derivatan/integralens invers med SymPy.
  • [ ] Jag lade till domänen och antaganden (positiva/verkliga) manuellt.
  • [ ] I tvisten litade jag på SymPy och fick AI att hitta sitt misstag.