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 2150x. 3 komentáře

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.

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ří Chytil24 let

Šéfredaktor 8bitu.cz. V současné době je studentem prvního ročníku magisterského studia na Fakultě elektrotechické na VUT v Brně. Mezi jeho koníčky patří elektrotechnika, bastlení, programování a hudba. Pracuje na částečný úvazrek ve společnosti Honeywell HTS ACS.

Diskuse ke článku (0)

- Žádné příspěvky -

Přidat první komentář »


Novinky Další novinky

[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.
[12. 12.]  Zajímavý počin v oblasti měřící techniky jsou Real-time spektrální analyzátory - odkaz
[07. 12.]  Sice již starší video, ale stále mě uchvacuje. Výroba elektronek "doma" - odkaz

Reklama

Morphy Richards elektronika Okruháři.cz

Programujte.com

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

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

Anketa

Jaký obchod preferujete při nákupu součástek?

TME

GES

GME

Farnell

SOS electronic

TIPA

EZK

PS Electronic

Mouser

Buček

Denkl Electronic

FK Technics

Hadex

Conrad

Jiný český

Jiný zahraniční