Subsections

17 Využití systému FAMULUS 3.5

17.1 Vytvořené modely ve Famulovi

V systému FAMULUS je k dispozici celá řada knihoven pro zpracování experimentálních dat.
Knihovny STAT.FML a INTERP.FML jsou dodávány přímo se systémem. Knihovny STAT1.FML, MARQ.FML a BSPL.FML je možné získat v našem archivu programů.
Příznivci jazyka PASCAL naleznou celou řadu zajímavých programů ve skriptech $[7]$.
Přehled dostupných modelů pro systém FAMULUS ukazuje následující tabulka:

Název Popis
DISTRIBS.FM Rozdělení pravděpodobnosti a distribuční funkce pro hod kostkou
DISTRIS1.FM Rozdělení pravděpodobnosti a distribuční funkce diskrétní náhodnou veličinu
NORM1.FM Hustota a distribuční funkce normálního rozdělení
NORM2.FM Kreslí grafy normálního rozdělení pro různé hodnoty směrodatné odchylky
MORM3.FM Kreslí grafy normálního rozdělení pro různé hodnoty střední hodnoty
NORM4.FM Zobrazuje interval spolehlivosti pro normální rozdělení
GAMA.FM Graf gama funkce pro $x > 0$
GAMA1.FM Graf gama funkce pro kladné i záporné hodnoty x
STUDENT.FM Srovnání Studentova rozdělení s normálním rozdělením
STUDB.FM Interval spolehlivosti pro Studentovo rozdělení
PRIMKA.FM Proložení přímky metodou nejmenších čtverců
PRIMKAP.FM Předcházející program doplněný o analýzu dat
POLY.FM  
POLY1.FM  


17.2 Dostupné knihovny

17.2.1 Knihovna INTERP.FML

Zahrnuje základní procedury a funkce pro interpolaci v jedné proměnné derivaci a integraci pomocí kubických splinů.
Konstanta Natural: použijeme ji často - pokud budeme chtít přirozený spline. Natural=9e999
PROCEDURE Spline(x[i=iMin TO iMax],y[ ],y1Min,y1Max,y2[])
Příprava interpolace pomocí kubických splinů.
Význam argumentů:

x[ ], y[ ] x-ové a y-ové souřadnice bodů, kterými provádíme interpolaci
iMin, iMax určují, které body bereme při interpolaci do úvahy
y1Min, y1Max požadované hodnoty 1. derivace v bodech x[iMin], x[iMax]
y2[ ] výstupní pole - po ukončení procedury obsahuje druhé derivace v interpolovaných bodech

POZOR ! : Pole x[ ] a y[ ] musí být setříděna např. procedurou SORT.Sort2.
Poznámky: Výše je definována reálná konstanta Natural, kterou je možné použít místo hodnot y1Min, y1Max. V tom případě jde o tzv. přirozený spline - hodnota 2. derivace v daném okrajovém bodě je rovna 0.

FUNCTION SplineDerivace(xa[i=iMin TO iMax],y[ ],y2[ ],x)
Vrací derivaci získanou interpolací pomocí kubických splinů.
Význam argumentů:
x[ ], y[ ] x-ové a y-ové souřadnice bodů, kterými provádíme interpolaci
iMin, iMax určují, které body bereme při interpolaci do úvahy
x hodnota argumentu, pro který chceme znát derivaci
y2[ ] pomocné pole, ve kterém jsou uloženy druhé derivace v interpolovaných bodech
  - toto pole musí být inicializováno procedurou Spline


FUNCTION SplineInt(x[i=iMin TO iMax],y[ ],y2[ ],x);
Vrací hodnotu získanou interpolací pomocí kubických splinů.
Význam argumentů:
x[ ], y[ ] x-ové a y-ové souřadnice bodů, kterými provádíme interpolaci
iMin, iMax určují, které body bereme při interpolaci do úvahy
x hodnota argumentu, pro který chceme znát interpolovanou hodnotu
y2[ ] pomocné pole, ve kterém jsou uloženy druhé derivace v interpolovaných bodech
  POZOR ! pole y2[ ] toto pole musí být inicializováno procedurou Spline


