|
Manußl k MatMatu
- Popis programu a u₧ivatelskß p°φruΦka
- Co je to MatMat
- Co to umφ a jak se to d∞lß?
- poznßmky k programu
- Co bylo pou₧ito
- Zßkladnφ popis
- Zßkladni unity
1. Popis programu a u₧ivatelskß p°φruΦka
Co je to MatMat
Matmat je kresliΦka funkcφ jednΘ prom∞nnΘ.
Co to umφ a jak se to d∞lß
Co to umφ:
- Interaktivn∞ znßzornit vzhled funkcφ jednΘ prom∞nnΘ
- V tomto sm∞ru umo₧≥uje:
- NeomezenΘ mno₧stvφ vykreslovan²ch funkcφ najednou
- Volbu barvy, tlouÜ¥ky pery a detail∙ pro ka₧dou z funkcφ
- KlasickΘ operace jako p°iblφ₧enφ, oddßlenφ, posun po grafu
- Pou₧itφ parametr∙ v zadßnφ vzorce
- Derivovat zadanou funkci (manußlnφm) zp∙sobem, tedy dle derivaΦnφch vzorc∙.
- Vytvo°it teΦnu v danΘm bod∞
- Vytvo°it Taylor∙v polynom stupn∞ 1 a₧ 10 v danΘm bod∞.
- Vykreslit vzorec funkce
- Tisk plßtna
- Ulo₧enφ plßtna jako BMP
A jak se to d∞lß
Myslφm, ₧e ovlßdßnφ nenφ tak slo₧itΘ ... a jß tak straÜn∞ nerad pφÜu ... tak jenom struΦn∞.
Prßce s parametry
Pou₧ijete-li ve vzorci parametr, objevφ se vßm na hlavnφm panelu p°φsluÜnΘ ovlßdacφ prvky,
kde m∙₧ete hodnoty parametr∙ m∞nit. Zm∞nu v₧dy potvrzujte stiskem klßvesy Enter. P°i zadßvßnφ
m∙₧ete pou₧φt vzorec (nap°. 2*8*pi) pro urΦenφ hodnoty, ale nikoliv parametr Φi prom∞nnou.
Zm∞na parametru se projevφ na vÜech funkcφch v danΘm projektu. Vyjφmku
tvo°φ Taylorovy polynomy a teΦny, kterΘ na zm∞nu parametru nereagujφ (pracuje se na tom :=).
KlßvesovΘ zkratky
CTRL + V |
|
Vlo₧enφ novΘ funkce |
CTRL + C |
|
Editace zvolenΘ fce |
CTRL + X |
|
Smazßnφ zvolenΘ fce |
CTRL + A |
|
Kresba funkcφ |
CTRL + F |
|
Vypnutφ / zapnutφ okna Seznam funkcφ |
2. Poznßmky k programu
a. Co bylo pou₧ito
Programovßno v Delphi 6 za pomocφ standartnφch unit + unita printers a math.
Inspirace byla Φerpßna z Topferov²ch algoritm∙
b. Zßkladnφ popis
Vzorec je z textu p°eveden do postfixu a nßsledn∞ do vyhodnocovacφho stromu. Zßkladnφm
objektem je objekt Pprvek, kter² p°edstavuje elementßrnφ Φßst v²razu.
Podle hodnoty ID objektu pak program rozliÜuje o co jde:
0 | |
hodnota |
1 .. 45 | |
vyhrazeno pro specißlnφ hodnoty jako e, pi ... |
47 .. 82 | |
parametry - pozice se poΦφtß podle vzorce (ORD(pismeno) - 50) |
98 | |
prom∞nnß x |
99 | |
prom∞nnß y - zatφm nedod∞lßno |
101..1000 | |
operace se dv∞ma operandy |
1001..3000 | |
operace - funkce s jednφm operandem |
3001..3002 | |
zßvorky - nevytvß°φ se, slou₧φ pouze p°i tvorb∞ stromu |
Dßle mß dva ukazatele na svΘ budoucφ operandy a kastlφk pro hodnotu.
Z funkcφ objektu jsou d∙le₧itΘ fce
vyhodnot - rekurzivne vyhodnotφ cel² v²raz. Pokud v²raz nenφ definovßn, pak vracφ argument def s hodnotou false
id2name - vypφÜe svΘ jmΘno
Pozn:
Mo₧nß se divφte, proΦ na objekt ukazuju jeÜt∞ vzlßÜ¥ ukazatelem. Je to proto, ₧e
jsem v dob∞, kdy jsem to zaΦal psßt jsem nev∞d∞l, ₧e se objekty v Delphi automaticky
alokujou dynamicky a pozd∞jÜ se mi to u₧ necht∞lo p°ekopßvat. Tak₧e jsem pou₧il klasickou
Paskalßckou Deklaraci.
DalÜφ objekty:
Pzas {zasobnik na prvky obousmerny s hlavou} a jeho kastlik Psuplik
Pzasfce {zasobnik na funkce obousmerny s hlavou} a jeho kastlik Pvyraz
Typ:
velikost - slou₧φ p°i kresb∞ v²razu na plßtno.
c. Zßkladni unity
Jsou popsßny pouze nejd∙le₧it∞jÜφ funkce a procedury
Math_stuff, kterß obsahuje:
- funkci text2strom na p°evod v²razu do vyhodnocovacφho stromu
- a jejφ pomocnou funkci Prvek, kterß vracφ z textovΘho v²razu jeho dalÜφ operand / hodnotu ...
- rekursivnφ funkci derivuj, kterß derivuje v²raz podle derivaΦnφch vzorc∙
- pou₧φvß funkci isx, kterß zjiÜ¥uje existenci prom∞nnΘ v danΘm v²razu a subv²razu
- funkci Taylor
- funkci is_param, kterß zjiÜ¥uje, zda je ve vzorci parametr - u₧φvß se p°i ·prav∞ - zjednoduÜovßnφ
- funkci uprav_vyraz, kter² se sna₧φ upravit v²raz po manußlnφm derivovßnφ do pou₧itelnΘho stavu, tedy odstra≥uje zbyteΦnΘ operace jako +0 *1 ^1 atd.
Objekty, kterß obsahuje:
- Deklarace objekt∙ a typ∙ .. viz v²Üe.
- Proceduru uvolni - uvol≥uje pam∞¥
main_ovl, kterß obsahuje:
- funkci vypis_v²raz, kterß rekursivn∞ p°epφÜe v²raz ze stromu do stringu, pou₧φvß
funkci zavorky k detekci nutnosti zßvorek ve v²razu
- funkci kresli_v²raz, kterß rekursivn∞ vykreslφ v²raz na Tcanvas, pou₧φvß
funkci zpocti_velikost, kterß poΦφtß velikost v²razu p°i danΘ velikosti a druhu pφsma.
kalkulacka, kterß obsahuje:
-
Funkci kresli_graf, kterß vykreslφ grafy funkcφ v zßsobnφku na dan² Tcanvas.
Obstarßvß i kresbu vzorc∙ u₧φvaje procedury z main_ovl.
ostatnφ unity obsahujφ u₧ v∞tÜinou pouze obslu₧nΘ procedury a funkce
|
|