Jít k navigaci - Jít k vyhledávání


Maple 2 - Funkce a Konstanty

03. 06. 10 - 13:00. Napsal Jiří Chytil. Přečteno 5813x.

V tomto článku se podívám, jakým způsobem lze vytvořit vlastní funkce, a to jak jedné, tak i více proměnných, a dále na pár funkcí, které nám zpříjemní práci s dalšími funkcemi a polynomy. A podíváme se i na funkce definované po částech.

468x60.gif Doporučujeme virtuálního opertátora GoMobil.cz | Reklamní sdělení

Funkce jedné proměnné

Prvně tedy něco málo k vytváření funkcí. Zápis pro vytvoření se skládá z jejího názvu, operátoru přiřazení, z proměnných, operátoru šipka a ze samotného zápisu funkce. Začneme tedy jednoduchou funkcí jedné proměnné. Vytvoříme si funkci sin(x)/x. Nezveme jí sinc.

sinc:=x->sin(x)/x;
sinc:=x->sin(x)/x

Tím máme definovánu funkci sinc(x). Pozor - funkce není definována v nule, protože nulou nelze dělit. Pokud ale chceme získat funkční hodnotu v jiném bodě, než je nula, použijeme tento zápis:

sinc(2);
1/2*sin(2)

Při snaze získat hodnotu z nuly:

sinc(0);
Error, (in sinc) numeric exception: division by zero

Podobně můžeme definovat mnohem složitější funkce a polynomy:

Polynom:= x-> x^4 + (x^3)/2 + 7*x + 3/4;
Polynom:= x-> x^4 + (x^3)/2 + 7*x + 3/4
fce:= x-> exp(x-2^(2*n)) + 1 - ln(3+x/2);
exp(x-2^(2*n)) + 1 - ln(3+x/2)

Pro zpřehlednění funkce lze použít příkazy expand() což je roznásobení, simplify() (zjednodušení) a sort() (seřazení).

Nejprve se podíváme na funkci expand(). Pokud zapíšeme následující výraz, dostaneme výsledek ve tejném tvaru:

(x+1)^3;
(x+1)^3

Pokud ale použijeme funkci expand(), členy se mezi sebou roznásobí, a dostaneme:

expand((x+1)^3);
x^3+3x^2+3x+1

Stejně můžeme funkci použít pro roznásobení výrazů s faktoriály:

expand((3+x)!);
(x+1)(x+2)(x+3)x!

Zatímco bez použití expand() dostaneme zpět opět pouze

(3+x)!;
(3+x)!

Další příklad použití je pro goniometrické funkce:

expand(sin(x+y));
sin(x)cox(y)+sin(y)cos(x)

Další zmiňovaný příkaz bylo zjednodušení, neboli simplify(). Ten funguje opačným způsobem než expand(). Na stejný výraz aplikujeme výraz simplify() i expand().

simplify((x+1)*(x)*(x-1));
x(x-1)^2
expand((x+1)*(x)*(x-1));
x^3-x

Funkce simplify() upraví výraz do podoby hezké pro matematiky.

Další funkce je sort, která seřadí polynom nebo funkci podle mocniny u vybrané proměnné.

sort((x*y)^7+7*y*x^3+1/2*x^(x)+6*x^5+x*y^2,x);
seřazení výrazů podle mocniny u x
sort((x*y)^7+7*y*x^3+1/2*x^(x)+6*x^5+x*y^2,y);
seřazení výrazů podle mocniny u y

Funkce více proměnných

Pokud potřebujeme pracovat s funkcemi více proměnných, zadáváme je takto:

funkce:=(x,y,z)-> (x+y*sqrt(z+3))^2;
 funkce:=(x,y,z)-> (x+y*sqrt(z+3))^2

Ještě něco trošku praktičtějšího. Výpočet obsahu komolého kuželu:

Komoly_kuzel:=(s1,s2,h)->1/3*h*(s1+s2+sqrt(s1*s2));
Komoly_kuzel:=(s1,s2,h)->1/3*h*(s1+s2+sqrt(s1*s2))

Pokud chceme znát výsledek námi zapsané funkce pro zadané proměnné (a to pravděpodobně chceme, jinak bychom ji nepsali), provedeme následující zápis:

Komoly_kuzel(1,5,2);
4+2sqrt(5)/3

Funkce definované po částech

Existují průběhy, které jedinou funkcí nevygenerujeme, a proto je zadáváme po částech. Například již výše zmíněná funkce sinc() má v bodě 0 nabývat hodnoty jedna. Ale vzhledem k tomu, jak je funkce definovaná, dostáváme na výstupu pouze zprávu o dělení nulou, proto funkci dodefinujeme i v bodě nula pomocí funkce PIECEWISE().

