GLOBAL KNOWLEDGE ARK

Fizika · Straipsnis

Mokslinis programavimas ir atkuriami skaičiavimai

Paversti apibrėžtą fizikinių dydžių modelį nedidele patikrinta programa, išsaugoti vykdymo sąlygas ir apibrėžti, ką reiškia skaičiavimų rezultatų atitiktis.

Ankstesnis straipsnis: Mokslinių tyrimų įrašai, duomenų valdymas ir atvirasis mokslas

Grįžti į fiziką

Perskaitę galėsite

  • Nurodyti nedidelio mokslinio skaičiavimo dydžius, vienetus, įvesties sritį ir numatomą išvestį.
  • Perskaičiuoti skaitines įvesties vertes į funkcijos sąsajos reikalaujamus vienetus.
  • Perskaityti ir paleisti trumpą Python funkciją su aiškiai apibrėžta įvesties sutartimi.
  • Patikrinti programą pagal nepriklausomai išvestus atsakymus ir pasirinktus ribinius bei atmestinos įvesties atvejus.
  • Atskirti tikslią skaitinę lygybę nuo atitikties pagal nurodytą absoliutųjį ir santykinį kriterijų.
  • Užrašyti pakankamai informacijos apie vykdymą, kad jį būtų galima peržiūrėti ir pakartoti, nelaikant pakartojimo fizikinio pagrįstumo įrodymu.
01

Pirmiausia apibrėžkite modelį

Mokslinis programavimas išreiškia modelį ar analizę operacijomis, kurias gali atlikti kompiuteris. Pradėkite nuo klausimo ir dydžių. Mūsų sukurtas mokomasis modelis yra stačiakampis, kurio kraštinių ilgiai yra L ir W, o plotas A = L W. L ir W yra ilgiai metrais, o A – plotas kvadratiniais metrais. Šios vertės yra tikslūs, iš anksto nustatyti matematinio modelio įvesties duomenys, o ne vertinamo fizinio objekto matavimų rezultatai.

Pasirinkite vietinę įvesties sritį: 0 ≤ L ≤ 10 m ir 0 ≤ W ≤ 10 m. Nulis leidžiamas kaip išsigimęs matematinis ribinis atvejis, kurio plotas lygus nuliui. Viršutinė riba yra mokomosios programos apribojimas, o ne visuotinė fizikinė stačiakampių riba. Programa turi atmesti šios sutarties neatitinkančius įvesties duomenis, o ne tyliai suteikti jiems nenumatytą prasmę.

Atskirkite fizikinius dydžius nuo jų skaitinių išraiškų. Toliau pateiktoje programoje kompiuterio saugoma vertė, pavyzdžiui, 2.5, savaime neturi metro vieneto. Mūsų sąsaja reikalauja skaitinių verčių metrais ir grąžina skaitinę vertę kvadratiniais metrais. Pavadinimai ir dokumentacija perteikia šią sutartį, tačiau negali patvirtinti, kad funkciją kviečianti programa iš tiesų teisingai perskaičiavo įvesties duomenis.

Keturios mokslinio skaičiavimo patikros

  1. 1. Ar dydžiai pavaizduoti teisingai?

    250 cm ir 125 cm tampa skaitinėmis įvestimis metrais: 2.5 ir 1.25. Jų sandauga reiškia 3.125 m². Vien įvesties vertė negali įrodyti, kad funkciją iškvietęs kodas naudojo metrus.

  2. 2. Ar kodo rezultatas sutampa su nepriklausomai gautu atsakymu?

    Teisingas pagrindinio atvejo plotas yra 3.125 m². Padvigubinta taisyklė duoda 6.25 m², bet vis tiek išlaiko pasirinktas simetrijos ir nulio patikras. Skirtingais testais tikrinamos skirtingos klaidos.

  3. 3. Ką reiškia sutapimas?

    Kai atskaitos vertė yra 3.125 m², absoliutusis slenkstis – 0.02 m², o santykinis koeficientas – 0.01, pateikta tikrinama 3.15 m² vertė atitinka taisyklę, o 3.20 m² – neatitinka. Šios taisyklės atitikimas nėra nei tiksli lygybė, nei fizikinis įrodymas.

  4. 4. Ar galima patikrinti vykdymą?

    Susiekite tikslią išeities kodo redakciją, įvesties vienetus ir jų perskaičiavimus, komandą ir vykdymo tvarką, interpretatorių ir reikšmingą aplinką, išvesties interpretaciją ir testus. Kartojant tą pačią klaidingą taisyklę, galima pakartotinai gauti tą patį klaidingą atsakymą.

