Pelnas:
- Gebėjimas atskirti simbolinį ir skaitinį skaičiavimą ir kiekvienai problemai pasirinkti tinkamą įrankį (SymPy arba NumPy/SciPy)
- Gebėjimas skaityti ir suprasti skaitmeninį dirbtinio intelekto sukurtą kodą, paleisti jį pačiam ir patikrinti jį atlikdamas sveiko proto testą su žinoma įvestimi.
- Suprasti slankiojo kablelio skaičių tikslumo ribas, naudoti toleranciją vietoj tikslios lygybės ir valdyti pradinio spėjimo įtaką skaitiniams metodams.
Simbolinis skaičiavimas pateikia tikslią integralo arba lygties formulę; Tačiau daugumos praktinių matematikos problemų negalima išspręsti uždara formule. Čia atsiranda skaitinis skaičiavimas: apytikslis skaitinis rezultatas norimu tikslumu, o ne tiksli formulė. Integralo reikšmės suradimas iki 0,001 tikslumo, lygties šaknies apskaičiavimas iki dešimtainės aproksimacijos, statistikos ištraukimas iš duomenų rinkinio – visa tai yra skaitiniai skaičiavimai. „Python“ tam naudojami įrankiai yra „NumPy“ (skaitiniai masyvai ir matematika) ir „SciPy“ (mokslinis skaičiavimas) bibliotekos. Šiame skyriuje išmoksite naudoti AI kaip asistentą, kuris generuoja Python kodą skaitiniams skaičiavimams ir patikrinsite kodo teisingumą.
Kritinis apibrėžimas: slankiojo kablelio skaičius yra formatas, kuriuo kompiuteris saugo dešimtainius skaičius ribotu tikslumu. Štai kodėl kompiuterinėje aritmetikoje 0,1 + 0,2 gali pasirodyti 0,30000000000000004, o ne tiksliai 0,3. Tai nėra klaida, tai yra skaitinio skaičiavimo prigimtis, tačiau jei to nežinosite, bus gauti neteisingi rezultatai. Skaičiuojant skaitmenimis, dirbama su „pakankamai artima“, o ne „tikslia lygybe“.
Simbolinis ar skaitinis? Tinkamo įrankio pasirinkimas
Būsena
Simbolinis (SymPy)
Skaitinis (NumPy / SciPy)
Yra uždara formulė
pageidaujama
nebūtina
Nėra formulės / per sudėtinga
negali išspręsti
pageidaujama
Reikalingas visiškas tikslumas
Taip
apytiksliai
Dideli duomenys / daugiafunkcis apdorojimas
lėtas
labai greitai
Pakanka rezultato su kableliu
—
tinkamas
Geras praktikas naudoja abu: jei įmanoma, sprendžia simboliškai, jei ne, skaito ir, kai tik įmanoma, patikrina vieną su kitu.
Žingsnis po žingsnio: saugus skaitinis skaičiavimas naudojant AI
1. Nustatykite problemą ir jautrumą. "Kiek skaitmenų po kablelio?" ir "kokiame diapazone?" Paaiškinkite savo klausimus.
2. Įrašykite kodą į AI, o ne išveskite. Prisiminkite iš 4 skyriaus: nedarykite AI nuspėjamojo kodo išvesties. Jūs paleidžiate kodą.
3. Perskaitykite ir supraskite kodą. Suprasti sugeneruotą kodą eilutė po eilutės. Tinkama biblioteka, tinkama funkcija, tinkami parametrai? Neleiskite kodo, kurio nesuprantate.
4. Išbandykite žinomą situaciją. Išbandykite kodą naudodami paprastą įvestį, į kurią jau žinote atsakymą. Pavyzdžiui, sin(0)=0, kaip žinomo integralo reikšmė. Jei kodas duos teisingai, juo labiau pasitikėsite.
5. Kryžminis patikrinimas simboliškai arba rankiniu būdu. Jei įmanoma, patvirtinkite tą patį rezultatą naudodami SymPy arba rankiniu būdu.
6. Saugokitės slankiojo kablelio spąstų. Vietoj griežtos lygybės su == naudokite leistinus nuokrypius, pvz., abs(a - b) < 1e-9.
Patarimas: visada išbandykite skaitmeninį kodą „su žinomu atsakymu“. Jei parašėte šaknies ieškiklį, pirmiausia pritaikykite ją lygčiai su žinoma šaknimi (x=±2), pvz., x²−4=0. Jei kodas nustato, kad tai teisinga, labiau tikėtina, kad jis bus patikimas taikant lygtis, kurių nežinote. Šis „sveikatingumo patikrinimas“ yra pigiausias patikrinimas.
Skaitinio skaičiavimo spąstai: konvergencija ir klaidų kaupimasis.
Dauguma skaitinių metodų veikia iteratyviai: pradedant nuo pradinio spėjimo ir palaipsniui artėjant prie tikrojo atsakymo. Šis suartėjimo procesas vadinamas konvergencija. Tačiau ne kiekvienas iteracinis metodas visada sutampa; kai kurie skiriasi (nutolsta nuo rezultato) arba suartėja su neteisinga verte. Jei AI sukurtas kodas netikrina, ar metodas sutampa, jis gali tyliai pateikti neteisingą skaičių. Taigi vien todėl, kad skaitinis rezultatas „sudarė skaičių“, nereiškia, kad jis yra tiesa; Taip pat būtina patvirtinti, kad šis skaičius iš tikrųjų sutampa su ieškomu sprendimu.
Antroji subtilybė yra klaidų kaupimas. Ilgoje skaičiavimų grandinėje mažos slankiojo kablelio apvalinimo paklaidos kiekviename žingsnyje gali kauptis ir tapti didesnės; Ypač kai imate dviejų labai artimų didelių skaičių skirtumą (tai vadinama katastrofišku atšaukimu), gali būti prarasti reikšmingi rezultato skaitmenys. Dirbtinis intelektas ne visada numato tokias skaitmeninio stabilumo problemas. Atliekant kritinius skaičiavimus, perskaičiavus ir palyginus rezultatą kitu metodu arba didesniu tikslumu, atskleidžiamas paslėptas klaidų kaupimasis.
Dėmesio: skaitinio metodo „rezultato davimas“ ir „suartėjimas prie teisingo rezultato“ yra du skirtingi dalykai. Įsitikinkite, kad kode yra konvergencijos patikra (pvz., ar skirtumas tarp dviejų vienas po kito einančių žingsnių tampa pakankamai mažas); Jei jo nėra, dirbtinis intelektas pridėkite šią valdiklį.
trys mini dėklai
1 atvejis – neteisingas funkcijos pasirinkimas. Studentas paprašė AI kodo, kad surastų funkcijos šaknį. AI naudojo scipy.optimize.fsolve, bet pasirinko netinkamą pradinį spėjimą ir suartėjo su netinkama šaknimi. Mokinys pirmiausia išnagrinėjo funkciją, nubraižydamas ją grafike (žr. vizualizacijos vienetą), teisingai spėjo ir rado tikrąją šaknį. Pamoka: skaitiniai šaknų ieškikliai jautriai reaguoja į pradinį tašką.
2 atvejis – slankiojo kablelio gaudyklė. Inžinierius paleido AI kodą, kuris parašė, jei 0,1 + 0,2 == 0,3: ir suprato, kad sąlyga niekada nebuvo teisinga. AI nepaisė slankiojo kablelio tikslumo. Kodas pataisytas naudojant abs((0,1+0,2) - 0,3) < 1e-9. 1e-9 reiškia „nuo dešimties iki minus devyni“, tai labai maža paklaida.
3 atvejis – sveiko proto patikrinimas užfiksavo klaidą. Mokytojas gavo kodą iš scipy.integrate.quad, kuris skaitiniu būdu apskaičiuoja apibrėžtąjį integralą. Pirmiausia jis jį išbandė su žinomu integralu, pvz., ∫₀¹ x dx = 0,5; kodas davė 0,5. Tada jis apskaičiavo tikrąjį integralą ir patvirtino rezultatą su SymPy. Jis pasitikėjo, kai du nepriklausomi metodai davė tą patį rezultatą. Bendras laikas: 6 minutės.
Keturi kopijuojami šablonai
1) Skaitinio sąskaitos kodo užklausa:
Parašykite Python kodą, kuris išsprendžia šią problemą SKAIČIAU: [problema]. Naudokite NumPy/SciPy. Jautrumas: [pvz. 6 po kablelio]. Aš paleisiu kodą; numatant produkciją. Komentarų eilutėje trumpai paaiškinkite, kurią funkciją pasirinkote ir kodėl.
2) Pridėkite sveiko proto testą:
Prie šio kodo pridėkite sveiko proto patikrinimą, kad patikrintumėte jo TEISINGUMĄ prieš jį paleisdami: pabandykite įvesdami paprastą įvestį, kai atsakymas jau žinomas (pvz., šaknis ±2, jei x²-4=0) ir patikrinkite, ar jis duoda laukiamą rezultatą.Kodas: [čia]
3) Simbolinis ir skaitinis kryžminis patikrinimas:
Parašykite kodą, kuris išsprendžia šį integralą / lygtį su SymPy (simbolinis), IR SciPy (skaitinis): [problema]. Išspausdinkite du rezultatus, kad galėčiau juos palyginti. Pridėkite eilutę, kuri tikrina skirtumus su abs().
4) slankiojo kablelio apsauga:
Peržiūrėkite slankiojo kablelio skaičių palyginimus šiame kode. Jei yra griežtos „==“ lygybės, pakeiskite jas atitinkama tolerancija (abs(a-b) < 1e-9) ir paaiškinkite, kodėl. Kodas: [čia]
Silpnas raginimas / Stiprus raginimas
Silpnas: "Raskite šios lygties šaknį: x³ − 2x − 5 = 0. Parašykite atsakymą."
Rezultatas: AI tinka dešimtainiam skaičiui (pvz., "2.0946..."). Tai gali būti tiesa arba ne; Jis nebuvo patikrintas, nes nebuvo paleistas.
Galingas: "Parašykite kodą, kuris suras tikrąją lygties šaknį x³ − 2x − 5 = 0 su SciPy. Pradiniam spėjimui pirmiausia nurodykite intervalą, kuriame funkcija keičia ženklą. Pridėkite eilutę, kuri pakeičia šaknį ir patikrins, ar rezultatas yra ~0. Pamatysiu išvestį."
Rezultatas: vykdomas kodas, tikslus pradinis spėjimas, įmontuotos maišos. Šaknies pagrįstumas įrodytas.
Dažnos klaidos
- Pasitikėjimas rezultatu nepaleidžiant kodo. Skaitmeninė išvestis, kurią AI „numato“, nėra patvirtinimas.
- Tikrinama slankiojo kablelio lygybė su „==“. Tai beveik visada neteisinga; Naudokite toleranciją.
- Prasta pradinė prognozė. Skaitinės šaknies/optimizavimo metodai yra jautrūs pradiniam taškui; Jis gali susilieti į netinkamą šaknį.
- Neišreiškia jautrumo. – Kiek žingsnių? Jei neprašoma, rezultatas gali neatitikti poreikio.
- Nelaikantis sveiko proto testo. Taikyti kodą tikrajai problemai neišbandžius jo naudojant žinomą įvestį yra rizikinga.
- Kodo paleidimas jo nesuprasdamas. Kodas, kurio nesuprantate, gali naudoti netinkamą funkciją; suprasti kiekvieną eilutę.
Dėmesio: skaitiniai rezultatai visada yra apytiksliai. Užuot sakę „rezultatas yra būtent toks“, sakykite „būtent toks“. Inžinerinėje ar mokslinėje ataskaitoje naudojamas metodas ir tikslumas yra tikslumo dalis. Apytikslį rezultatą pateikti kaip galutinį yra klaidinga.
Apibendrinant
Skaitinis skaičiavimas duoda apytikslius, bet praktiškus rezultatus uždaviniams, kurių negalima išspręsti uždarąja formule; „Python“ jos įrankiai yra „NumPy“ ir „SciPy“. AI greitai sugeneruoja šių bibliotekų kodą, tačiau jūs turite paleisti kodą, jį perskaityti ir suprasti bei išbandyti naudodami žinomą įvestį. Būkite atsargūs su slankiojo kablelio tikslumu: naudokite toleranciją, o ne tikslią lygybę. Jei įmanoma, patikrinkite simbolinius ir skaitmeninius metodus. Sveiko proto tikrinimas ir pakeitimas yra pigiausias ir efektyviausias patikrinimas.
Taikymo užduotis
Pasirinkite užduotį, kurią sunku išspręsti naudojant uždarą formulę (pvz., šaknis x³ − 2x − 5 = 0 arba apibrėžtą neelementariojo integralo reikšmę). Tegul dirbtinis intelektas atspausdina skaitmeninį kodą ir, jei įmanoma, simbolinį-skaitinį kryžminio patikrinimo kodą su 1 ir 3 šablonais. Vykdykite kodą tikroje Python aplinkoje. Pirmiausia atlikite sveiko proto testą su žinoma įvestimi, tada išspręskite tikrąją problemą. Jei yra slankiojo kablelio palyginimas, būtinai naudokite leistinus nuokrypius. Atkreipkite dėmesį į rezultatą ir jo jautrumą.
kontrolinis sąrašas
- [ ] Nustačiau problemą ir reikalingą jautrumą.
- [ ] Perskaičiau ir supratau AI sukurtą kodą eilutė po eilutės.
- [ ] Paleidau kodą tikroje Python aplinkoje.
- [ ] Atlikau sveiko proto testą su žinoma įvestimi.
- [ ] Jei įmanoma, pridėjau simbolinį / rankinį kryžminį patikrinimą.
- [ ] Naudojau toleranciją slankiojo kablelio palyginime.