sinc:=x->PIECEWISE([sin(x)/x,x<0],[1,x=0],[sin(x)/x,x>0]);
funkce definovaná po částech

V každém páru hranatých závorek jsou dva parametry. První parametr je daný průběh funkce, druhý parametr je interval nebo bod, na kterém platí. Intervaly se zadávají pomocí znaků ostré nebo neostré nerovnosti a bod pomocí rovnítka. Takto můžeme definovat průběhy dle vlastní libosti. Zde je příklad pro obdélníkové impulzy.

lichobeznik:=x->PIECEWISE([0,x<-3],[(x+3)*4,-3 < x and x < -2 ],[4,-2 < x and x < 2 ] ,[(3-x)*4,2 < x and x < 3 ],[0, x < 3 ]);
funkce definovaná po částech

Graf funkce:

funkce definovaná po částech
Obrázek č. 1 - Funkce definovaná po částech

Rozmezí intervalů se definuje pomocí slovíčka and. Například zápis 2≤x and x<3 čteme jako x je menší než tři ale větší nebo rovna dvěma - je tedy na intervalu od 2 do 3 (bez čísla 3 - neostrá nerovnost, ale včetně čísla 2 - ostrá nerovnost)

Pokud chceme definovat funkci jen na některých částech a všude jinde má mít jinou známou hodnotu, můžeme použít zápis s otherwise. Ten přidělí zadanou hodnotu do všech ostatních intervalů. Tedy do těch, které jsme si přímo nedefinovali.

f:=x->PIECEWISE ([1,x=0],[1,x=1],[0,otherwise]);
funkce definovaná po částech

Ve všech bodech krom 0 a 1 bude funkce rovna 0.

d:=x->PIECEWISE ([abs(x),x>-1 and x<1],[1,otherwise]);
funkce definovaná po částech

Ve všech bodech krom intervalu (1,-1) bude funkce rovna 1.

Pokud nadefinujeme funkci bez otherwise, všechny nedefinované hodnoty se nastaví na nulu. Viz výsledek.

PIECEWISE([3,x<>0]);
funkce definovaná po částech

Konstanty:

MAPLE má rezervována některá klíčová slova pro konstanty. Pro jejich výpis lze použít zápis:

constants;
konstanty

Pro nás budou zatím důležité pouze dvě z těchto vybraných, a to Pi a infinity. Pi je jednoznačně Ludolfovo číslo tedy 3.14159265? , a infinity je nekonečno.

expand() roznásobení výrazu
simplify() zjednodušení výrazu
sort() seřazení podle zadaná proměnné
PIECEWISE() zadání funkce po částech
Tabulka č. 1 - Použité funkce



Autor
Jiří Chytil

Jiří Chytil27 let

Šéfredaktor 8bitu.cz. V současné době je studentem doktroského studia na Ústavu teoretické a experimantální elektroniky na Fakultě elektrotechniky a komunikačních technologií VUT v Brně. Mezi jeho koníčky patří elektrotechnika, bastlení, programování a hudba.


Novinky Další novinky

[25. 06.]  A tentokráte vás zdravím z města New York.
[17. 06.]  Zdravim vas z Bostonu vazeni ctenari.
[10. 03.]  Tak jsem pro Vás připravil novou anketu. A snažím se pokračovat na projektu jehož výsledky bych zde rád zveřejnil, ale poněkud mě brzdí diplomová práce a práce.
[30. 01.]  Omlouvám se za nečinnost způsobenou značným nedostatkem času. Nevím, ale jestli se mi to podaří změnit. To víte, člověk stárne a jeho čas je potřeba jinde než na internetu.
[07. 03.]  Po dlouhé době jsme pro vás přichystali novou anketu - najdete ji níže v pravém panelu.

Reklama

Sádrokartony Karel Richter - sádrokartony a suché stavby Brno

Okruháři.cz

Virtuální operátor GoMobil - levné volání

Programujte.com

Léčivé obrazy - enkaustika Lenka Blažíková

Keramika Věra Coufalová - užitková keramika

Anketa

Jaký další modul byste ocenili v softwaru DSE?

RC články - pasivní

RC články - aktivní

Normované filtry

Syntetické indukčnosti

Materiálové tabulky

COM terminál

Design pro 555

Výpočet transformátoru

Výpočet uPásku

Výpočet štěrbinového vedení

Návrh Step-Up měniče

Návrh invertujícího měniče

Transfigurace trojúhelník-hvězda

Předřadník a bočník