Kortelėse apibendrinamas pateiktas stačiakampio modelis ir palyginimo taisyklė. Įvestys ir siūlomos ploto vertės yra mokymo tikslais parinktos reikšmės, o ne matavimai ar stebėti skirtumai tarp programos vykdymų.
02

Aiškiai perskaičiuokite įvesties vienetus

Pateikite L = 250 cm ir W = 125 cm. Kadangi 1 m = 100 cm, šių ilgių skaitinės vertės metrais yra 250/100 = 2.5 ir 125/100 = 1.25. Fizikinių dydžių lygtis duoda A = (2.5 m)(1.25 m) = 3.125 m². Padauginę pradines vertes centimetrais, gauname 31250 cm² – tą patį plotą, nes 1 m² = 10000 cm².

Perdavus skaičius 250 ir 125 be perskaičiavimo sąsajai, kuri tikisi skaitinių verčių metrais, jie reikštų kitokius ilgius, nepatenkančius į mūsų vietinę apibrėžimo sritį. Toliau pateikta funkcija su įvesties patikromis juos atmeta. Dauginant be patikrų ir sandaugai 31250 priskyrus m² vienetą, šis nurodytas plotas būtų padidintas 10000 kartų. Klaida slypėtų fizikinio dydžio interpretacijoje, net jei pats dauginimas būtų atliktas įprastai.

Kartu su programos vykdymo duomenimis išsaugokite įvesties vienetą, perskaičiavimą ir išvesties vienetą. Kiekvieną įvestį perskaičiuokite vieną kartą, aiškiai nurodytame etape. Patikra, ar vertė yra skaičius arba ar ji patenka tarp 0 ir 10, negali aptikti visų vienetų klaidų: pavyzdžiui, vien vertė 2 gali reikšti skaitinę vertę metrais arba neperskaičiuotą vertę centimetrais. Kad vienetai būtų teisingi, reikia ne tik patikrų kode, bet ir patikimo įvesties duomenų įrašo.

03

Apibrėžkite nedidelę aiškią funkciją

Naudokite šiuos originalius Python 3 apibrėžimus nurodyta tvarka: def reject_length(): raise ValueError("length-domain"); def valid_length(value): return (type(value) is int or type(value) is float) and 0 <= value <= 10; def area_m2(length_m, width_m): return length_m * width_m if valid_length(length_m) and valid_length(width_m) else reject_length(). Kiekvienas apibrėžimas yra viena pilna eilutė. Python leidžia paprastą funkcijos kūną rašyti toje pačioje eilutėje po dvitaškio. def apibrėžia funkciją, skliaustuose esantys vardai yra jos įvestys, o return pateikia jos rezultatą.

Predikatas valid_length grąžina loginę reikšmę, nurodančią, ar jo įvestis atitinka mūsų skaitinės įvesties reikalavimus. (type(value) is int or type(value) is float) sąmoningai priima tik reikšmes, kurių tipas tiksliai sutampa su integruotaisiais sveikųjų ir slankiojo kablelio skaičių tipais; jis nepriima loginių reikšmių, tokių kaip True, teksto, kompleksinių skaičių ir poklasių. Čia is lygina tipo objektų tapatumą, o or leidžia atitikti bet kurį iš dviejų nurodytų tipų. Tai šiam mokomajam pavyzdžiui pasirinktas sprendimas, o ne taisyklė, kad mokslinės programos turėtų atmesti visus kitus skaitinius tipus. Intervalo patikra taip pat atmeta neigiamas vertes, vertes, didesnes už 10, begalybes ir slankiojo kablelio reikšmę „ne skaičius“. Python operatorius and pirmiausia tikrina tipo sąlygą ir nevertina intervalo sąlygos, jei tipo patikra nepavyksta.

