Ap/Py/Formulės tapatybės
Pilnas šios treniruotės Python kodas yra čia
Nuo matematikos prie programos
Ši tema yra skirta matematinių išraiškų užrašymo Python kalba treniruotėms. Reikia atkreipti dėmesį, kad visose programavimo kalbose išraiškų užrašai skiriasi nuo matematinio teksto: negalima praleisti daugybos veiksmo, nėra šaknies ženklo, negalima rašyti kėlimo laipsniu su ženklais ² ir ³. Atliekant bandymus, mokiniams pateikiamos įvairios matematinės išraiškos, tačiau dažnai lieka neaišku ar gerai skaičiuojama. Todėl mokiniams siūloma nagrinėti pasirinktas tapatybes, kur reikia paskaičiuoti kairę ir dešinę tapatybės puses ir jas sulyginti. Galima naudotis įvairiais šaltiniais, pvz. matematikos VBE užduotimis:
Pradėti geriausia nuo veiksmų su sveikaisiais skaičiais, nuo trumpųjų daugybos formulių. Neteisingai atlikus veiksmus gausime pranešimą "blogai". Būtent toks pranešimas pasirodo pradiniame variante, kadangi kėlimui laipsniu mokiniai dažnai pasirenka ženklą ^ kaip įprasta Excel skaičiuoklėse. Tuo tarpu Python kalboje naudojamas derinys **. Čia mokiniams galima suteikti savarankiškumo, pasirenkant su kokiomis tapatybėmis nori pasitreniruoti.
Reikia atkreipti dėmesį, kad tai nėra tapatybių įrodymas, o tik išraiškų rašymo treniruotė su pranešimais gerai ar blogai. Panaši metodika yra taikoma ir sudėtingų sistemų testavime, kai naujai sukurtos programos rezultatai yra lyginami su išbandytos programos rezultatais.
Realūs skaičiai gali būti apytiksliai
Jei atliekant veiksmus su sveikais skaičiais gauname tikslius atsakymus ir galime naudoti == operaciją, tai atlikdami veiksmus su realiais (float) skaičiais (trigonometrijos tapatybės) prie kai kurių pradinių reikšmių gauname netikslumus. Jie yra labai nedideli, konkrečiai užrašas 1.1e-16 reiškia, kad kablelį reikia perkelti 16 pozicijų į kairę, t.y. gausime skaičių, kur po kablelio bus 15 nulių! Tai yra labai mažas skaičius ir tokia paklaida realiems skaičiavimams visai netrukdo. Išbandykite trigonometrinių funkcijų skaičiavimus su matematikoje dažnai sutinkamomis reikšmėmis 30°, 45°, 60°, 90° ir patikrinkite ar teisingi atsakymai!
Demonstruojant paklaidų eliminavimą realių skaičių atveju naudojama funkcija abs(), kuri reiškia absoliutinį dydį, kadangi nėra žinoma ar gauta reikšmė bus didesnė ar mažesnė už etaloną. Formuojant sąlyginį pranešimą "gerai – blogai" vietoje sąlyginio if sakinio yra naudojamas ternarinis (trinaris) operatorius, kuris užtikrina paprastesnį užrašymą vienoje eilutėje.
Kvadratinė ir kubinė šaknys
Dažnai matematiniuose skaičiavimuose tenka traukti kvadratines ar kubines šaknis, todėl siūloma eksperimentuoti su įvairiais užrašymo būdais, tikslu suprasti apie teisingus ar klaidingus variantus.
# bandome skaičiuoti kvadratinę ir kubinę šaknį
print(9**1/2, 9**0.5) # kodėl nesutampa ??
print(27**(1/3), 27**0.3) # didinkite trejetukų skaičių
print(sqrt(1234 * 1234)) # turime gauti tą patį skaičių
Taikomieji uždaviniai
Kai mokame teisingai užrašyti matematine išraiškas, atsiveria plačios galimybės įvairių uždavinių sprendimui, tiek iš matematikos vadovėlių, tiek praktinėse situacijose. Vieną kartą teisingai užrašius matematinę išraišką, ją nesunkiai galima panaudoti, skaičiuojant funkcijos reikšmes prie įvairių argumento reikšmių. Tai yra žymiai prasmingiau nei spaudyti kalkuliatoriaus klavišus, kai tą pačią rutininę procedūrą reikia kartoti kelis kartus. Lyginant su Excel tipo skaičiuoklėmis, išraiškų užrašymas Python kalba yra žymiai paprastesnis ir vaizdingesnis.
Išspręsime 31 uždavinį iš Matematika 12, Uždavinynas, Išplėstinis kursas, 2004 (9 psl.)
Sprendimas yra paprastas - rašome funkciją, kuri skaičiuoja vandens temperatūros kitimą iki nurodyto pabaigos. Kai teisingai užbaigsite išraišką ir vykdysite programą, pamatysite jog temperatūra kildama pasiekia 100 laipsnių po 20 min. Kadangi pabaigą galima nurodyti pasirinktinai, matome kad vėliau temperatūra pradeda mažėti. Pagal reikšmių lentelę nesunkiai galima atsakyti į užduotyje keliamus klausimus.
def vandens_temp(pabaiga):
buvo = 10
for t in range(pabaiga):
T = -9/40*t # užbaikite šią išraišką pagal vadovėlio užduotį
print(f"{t:2} {T:6.2f} {T-buvo:6.2f}")
buvo = T
Reziumuojant, šią temą galima traktuoti kaip informatikos mokymo medžiagos integravimo su matematika pavyzdį. Reikia pastebėti, kad gana dažnai matematika nėra mėgstama jaunuolių, pasinėrusių į kompiuterines studijas. Todėl šios temos savarankiškumas gal suteiks postūmį atidžiau panagrinėti matematines išraiškas.