Aruanne algab pealkirjaga, selle järel tuleb ära märkida töö autor ja töö tegemise
kuupäev. Aruanne tuleb esitada HTML või PDF kujul, failinimi
formaadis pr#_eesnimi_perenimi_ver#
(parandustega töö esitamisel
uuendada versiooninumbrit).
Sissejuhatuses tuleb sõnastada füüsikaline probleem ja selle lahendamise idee, näiteks:
Töö eesmärk on eksperimentaalselt määrata keha inertsmoment, kasutades …, ja võrrelda tulemust sellega, mida saab arvutada keha massi, kuju ja mõõtmete kaudu. Katsekehana kasutame …, sest see võimaldab ….
Selles alapunktis tuleks formuleerida kogu füüsika, mis on vajalik katse mõistmiseks ja tulemuste analüüsimiseks. Spetsiifilise teabe korral (näiteks valem, mis antud ilma tuletuskäiguta) tuleks viidata ka allikatele. Viited võib asetada teksti sisse ja veebimaterjalidele võib viidata hüperlingi kujul. Üldtuntud õpikuteadmisi (nt Newtoni seadused, ideaalse gaasi olekuvõrrand, jne) võib kasutada ilma viitamata.
Halba ei tee lihtne joonis/katseskeem, kus saab ära näidata füüsikalised suurused (mõjuvad jõud, pikkusmõõdud jms), mida valemites kasutatakse. Sellised joonised saab teha lihtsate vabavaraliste vahenditega, nagu Google Drawings või LibreOffice Draw. Jupyteri märkmeraamatu jaoks tuleb joonis eksportida SVG või PNG formaadis ja kuvada märkmeraamatu tekstilahtris umbes seda laadi koodiga:
<img src="inertsmoment.png" style="width: 10em; float: right;">
Valemite jms matemaatilise sisu kujundamise reeglid:
LaTeX'is (jm valemiredaktorites) sisestatud muutujad ja numbrid tuvastatakse automaatselt ja kujundatakse vastavalt. Ülejäänud reegleid tuleb siiski ise järgida, nt kirjutada $sin(x)$ asemel $\sin(x)$ jne.
Siia tuleks katseseadme sisuline kirjeldus. Keskenduda tuleks infole, mis on oluline katse väljatulemise või mõõtetäpsuse seisukohalt. Ära tuleks mainida konkreetsed mõõtevahendid, nende täpsus jm relevantsed omadused, näiteks:
Temperatuurianduriks oli Vernier Stainless Steel Temperature Probe, lahutusvõime 0,1 °C, täpsus ±0,5 °C, reageerimisaeg 10 s.
Võib tuua ka foto eksperimendiseadmest või selle mõnest olulisest osast.
Sõltuvalt olukorrast võivad tulemused ja analüüs olla eraldi või koos. Igasugune arvutamine (Pythonis) toimub selle alapunkti raamides. Esmalt tasuks välja tuua otsesed mõõtmistulemused, sh käsitsi mõõdetud või tabeliandmed koos määramatustega (nt keha mass, aine erisoojus, fundamentaalkonstandid, jne). Viimased võib sisestada kohe (kommenteeritud) arvutuskoodi kujul ja jooksvalt teostada lihtsamad arvutused:
pikkus = 80 # cm
kõrgus = np.array((5, 11, 19, 28, 39)) # cm
nurk = np.arccos(1 - kõrgus / pikkus)
print('Kõrgus (cm) Nurk (°)')
print('-' * 21)
for k, n in zip(kõrgus, nurk):
print(f'{k:11.1f} {n/deg:8.2f}')
Kõrgus (cm) Nurk (°) --------------------- 5.0 20.36 11.0 30.40 19.0 40.31 28.0 49.46 39.0 59.17
Järgneb füüsikaliste mudelite ja hüpoteeside kontrollimine, tulemuste mõtestamine ja järelduste tegemine. Tulemuste ja analüüsi illustreerimisel on oluline roll graafikutel:
Et ei kannataks aruande kui terviku loetavus ja ülevaatlikkus, võiks tehnilisema töö (faili laadimine ja töötlemine, graafiku genereerimine jms) delegeerida alamprogrammidele (funktsioonidele), mis on paigutatud lisasse. See on eriti relevantne, kui on mõõdetud mitu ühesugust laadi andmeseeriat, nii et vastavat alamprogrammi läheb korduvalt vaja. Alamprogramm tuleb siis varustada sobivate parameetritega (faili nimi jm).
kiirendus = arvuta_kiirendus('katse_1.txt', (15, 65), (0.1, 1.1))
kiirendus = -1.8770 ± 0.0015 m/s^2
Põhitekstis tuleb siiski selgitada arvutuste/andmetöötluse loogikat koos vajalike valemitega.
Enamike tööde puhul on lubatav kasutada paketti uncertainties
, mis
oluliselt lihtsustab määramatuse leidmist:
kiirendus = ufloat(1.8770, 0.0015) # m/s^2, 0.0015 on standardhälve
mass = ufloat(0.06837, 0.00005 / sqrt(3)) # kg, 0.00005 on piirviga
jõud = mass * kiirendus
print(f'jõud = {jõud.n:.4f} ± {1.96 * jõud.s:.4f} N (95%)')
jõud = 0.1283 ± 0.0002 N (95%)
Siia tuleks kokkuvõtvalt kirja panna, mida tehti, mida saadi ja mida järeldati, sh välja tuua olulised arvulised tulemused koos mõõtemääramatustega.
Lisas võib vajadusel näidata täiendavaid andmeid, graafikuid või pilte. Siia võib paigutada ka "ebahuvitava" osa Pythoni koodist ehk arvutuste "köögipoole". Alustades vajalike moodulite importimise ja seadistamisega:
import numpy as np
from matplotlib.pyplot import *
from pandas import read_csv
from uncertainties import ufloat
from uncertainties.umath import *
style.use({
'figure.dpi': 120,
...
})
ja lõpetades funktsioonidega, mida kasutatakse andmetöötluses või graafikute tekitamisel:
def laadi_katse(fail, read, veerud=(0,1)):
esimene, viimane = read
return read_csv(fail,
skiprows = esimene - 1,
nrows = viimane - esimene + 1,
decimal = ',',
delimiter = '\t',
usecols = veerud,
dtype = float,
header = None).values
def arvuta_kiirendus(fail, read, ajavahemik):
aeg, kaugus = laadi_katse(fail, read)
algus, lõpp = ajavahemik
valitud = (aeg >= algus) & (aeg <= lõpp)
t = aeg[valitud]
x = kaugus[valitud]
p, cov = np.polyfit(t, x, 2, cov=True)
u = np.sqrt(np.diag(cov))
kiirendus = ufloat(2 * p[0], 2 * u[0])
print(f'kiirendus = {kiirendus.n:.4f} ± {kiirendus.s:.4f} m/s^2')
figure()
plot(aeg, kaugus, 'r.')
plot(t, np.polyval(p, t), 'b-')
xlabel('Aeg (s)')
ylabel('Kaugus (m)')
axvspan(algus, lõpp, facecolor='r', alpha=0.1)
grid()
show()
return kiirendus
Juhendi koostas Valter Kiisk
Viimati muudetud 19.07.2024