Funkcijoje area_m2 sąlyginė išraiška patikrina įvesties reikalavimus prieš įvertindama pasirinktą šaką. Dauginama tik tada, kai abi patikros sėkmingos; jei pirmoji patikra nepavyksta, and praleidžia antrąją. Atmetus įvestį, iškviečiama reject_length, kuri sukelia ValueError("length-domain") išimtį, užuot grąžinusi plotą. Kintamieji išreiškia skaitines vertes metrais, o grąžintas skaičius interpretuojamas m² vienetais. Šios integruotosios aritmetinės operacijos taiko interpretatoriaus skaičiavimo taisykles: daugelis dešimtainių slankiojo kablelio įvesčių yra apytikslės. Pasirinktos pagrindinio atvejo vertės 2.5, 1.25 ir 3.125 turi tikslias baigtines dvejetaines išraiškas; tai nereiškia, kad kiekviena priimtų slankiojo kablelio skaičių sandauga yra tiksli.

def reject_length(): raise ValueError("length-domain")
def valid_length(value): return (type(value) is int or type(value) is float) and 0 <= value <= 10
def area_m2(length_m, width_m): return length_m * width_m if valid_length(length_m) and valid_length(width_m) else reject_length()
04

Prieš pasitikėdami išvestimi, sudarykite testus

Numatomą atsakymą išveskite nepriklausomai nuo tikrinamo kodo. Pateiktam pagrindiniam atvejui įprasti aritmetiniai veiksmai su fizikiniais dydžiais duoda 3.125 m², todėl area_m2(2.5, 1.25) turėtų grąžinti skaitinę vertę 3.125. Taip pat patikrinkite sukeistas įvestis, leistiną nulinę ribą ir viršutinę ribą. Šios pasirinktos vertės tikrinamame interpretatoriuje atvaizduojamos tiksliai; šiems konkretiems numatomiems rezultatams tinka lygybės patikra.

Skirtingi testai skirti skirtingoms klaidoms aptikti. Dviejų įvesčių sukeitimas patikrina to atvejo simetriją; nulis patikrina ribą. Sąmoningai klaidinga taisyklė A_bad = 2 L W vis tiek išlaiko abi šias patikras, nors pagrindiniam atvejui grąžina 6.25 m². Todėl vien simetrija ir nulinis rezultatas nepatvirtina stačiakampio ploto formulės. Testas su žinomu atsakymu leidžia atskirti šią klaidingą realizaciją.

Testuokite ne tik priimamas, bet ir atmetamas įvestis: area_m2(-1, 1), area_m2(10.5, 1) ir area_m2(True, 1) turėtų sukelti nurodytą išimtį. Pasirinkti testai suteikia duomenų apie patikrintus atvejus, bet neįrodo visos programos veikimo teisingumo ar fizikinio pagrįstumo. Šaltinyje rekomenduojama testuoti pagal supaprastintus numatomus rezultatus ir aptiktą klaidą išsaugoti kaip regresijos testą, t. y. patikrą, kuri po pakeitimų vykdoma iš naujo, kad būtų aptiktas tos klaidos pasikartojimas.

Atrinkti tikslūs atvejai mūsų sukurtai sąsajai, kuriai pateikiamos skaitinės vertės metrais; laukiami rezultatai yra skaitinės vertės kvadratiniais metrais.
Skaitinių įvesties verčių poraLaukiamas rezultatasPatikros tikslas
(2.5, 1.25)3.125Nepriklausomai išvestas pagrindinis atsakymas
(1.25, 2.5)3.125Rezultatų sutapimas sukeitus įvesties vertes
(0, 1.25)0Leistina nulinė riba
(10, 10)100Leistina viršutinė riba
05

Aiškiai parodykite vykdymo tvarką

Norėdami atlikti visą pagrindinio atvejo skaičiavimą, įrašykite tris pirmiau pateiktus apibrėžimus į failą, pavadintą area_run.py, kiekvieną atskiroje eilutėje, tada iš eilės pridėkite šias tris eilutes: length_m = 250 / 100, width_m = 125 / 100 ir print(area_m2(length_m, width_m)). Paleiskite išsaugotą failą naudodami python area_run.py su numatytu Python 3 interpretatoriumi. Išvedamas skaičius yra 3.125; sąsaja nurodo, kad jis išreiškiamas m². Šiam pateiktam skaičiavimui nereikia jokio išorinio paketo, atsitiktinės atrankos ar matavimo duomenų rinkinio.