FUNCTION SplineIntegral(x[i=Min TO Max],y[ ],y2[ ],Od,Do)
Vrací hodnotu integrálu určeného tabulkou x-ových a y-nových hodnot.
Význam argumentů:
x[ ], y[ ] x-ové a y-ové souřadnice bodů, kterými provádíme integraci
  (integrace je prováděna interpolací x-ových a y-nových hodnot kubickými slipny)
iMin, iMax určují, které body bereme při interpolaci do úvahy
y2[ ] pomocné pole, ve kterém jsou uloženy druhé derivace v interpolovaných bodech
  POZOR ! pole y2[ ] toto pole musí být inicializováno procedurou Spline
Od, Do určují meze integrálu


FUNCTION PolynInt(x[i=iMin TO iMax],y[ ],x)
Polynomiální interpolace skupinou bodů v rovině Lagrangeovou interpolací.
x[ ], y[ ] x-ové a y-ové souřadnice bodů, kterými provádíme interpolaci
iMin, iMax určují, které body bereme při interpolaci do úvahy
x bod, ve kterém chceme znát interpolovanou hodnotu

17.2.2 Knihovna STAT.FML

PROCEDURE LinRegrese( x[i=iMin TO iMax],y[ ], VAR a,b)
Proloží přímku zadanými body

  Parametry:   Jako lokální proměnné jsou použity:
x[ ] nezávisle proměnná (např. čas měření) R korelační koeficient
y[ ] závisle proměnná (např. naměřené hodnoty) SR reziduální součet čtverců
a,b parametry proložené přímky tvaru y = ax + b odhad směrodatné odchylky
    sa odhad směrodatné odchylky pro koeficient a
    sb odhad směrodatné odchylky pro koeficient b

Příklad volání:
REAL x[1 TO 5],y[1 TO 5],a,b
.................
READ TAB x[ ],y[ ]
LinRegrese(x[ ],y[ ],a,b)

PROCEDURE PolynRegrese( x[i=iMin TO iMax],y[ ], a[j=j0 TO N])
Proložení polynomu stupně N danými body
  Parametry:   Jako lokální proměnné jsou použity:
x[ ] nezávisle proměnná (např. čas měření) R korelační koeficient
y[ ] závisle proměnná (např. naměřené hodnoty) SR reziduální součet čtverců
koeficienty polynomu; odhad směrodatné odchylky
  uvažovaný model $y = \sum(a[j]*(x[j]^j)$)    
N stupeň prokládaného polynomu    

Příklad volání:
REAL x[1 TO 10],y[1 TO 10],a[0 TO 2]
.................
READ TAB x[ ],y[ ]
PolynRegrese(x[ ],y[ ],a[ ])

PROCEDURE SpecLinRegrese( x[i=iMin TO iMax],y[],EXPR f1, f2, VAR x, VAR a,b)
Proložení lineární kombinace dvou zadaných funkcí zadanými body
  Parametry:   Jako lokální proměnné jsou použity:
x[ ] nezávisle proměnná (např. čas měření) R korelační koeficient
y[ ] závisle proměnná (např. naměřené hodnoty) SR reziduální součet čtverců
a,b parametry modelu ve tvaru $y = a f1(x) + b f2(x)$ odhad směrodatné odchylky
    sa odhad směrodatné odchylky pro koeficient a
    sb odhad směrodatné odchylky pro koeficient b

Příklad volání:
REAL x[1 TO 5],y[1 TO 5],a,b,x
.................
READ TAB x[ ],y[ ]
SpecLinRegrese(x[ ],y[ ],1,exp(x),x,a,b)

