Opozorilo: vse datoteke omenjene v zgledih lahko snamete kar v paketu primeri.tgz.
Opis namisljenega poizkusa (enakomerno pospeseno gibanje):
Klado polozimo na vodoravno podlago in jo povezemo z lahko vrvico preko
lahkega klescka s klado, ki prosto visi. Sistemu klade in utezi bomo kar
rekli telo in njegovo maso oznacili z m.
Na tak sistem deluje ob zanemarljivih uporih (lepenje, trenje, zracni
upor) rezultanta sil, ki je kar enaka sili teze klade. Oznacili jo bomo
kar s F in rekli, da je to konstantna rezultanta
sil na nas sistem - telo. Iz teh dveh podatkov dolocimo pospesek a.
Signale belezimo recimo s pomocjo fotocelice in rez na kolescku. Iz premera
kolescka d lahko dolocimo obseg in s pomocjo stevila rez r
potem premik kolescka in s tem tudi telesa ds.
Rabimo se stevilo meritev n.
Pravo meritev nadomestimo z enostavno simulacijo, ki nam poda datoteko 'meritev'. Kratek program v C-ju (simulacija.c) prevedemo s pomocjo prevajalnika gcc:
ali pa kar snamemo ze prevedeno kodo za LINUX simulacija, katera nam nadomesti meritve namisljenega poizkusa.
# gcc -lm -o simulacija simulacija.c
Primer poizkusa:
Tako dobimo datoteko 1.dat. Generirajmo se stiri poizkuse z enakimi podatki, spreminjajmo le rezultanto zunanjih sil in ime datoteke. V praksi to delamo tako, da premescamo del mase med utezjo in klado. Za drugi primer dajmo rezultanto sil 0.15 N in ime datoteke 2.dat, za tretji primer 0.2 N in 3.dat, za cetrti 0.25 N in 4.dat ter peti 0.3 N in 5.dat. V vsaki datoteki je najprej 12 vrstic uvodnega besedila, nato 7 vrstic vhodnih podatkov, temu sledi prosta vrstica, nato meritve - vsaka meritev v eno vrstico, v nasem primeru 200 vrstic. Na koncu sta prosta vrstica in zakljucna vrstica z besedilom "Konec datoteke.". Same meritve so simulirane kot da bi merili cas med posameznimi signali, katere zazna fotocelica s pomocjo rez: na zacetku sistem miruje, ko pride prvi signal, sta se obod kolescka in vrvica, ob upostevanju nepodrsavanja, premaknila za znano razdaljo (v nasem primeru ds=0.628 mm). Tako i-temu signalu pripada pot s=i*ds. Imamo opravka z enokomerno pospesenim gibanjem z znanim pospeskom a brez zacetne hitrosti, zato izracunamo simulirani cas i-te meritve kot ti=sqrt(2*si/a). Da bo simulacija realnejsa, je izracunanemu casu dodan sum (10%). Izracunamo lahko tudi trenutno hitrost v=sqrt(2*a*s). Prava meritev bi nam posredovala le zaporedje casov obremnjenih z merilno napako. Vsakemu casu bi lahko dodali pripadajoco pot in hitrost. Nasa simulacija zapise za vsako meritev (ena vrstica) naslednje podatke:
# ./simulacija simulacija - MIRK 2000
(c) 2000 Renato@s-gms.ms.edus.siMasa telesa m je [g]: 100
Rezultanta zunanjih sil na telo je [N]: 0.1
Telo ima pospesek 1.000 m/s^2.
Stevilo rez je: 100
Premer kolescka je [mm]: 20
Premik kolescka med dvema zaporednima signaloma je 0.628 mm.
Stevilo meritev je: 200
Ime datoteke je: 1.datSimulacija v teku.
Simulirani podatki so zapisani v datoteko 1.dat.
#
Ko imamo niz datotek, potem jih lahko preglejujemo z more, less in cat. Ce iscemo dolocen niz v datotekah, je zelo koristen grep. Recimo, da iscemo v vseh datotekah s koncnico .dat niz "Rezultanta":
Na ta nacin lahko pridemo tudi seznama datotek, ki vsebujejo iskani niz. S pomocjo head in tail dobimo zacetek, oz. konec datoteke. Zelo koristna sta skriptni jezik awk in urejevalnik sed. Pokazimo za vsakega po en primer uporabe. Ce zelimo iz datoteke 1.dat izlusciti samo meritve, potem rabimo samo vrstice od 21 do 220. To dosezemo z:
# grep Rezultanta *.dat
1.dat:Rezultanta zunanjih sil na telo je 0.10000 N.
2.dat:Rezultanta zunanjih sil na telo je 0.15000 N.
3.dat:Rezultanta zunanjih sil na telo je 0.20000 N.
4.dat:Rezultanta zunanjih sil na telo je 0.25000 N.
5.dat:Rezultanta zunanjih sil na telo je 0.30000 N.
#
Ce zelimo v datoteki 1.dat menjati niz "simulacija" s "Simulacija", potem to lahko storimo tako:
# awk 'NR==21,NR==220' 1.dat
1 0.0319 0.0006 0.0354 1.0000
2 0.0451 0.0013 0.0501 1.0000
3 0.0558 0.0019 0.0614 1.0000
. . . .
V obeh primerih dobimo rezultat na standardni izhod (ekran) in ga lahko preusmerimo z > ali >> v datoteko. Grafe bomo izdelali, zato bo koristno nase 'rezultate' meritev pripraviti v primerno obliko. Delo si lahko olajsamo s skripto pripravi.sh:
# sed -e "s/simulacija/Simulacija/g" 1.dat Simulacija - MIRK 2000
(c) 2000 Renato@s-gms.ms.edus.si
. . . .
Najprej preberemo ime ciljne datoteke, potem pa za vse datoteke, ki ustrezajo podanemu vzorcu naredimo datoteko s podobnim imenom, le da je imenu dodana crka "x" s prepisom vrstic od 21 do 220. Hkrati naredimo podobno kopijo v ciljno datoteko in dodamo se prosto vrstico. Primer z vzorcem ?.dat in ciljno datoteko meritve.dat:
echo "(c) 2000 Renato@s-gms.ms.edus.si"
echo "Uporaba: ./pripravi.sh vzorec Na primer: ./pripravi.sh *.dat"
echo "Ciljna datoteka: "
read fname
rm -f $fname
touch $fname
for dname in $*
do
echo "Datoteka $dname v obdelavi"
awk 'NR==21,NR==220' $dname > $dname"x"
awk 'NR==21,NR==220' $dname >> $fname
echo " " >> $fname
done
echo "Koncano :-)"
Pripravili smo podatke za izdelavo grafov s pomocjo gnuplot. V datotekah s koncnico .datx so samo meritve, v datoteki meritve.dat pa je zaporedoma nanizanih vseh pet meritev s po eno prazno vrstico vmes. Z gnuplot lahko risemo interaktivno ali pa s pomocjo skript. Oglejmo si na kratko oba nacina. Najprej narisimo nekaj grafov interaktivno:
# ./pripravi.sh ?.dat
(c) 2000 Renato@s-gms.ms.edus.si
Uporaba: ./pripravi.sh vzorec Na primer: ./pripravi.sh *.dat
Ciljna datoteka:
meritve.dat
Datoteka 1.dat v obdelavi
Datoteka 2.dat v obdelavi
Datoteka 3.dat v obdelavi
Datoteka 4.dat v obdelavi
Datoteka 5.dat v obdelavi
Koncano :-)
#
Tako interaktivno delo je zelo dobrodoslo v razvojni fazi obdelave, ko pa enkrat ze imamo izdelano shemo za obdelavo, pa so bolj prirocne skripte. Skripta graf.gn nam z zagonom
# gnuplot
G N U P L O T
Linux version 3.7
patchlevel 1
last modified Fri Oct 22 18:00:00 BST 1999
. . . .
gnuplot> plot "1.datx"
gnuplot> replot "2.datx"
gnuplot> plot "3.datx" using 2:3 with lines
gnuplot> plot "4.datx" using 2:4
gnuplot> plot "5.datx" using 3:4
gnuplot> set contour
gnuplot> splot "meritve.dat" u 2:5:4
# gnuplot graf.gn |
Za samo obdelavo slik je poleg omenjenga paketa zelo dobrodosel xv. Poskusimo:
# convert skica.fig skica.gif
Za nezahtevno risanje je koristen xpaint, bolj zahteven uporabnik pa bo posegel po gimp-u.
# xv skica.gif
Za koncno izdelavo izdelka rabimo urejevalnik. Na voljo nam je niz pisarniskih
paketov, za pristase LaTeX-a pa seveda obstaja
skupina orodij, ki zagotavlja brezhibno delo (latex,
ispell, xdvi, dvips, gs, gv), vendar to vec ni predmet tega prispevka.