Funkcija yra viena vykdymo veiksmų sekos dalis. Konvertavimai, apibrėžimai ir iškvietimas turi priklausyti numatytai išsaugotai versijai. Interaktyvioje sesijoje gali likti vardų iš ankstesnio darbo; tuomet vykdant vėlesnį langelį gali būti panaudota senesnė reikšmė ar funkcija. Iš naujo paleidus visą išsaugotą veiksmų seką patikrinama, ar rodomas rezultatas nepriklauso nuo tokios likutinės būsenos. Tai neįrodo, kad kiekviena interaktyvi darbo eiga yra neatkuriama.

Interpretatoriaus versiją ir skaičiavimui svarbią aplinką užrašykite atskirai nuo pirminio kodo failo. Aplinka gali apimti programinės įrangos versijas, operacinę sistemą, aparatinę įrangą ir konfigūraciją; „The Turing Way“ paaiškina, kodėl šios sąlygos svarbios pakartotinai atliekant skaičiavimus. Straipsnyje pateikta sintaksė buvo patikrinta naudojant Python 3.12.14, o tiesiogiai peržiūrėtoje kalbos dokumentacijoje nurodoma Python 3.13.16. Tai atskiri versijų įrašai, o ne teiginys, kad visos versijos ar visi kompiuteriai veikia vienodai.

def reject_length(): raise ValueError("length-domain")
def valid_length(value): return (type(value) is int or type(value) is float) and 0 <= value <= 10
def area_m2(length_m, width_m): return length_m * width_m if valid_length(length_m) and valid_length(width_m) else reject_length()
length_m = 250 / 100
width_m = 125 / 100
print(area_m2(length_m, width_m))
06

Nurodykite skaitinio palyginimo taisyklę

Pirmiausia nurodykite, kurie išvesties rezultatai lyginami. Tiksli skaitinė lygybė, identiškas išvesties tekstas ir identiški išsaugoti bitai yra skirtingi kriterijai. Bendrame Japonijos ir Prancūzijos skaitinių skaičiavimų seminare jo kontekste aptariamas skirtumas tarp griežto atkuriamumo bitų lygmeniu ir silpnesnio skaitinio atkuriamumo. Čia apibrėžiame atskirą deterministinę baigtinių ploto reikšmių palyginimo taisyklę, neperimdami to šaltinio tikimybinio metodo ir nedarydami prielaidos, kad rezultatai sutampa visose platformose.

Tegu r yra atskaitos plotas, o z – tikrinamas plotas, abu išreikšti m². Pasirinkite absoliutųjį slenkstį α = 0.02 m² ir bedimensį santykinį koeficientą ρ = 0.01. Mūsų vietinis kriterijus yra |z − r| ≤ max(α, ρ max(|z|, |r|)). Absoliučiojo skirtumo ir abiejų dydžių išorinėje maksimumo išraiškoje vienetai yra m². Absoliutusis narys leidžia tinkamai palyginti reikšmes arti nulio. Šie slenksčiai yra šiai užduočiai sutartinai pasirinktos reikšmės, o ne matavimo neapibrėžtys, pasikliautinieji intervalai ar universalūs tikslumo reikalavimai.

Kai r = 3.125 m², o atskirai pateiktas tikrinamas plotas z = 3.15 m², pagal tiksliai sutartas dešimtaines reikšmes skirtumas yra 0.025 m², o slenkstis – 0.0315 m², todėl kriterijus tenkinamas. Kai z = 3.20 m², skirtumas yra 0.075 m², o slenkstis – 0.032 m², todėl kriterijus netenkinamas. Šios tikrinamos reikšmės iliustruoja tikrinimo priemonę; neteigiama, kad jos yra pagrindinio atvejo funkcijos išvesties rezultatai. Sėkmingas palyginimas reiškia sutapimą pagal šią nurodytą taisyklę, o ne tikslią lygybę ar įrodymą, kad kuris nors rezultatas yra fizikiniu požiūriu teisingas.

07

Išsaugokite patikrinamą vykdymo aprašą