PROCEDURE Statistiky(REAL x[i=iMin TO iMax])
Spočte 23 základních statistik, které jsou uloženy v proměnných s odpovídajícím jménem
Poznámka: Vektor x[ ] může obsahovat nedefinované (chybějící) hodnoty. Jednotlivé statistiky jsou lokální proměnné v této proceduře a jejich hodnoty získáme pomocí tečkové notace.
Příklad volání:
REAL x[1 TO 5]
.................
READ TAB x[ ]
Statistiky(x[ ])
WRITE "Pruměr z ", Statistiky.N," dat je ",Statistiky.Prumer
Použité proměnné a jejich stručné zavedení (definice)
INT N celkový počet pozorování (definovaných hodnot x[ ] )
REAL Sum součet všech definovaných položek vektoru x[ ]
REAL Sum2 součet druhých mocnin x[ ]
REAL Minimum,Maximum nejmenší a největší hodnota v x[ ]
REAL Prumer průměr
REAL Median medián (neboli "střed" x[ ] - tzn.,že
    počet $x[i]<=$Median je roven počtu $x[i]>=$Median
REAL Rozptyl rozptyl je definován jako $(Sum2-Sum*Sum/N)/(N-1)$
REAL SmerOdch směrodatná odchylka, je rovna $\sqrt{Rozptyl}$
REAL Sikmost koeficient šikmosti
REAL Spicatost koeficient špičatosti
REAL Rozpeti rozpětí x[ ], šili (Maximum - Minimum)
REAL K1 dolní (K1) a horní (K3) kvartil. Pokud bychom
REAL K3 vektor x[ ] uspořádali vzestupně podle velikosti,
    K1 a K3 odpovídají $x[1/4*N]$$x[3/4*N]$
REAL IkRozpeti interkvartilové rozpětí neboli (K3 - K1)
INT Nv1SmO počet pozorování, která leží v intervalech
INT Nv2SmO (Prumer-i*SmerOdch,Prumer+i*SmerOdch), i=1,..,3
INT Nv3SmO  
REAL Pv1SmO jsou to Nv1SmO ... Nv3SmO
REAL Pv2SmO převedena na procenta
REAL Pv3SmO  


PROCEDURE
FrekvTab(x[i=iMin TO iMax],Skupina[j=jMin TO jMax], Cetnost[], VAR INT PocetTrid)
Výpočet frekvenční tabulky (tabulky četností) daného vektoru.
Poznámky: Jsou-li data (hodnoty ve vektoru x[ ]) diskrétního charakteru (tj. x[ ] obsahuje jen několik hodnot, které se opakují), procedura počítá četnosti těchto hodnot. Jinak je interval od minima x[ ] do maxima x[ ] rozdělen ekvidistantně na optimální počet tříd a jsou spočítány četnosti těchto skupin. Pokud jsou dimenze polí Skupina[ ]Cetnost[ ] menší než je optimální PočetTříd, je spočtena tabulka podle dimenze těchto polí.
Parametry:
x[i=iMin TO iMax] (* vektor pozorování (data) *)
Skupina[j=jMin TO jMax] (* středy skupin pozorovaných hodnot (dat) *)
Cetnost[j=jMin TO jMax] (* četnosti těchto skupin *)
PocetTrid (* počet skupin (tříd), do kterých byla data rozdělena. Je vždy <= 16)

17.2.3 Knihovna STAT1.FML

Upravená knihovna STAT.FML, která byla rozšířena o další procedury a funkce:
PROCEDURE Dnorm(x,VAR f,g,BOOLEAN VAR typ)
Distribuční funkce normalního rozdělení.
x= argument funkce rozdělení
f= distribuční funkce (typ=FALSE)
f= 1 - distribuční funkce (typ = TRUE)
g= rozdělovací funkce (derivace distribuční funkce)

FUNCTION REAL Dfinv(alfa)
Kvantil normalního rozdělení pro hladinu významnosti alfa (obvykle 0.05)

FUNCTION REAL Tstud(alfa, INT n)
Kritické hodnoty Studentova rozdělení (Studentovy koeficienty) pro hladinu významnosti 1-alfa a pocet stupnu volnosti n

PROCEDURE PolynRegrese( x[i=iMin TO iMax],y[ ], a[j=j0 TO N], da[ ],w[ ],alfa)
Standartní procedura PolynRegrese byla rozšířena o vypočet disperze koeficientu polynomu a[ ] (pole da[ ]) a interval spolehlivosti na hladině významnosti 1-alfa (pole w[ ]) v jednotlivých bodech x[i]
Procedury LinRegrese a SpecLinRegrese byly upraveny nevýznamně

Obrázek: Ukázka postupného hledaní optimálního průběhu s využitím Marquardt-Levenbergova algoritmu
\includegraphics[height=11cm, width=\textwidth, keepaspectratio=false]{mar1}

17.2.4 Knihovna MARQ.FML

Knihovna MARQ.FML umožňuje provádět nelineární regrese metodou nejmenších čtverců s použitím Marquardt-Levenbergova algoritmu parametry minimalizace (např. maximální počet iterací) jsou uvedeny na začátku hlavní časti knihovny. Model TESTMARQ. FM: Hledání parametrů Rosenbrockovy funkce. Výsledky minimalizace jsou ukládány do souboru definovaném na začátku těla programu počáteční odhady hlednaných parametrů jsou uvedeny na konci datového souboru TESTM.DAT.
Pomocné soubory:
TESTM. DAT data pro TESTMARQ.FM - Rosenbrockova funkce s šumem, který má Gaussovo (normalní) rozdělení
TESTM. OUT ukázka výstupniho souboru
KMITY2.FM hledání parametrů tlumených kmitů (kmity tyče) - 5 parametru. Počáteční odhad parametrů se provede sejmutím polohy tří významných bodů na měřené závislosti pomocí myši.
KMITY2.DAT data pro KMITY2.FM (reálná data naměřená soupravou IP-COACH)
KMITY2.OUT ukázka výstupního souboru
Literatura:
$[1]$ Rektorys K.: Přehled užité matematiky, SNTL Praha, 1968
$[2]$ Šťastný F.: Fyzikální praktikum pro nefyzikální obory, UJEP Brno
$[3]$ Novák M.: Úvod do praktické fyziky, UJEP Brno 1989
$[4]$ Brož J. a kolektiv: Základy fysikálních měření I, SPN Praha 1967
$[5]$ Hanousek J. a Charamza P.: Moderní metody zpracování dat - matematická statistika pro každého, Grada Praha 1992, ISBN-80-85623-31-5
$[6]$ Meloun M. a Militký J.: Statistické zpracování experimentálních dat, Edice Plus, Praha 1994, ISBN 80-85297-56-6
$[7]$ Novák M. a kolektiv: Fyzikální praktikum I, UJEP Brno 1982
$[8]$ Celý J.: Programové moduly pro fyzikální výpočty, UJEP Brno 1985
$[9]$ Humlíček J.: Základní metody numerické matematiky, UJEP Brno 1980
$[10]$ Bajcsy J., Kodaj D., Kováč K., Smieško V.: Automatizované systémy merania riadené mikropočítačmi, ALFA Bratislava 1986
$[11]$ Sobotka Z.: Přehled číslicových systémů, SNTL Praha 1981
$[12]$ Matoušek A., Hradil F.: Provozní měření v elektrotechnice, STRO.M Praha 1996
$[13]$ ČSN 35 6505 ze dne 26.11.1975, ÚNM Praha 1975
$[14]$ Budíková M., Mikoláš Š., Osecký P.: Teorie pravděpodobnosti a matematická statistika (sbírka příkladů), Masarykova Univerzita, Brno 1996, ISBN 80-210-1329-x
$[15]$ Budíková M., Mikoláš Š., Osecký P.: Popisná statistika, Masarykova Univerzita, Brno 1996, ISBN 80-210-1210-3
$[16]$ Kožíšek J.: Statistická analýza, ČVUT Praha 1996, ISBN 80-01-00965-3
$[17]$ Kožíšek J.: Statistická analýza, Příklady, ČVUT Praha 1997, ISBN 80-01-01617-X
$[18]$ Novotný J.: Vybrané statě z fyziky (Zpracování experimentálních dat), ČVUT Praha 1994, ISBN 80-01-01052-X
$[19]$ Beneš V., Dohnal G.: Pravděpodobnost a matematická statistika, ČVUT Praha 1993, ISBN 80-01-00911-4
$[20]$ Ďaďo S., Kreidl M: Senzory a měřicí obvody, ČVUT Praha 1996, ISBN 80-01-01500-9
$[21]$ Fajt V., Haasz V., Sedláček M: Elektrická měření, ČVUT Praha 1996, ISBN 80-01-00751-0
$[22]$ Bráza A., Jenčík J.: Technická měření, ČVUT Praha 1996, ISBN 80-01-01495-9

© František Šťastný, 1997