You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Kapitola 7<br />
Vyhodnocování výrazů<br />
7.1 Výraz jako textový řetězec<br />
Chceme-li vyhodnotit výraz zadaný jako textový řetězec, použijeme funkce ”eval”. Ta<br />
je podrobněji popsána v minulé kapitole. Funkce ”eval” zpracuje vstupní řetězec stejně,<br />
jako by byl napsán ve formě příkazového řádku. Takže chceme-li např. vyhodnotit výraz<br />
x 2 + xy + 1 v bodech x = 2, y = 3, zadáme to takto:<br />
f=’x^2+x*y+1’;<br />
x=2;<br />
y=3;<br />
z=eval(f);<br />
Trochu jiná situace však nastane, pokud proměnné x a y budou vektory, např. x =<br />
[0, 1], y = [1, 2] a tedy z = [1, 4]. Je třeba si totiž uvědomit, že MATLAB bude výše<br />
definovaný výraz f vyhodnocovat maticově, tj. operace umocňování a násobení bude<br />
provádět maticově. Tudíž vyhodnocení selže, protože vektory x a y nemají příslušné<br />
rozměry pro tyto operace. Navíc nás ani maticové vyhodnocení nezajímá, neboť chceme,<br />
aby se jednotlivé operace provedly po složkách. Musíme tedy ”dodat” tečky před operace<br />
násobení a umocňování (případně ještě dělení). To se dá provést buď ručně nebo<br />
příkazem ”vectorize”. Zadání v MATLABu by tedy vypadalo nějak takto:<br />
f=vectorize(’x^2+x*y+1’);<br />
x=[0 1];<br />
y=[1 2];<br />
z=eval(f);<br />
Takový postup platí samozřejmě i v případě, že by x a y nebyly vektory, ale matice<br />
(samozřejmě stejných rozměrů).<br />
7.2 Symbolický výraz<br />
MATLAB již umí <strong>pracovat</strong> i se symbolickými výrazy (podobně jako např. MAPLE). Je<br />
však nutné, aby příslušná verze Matlabu obsahovala knihovnu pro práci se symbolickými<br />
26