Išsaugokite tikslią programos versiją, įvesties skaičius su jų vienetais, vienetų perskaičiavimus, vykdymo komandą ir tvarką, interpretatoriaus ir susijusių priklausomybių versijas, konfigūraciją, išvesties interpretaciją ir testų rezultatus. Šio nedidelio vykdymo atveju aiškiai užfiksuokite, kad naudojamos tik integruotos Python priemonės, nenaudojami jokie išoriniai paketai ar atsitiktiniai skaičiai. Didesnės apimties analizėms gali reikėti papildomų įvesties duomenų ir išsamesnės informacijos apie aplinką; reikalavimai priklauso nuo skaičiavimo. Šaltiniai pagrindžia skaičiavimo kilmės ir aplinkos sąlygų dokumentavimą.

Versijų valdymas fiksuoja atpažįstamas pirminio kodo versijas ir pakeitimus, kad ankstesnę programą būtų galima atkurti ir palyginti. Išsaugota versija padeda nustatyti, kuris kodas davė rezultatą. Tačiau vien ji neužfiksuoja visų nesekamų įvesties duomenų ar vykdymo nustatymų, neužtikrina, kad buvo panaudota užrašyta komanda, ir neįrodo kodo teisingumo. Kartu su versija išsaugokite vykdymo aprašą, susijusią išvestį ir patikrų rezultatus.

Kai pakeitimu ištaisoma ploto padvigubinimo klaida, išsaugokite nepriklausomai nustatytą numatomą pagrindinio atvejo atsakymą ir pakartotinai patikrinkite šį atvejį kartu su ribinių atvejų ir atmetimo patikromis. Paaiškinkite, kas pasikeitė ir kodėl ankstesnė išvestis buvo klaidinga. Jei pasikeičia priklausomybė, įvesties vienetų perskaičiavimas ar palyginimo kriterijus, užfiksuokite ir šį pakeitimą. Kitas skaitytojas turėtų galėti atskirti tikslų ankstesnės procedūros pakartojimą nuo pakeisto mokslinio skaičiavimo.

08

Atskirkite pakartojimą nuo pagrįstumo

Trys klausimai lieka atskiri: ar nurodytą procedūrą galima pakartoti, ar jos kodas įgyvendina numatytą modelį ir ar šis modelis tinkamas numatytai fizikinei situacijai? Pakartotinai gautas rezultatas padeda atsakyti į pirmąjį klausimą užfiksuotomis sąlygomis. Nepriklausomai gauti atsakymai ir kodo peržiūra padeda įvertinti įgyvendinimą. Fizikiniai duomenys ir modelio prielaidos padeda įvertinti tinkamumą. Kartojant ploto padvigubinimo taisyklę, tą patį klaidingą 6.25 m² rezultatą galima gauti neribotą skaičių kartų.

Pateikto stačiakampio matematinė formulė ir vienetų perskaičiavimai nustatyti tik šiame pavyzdyje. Nebuvo vertinti jokie fizikiniai matavimai, neapibrėžties įverčiai, nestačiakampės ribos ar medžiagos elgsena. Paprasta įvesties apsauga aptinka nurodytus sutarties pažeidimus, tačiau negali aptikti kiekvieno klaidingai pažymėto dydžio ar pagrįsti stačiakampio modelio taikymo kitai formai. Taip pat skaitinio palyginimo slenksčiai išreiškia sprendimą dėl priimtinumo, o ne mokslinės tiesos patikrą.

Kitoje mokymosi plano temoje „Slankiojo kablelio aritmetika ir skaitinis stabilumas“ nagrinėjama, kaip skaičių vaizdavimas ir algoritmai veikia skaičiavimus. Šioje pamokoje patikrinti pasirinkti tikslūs atvejai ir programos elgsena nustatytose ribose, nežadant visuotinės slankiojo kablelio skaičių lygybės. Aiškus modelis, aiškiai apibrėžta sąsaja, nepriklausomos patikros ir užfiksuotas vykdymo aprašas leidžia skaičiavimą patikrinti; atitinkamoms mokslinėms išvadoms vis tiek reikia atskirų jas pagrindžiančių duomenų.

Išnagrinėti pavyzdžiai

Perskaičiuokite vienetus ir apskaičiuokite pagrindinio atvejo plotą

Duotam stačiakampiui, kurio L = 250 cm ir W = 125 cm, pateikite sąsajos, priimančios ilgius metrais, reikalaujamas skaitines įvestis ir apskaičiuokite numatomą plotą. Kas nutinka, jei funkcijai su įvesties apsauga perduodami neperskaičiuoti skaičiai, išreikšti centimetrais?

  1. Perskaičiuokite L = (250/100)m = 2.5 m ir W = (125/100)m = 1.25 m. Jų skaitinės įvestys metrais yra 2.5 ir 1.25.
  2. Nepriklausomai apskaičiuokite A = (2.5 m)(1.25 m) = 3.125 m². Abi perskaičiuotos įvesties vertės patenka į leistiną 0–10 m intervalą.
  3. Pateiktos apibrėžtys duoda area_m2(2.5, 1.25) = 3.125. Pateikta skaitinė sąsaja šį rezultatą interpretuoja kaip 3.125 m².
  4. Pradinė įvesties pora (250, 125) pažeidžia reikšmių intervalo sutartį ir sukelia ValueError("length-domain") išimtį. Sandauga be įvesties patikros yra 31250; pagal pradines įvesties reikšmes jos teisingas matavimo vienetas yra cm², o ne m². Kadangi 1 m² = 10000 cm², 31250 cm² lygu 3.125 m².

Naudokite skaitines įvesties reikšmes metrais 2.5 ir 1.25, o grąžintą reikšmę 3.125 interpretuokite kaip išreikštą m². Įvestį tikrinanti funkcija atmeta pradinę porą (250, 125); vien sėkmingai atlikti aritmetiniai veiksmai neištaisytų priskirto klaidingo matavimo vieneto.

Parodykite, kodėl svarbus testas su žinomu atsakymu

Palyginkite stačiakampio modelį A = L W su tyčia klaidingu modeliu A_bad = 2 L W. Naudokite pagrindinę porą (2.5 m, 1.25 m), porą su sukeistomis jos reikšmėmis ir porą (0 m, 1.25 m). Kurie iš pasirinktų testų leidžia atskirti šias dvi taisykles?

  1. Pagrindinei porai stačiakampio ploto formulė duoda 3.125 m². Rezultatą dvigubinanti taisyklė duoda 2 × 3.125 m² = 6.25 m².
  2. Sukeitus pagrindinius ilgius vietomis, kiekvienos taisyklės rezultatas lieka nepakitęs. Teisinga taisyklė vis tiek duoda 3.125 m², o klaidinga – 6.25 m²; vien simetrija neleidžia pasirinkti vienos iš jų.
  3. Kai L = 0 m ir W = 1.25 m, abi taisyklės duoda 0 m². Vien ši ribinio atvejo patikra taip pat neleidžia jų atskirti.
  4. Palyginkite pagrindinio atvejo rezultatą su nepriklausomai išvesta reikšme 3.125 m². Ši patikra su žinomu atsakymu atmeta rezultatą dvigubinančią taisyklę. Taisydami realizaciją, išsaugokite šį atvejį, tada pakartokite kitas patikras kaip duomenis apie atitinkamus jų atvejus.

Nepriklausomai nustatytas tikėtinas pagrindinio atvejo atsakymas leidžia atskirti 3.125 m² nuo klaidingos reikšmės 6.25 m². Abi taisyklės išlaiko ir simetrijos, ir nulinio ribinio atvejo patikras, todėl vien šios patikros negali patvirtinti teisingumo.

Taikykite nurodytą plotų palyginimo taisyklę

Šias dešimtaines ploto reikšmes laikykite tiksliomis palyginimo užduoties sąlygomis. Kai atskaitos reikšmė r = 3.125 m², α = 0.02 m² ir ρ = 0.01, taikykite taisyklę |z − r| ≤ max(α, ρ max(|z|, |r|)) reikšmėms z = 3.15 m² ir z = 3.20 m². Tai pateiktos tikrinamos reikšmės, o ne stebėti funkcijos rezultatai.

  1. Kai z = 3.15 m², skirtumas yra |3.15 − 3.125| m² = 0.025 m². Didesnė absoliučioji ploto vertė yra 3.15 m².
  2. Santykinis dėmuo yra 0.01 × 3.15 m² = 0.0315 m². Didesnė iš verčių 0.02 m² ir 0.0315 m² yra 0.0315 m², o 0.025 m² ≤ 0.0315 m², todėl ši tikrinama vertė atitinka kriterijų.
  3. Kai z = 3.20 m², skirtumas yra 0.075 m². Slenkstis yra max(0.02, 0.01 × 3.20) m² = 0.032 m², o 0.075 m² > 0.032 m², todėl ši tikrinama vertė neatitinka kriterijaus.
  4. Kiekvienas skirtumas ir slenkstis yra ploto dydis; ρ yra bedimensis. Pirmuoju atveju kriterijaus tenkinimas reiškia sutapimą pagal pasirinktą taisyklę, nors skaitinės vertės nėra lygios. Nė vienas sprendimas nenustato matavimo neapibrėžties, teisingumo tikimybės ar atskaitos vertės fizikinio pagrįstumo.

Tikrinama 3.15 m² vertė atitinka nurodytą kriterijų; tikrinama 3.20 m² vertė jo neatitinka. Išvada taikoma tik šioms pateiktoms vertėms ir nurodytai deterministinei palyginimo taisyklei.

Pabandykite patys

  1. Naujam sąlygoje apibrėžtam stačiakampiui, kurio L = 75 cm ir W = 50 cm, nurodykite pateiktos funkcijos skaitines įvesties vertes metrais ir tikėtiną išvestį, įskaitant jos fizikinį vienetą.

    Rodyti atsakymą ir paaiškinimą

    Naudokite 0.75 ir 0.5; tikėtina skaitinė išvestis yra 0.375, interpretuojama kaip 0.375 m².

    Abi vertes centimetrais padalijus iš 100, gaunamos vertės metrais. Jų sandauga yra (0.75 m)(0.5 m) = 0.375 m². Abi vertės priklauso leidžiamam intervalui, o šios pasirinktos trupmenos tikrintame interpretatoriuje turi tikslias baigtines dvejetaines išraiškas.

  2. Remdamiesi tiksliai pateiktomis apibrėžtimis, suklasifikuokite area_m2(0, 10), area_m2(10.5, 1) ir area_m2(True, 1). Ar loginės reikšmės atmetimas reiškia, kad kiekviena mokslinė programa turi atmesti visus kitus skaitinius tipus?

    Rodyti atsakymą ir paaiškinimą

    Pirmasis grąžina 0. Antrasis ir trečiasis sukelia ValueError("length-domain") išimtį. Reikalavimas, kad tipas būtų tiksliai nurodytas, yra šios pamokos vietinė sutartis, o ne visuotinis mokslinio programavimo reikalavimas.

    Nulis ir 10 yra leidžiamos ribinės vertės. Vertė 10.5 viršija skaitinio intervalo ribą, o True yra integruoto loginio tipo, o ne tiksliai int arba float tipo, kurio čia reikalaujama. Kitose sąsajose galima sąmoningai priimti kitus tipus, jei apibrėžta jų elgsena ir dydžiai.

  3. Klaidinga taisyklė A_bad = 2 L W grąžina 0 m², kai įvesties ilgis lygus nuliui, ir duoda tą patį rezultatą sukeitus jos įvestis vietomis. Kai L = 0.75 m ir W = 0.5 m, nurodykite teisingą ir klaidingą išvestis. Ar dvi sėkmingos savybių patikros įrodė, kad taisyklė teisinga?

    Rodyti atsakymą ir paaiškinimą

    Teisingas plotas yra 0.375 m², o pagal dvigubinimo taisyklę gaunama 0.75 m². Sėkmingos nulinės reikšmės ir simetrijos patikros neįrodė rezultato teisingumo.

    Pradinis modelis nepriklausomai duoda A = L W. Padauginus šią išraišką iš 2, išsaugoma nulinė reikšmė ir simetrija, tačiau nenulinis rezultatas pasikeičia. Atvejis su žinomu teisingu atsakymu aptinka šią konkrečią klaidą; tos pačios patikros neaprėpia visų galimų klaidų.

  4. Taikykite tą pačią baigtinių ploto verčių palyginimo taisyklę, kai atskaitos vertė r = 0 m², α = 0.02 m² ir ρ = 0.01. Pateiktas tikrinamas vertes z = 0.015 m² ir z = 0.03 m² laikykite tiksliomis. Kuri atitinka kriterijų?

    Rodyti atsakymą ir paaiškinimą

    Tikrinama 0.015 m² vertė atitinka kriterijų; 0.03 m² vertė jo neatitinka.

    Pirmosios vertės skirtumas yra 0.015 m², o santykinis narys – 0.00015 m², todėl slenkstis yra 0.02 m². Antrosios vertės skirtumas yra 0.03 m², o santykinis narys – 0.0003 m², tad slenkstis lieka toks pat: 0.02 m². Absoliutusis narys leidžia taikyti nurodytą kriterijų, kai atskaitos vertė lygi nuliui; jis nenustato matavimo neapibrėžties.

  5. Įraše saugomas tik skaičius 3.125 ir vardas area_run.py. Nurodykite keturias trūkstamos informacijos rūšis, reikalingas šiam konkrečiam skaičiavimui patikrinti. Ar išsaugojus vien failo vardą galima tiksliai nustatyti, kuri programa buvo naudota?

    Rodyti atsakymą ir paaiškinimą

    Trūksta tikslios pirminio kodo versijos, įvesties verčių su vienetais ir perskaičiavimais, informacijos apie interpretatorių ir aplinką, taip pat vykdymo komandos ir veiksmų sekos su išvesties vienetais bei patikrų rezultatais. Vien failo vardas neleidžia nustatyti tikslios pirminio kodo versijos.

    Faile tuo pačiu vardu gali būti skirtingų apibrėžčių ar perskaičiavimų. Patikrinama skaičiavimo eiga susieja skaitinę išvestį su išsaugotu pirminiu kodu, nustatytu įvesties aiškinimu, vykdymo sąlygomis ir testais. Kokia papildoma informacija apie aplinką ar įvestį svarbi, priklauso nuo programos.

  6. Du atskiri programos, skaičiuojančios dvigubą plotą, paleidimai su pagrindiniais įvesties duomenimis grąžina 6.25. Palyginus failus taip pat matyti, kad išvesties tekstas identiškas. Kas nustatyta, o kas tebėra klaidinga arba neįvertinta?

    Rodyti atsakymą ir paaiškinimą

    Tomis sąlygomis abiejų užfiksuotų paleidimų išvesties tekstas sutampa. Dvigubinimo taisyklė vis tiek duoda klaidingą plotą pagal nurodytą stačiakampio modelį, o joks realus fizinis objektas ar matavimo neapibrėžtis nebuvo įvertinti.

    Kartojimas ir identiškas tekstas nepaverčia A_bad = 2 L W į A = L W. Nepriklausomai išvestas pagrindinio atvejo plotas yra 3.125 m². Be pakartotinio paleidimo įrašo, įgyvendinimui kode ir modelio fizikiniam tinkamumui reikia atskirų patikrų ir pagrindžiančių duomenų.

Ką verta įsidėmėti

  • Prieš apibrėždami skaitinę įvestį ir išvestį, nurodykite fizikinius dydžius ir modelį.
  • Vien skaičius nepatvirtina, koks yra jo matavimo vienetas; aiškiai nurodykite vienetų perskaičiavimus ir dydžio interpretaciją.
  • Nedidelės funkcijos apibrėžimo sritis ir atmetamos įvestys yra jos sąsajos dalis.
  • Nepriklausomai gauti žinomi atsakymai ir skirtingos pasirinktos patikros atskleidžia skirtingas klaidas; vien sėkmingai išlaikyti testai nėra universalus įrodymas.
  • Nurodykite lygybės arba skaitinio sutapimo kriterijų, įskaitant matavimo vienetus ir elgseną arti nulio.
  • Išsaugokite tikslų pirminį kodą ir vykdymo sąlygas, o atkuriamą rezultatą atskirkite nuo teisingos realizacijos ir modelio fizikinio tinkamumo.

Šaltiniai

Šio straipsnio sąvokų ir mokymo būdų šaltiniai.

  1. Best Practices for Scientific ComputingGreg Wilson and colleaguesMokslinis straipsnisjournals.plos.orgSkaityti šaltinį
  2. 4. More Control Flow Tools — Python 3.13.16 documentationPython documentation contributors; Python Software FoundationŽinynasdocs.python.orgSkaityti šaltinį
  3. Reproducible EnvironmentsThe Turing Way CommunityMokomoji medžiagabook.the-turing-way.orgSkaityti šaltinį
  4. Overview of minimal-precision computing and (weak)-numerical reproducibilityToshiyuki Imamura and collaborators; RIKEN, University of Tsukuba and Sorbonne University/CNRSMokomoji medžiaga · PDFr-ccs.riken.jpSkaityti šaltinį