Příklad 1
Spočtěte následující křivkový integrál po po částech hladké křivce, která je zadána třemi vrcholy trojúhelníka.
> | Int(x+y,s=gamma..``); |
> | body:=[[1,-1],[2,-1],[1,0]]; |
> | with(plots): |
# Pro vykreslení křivky a její popis je nutné nahrát tuto knihovnu do paměti
> | tr:=polygonplot(body): |
# Příkaz pro vykreslení oblasti zadané bodově
> | t1:=textplot([1.3,-1.05,gamma_1],align={ABOVE,RIGHT}): t2:=textplot([1.5,-0.5,gamma_2],align={ABOVE,RIGHT}): t3:=textplot([0.8,-0.5,gamma_3],align={ABOVE,RIGHT}): _t1:=textplot([0.95,-1.01,A],align={ABOVE,RIGHT}): _t2:=textplot([2.05,-1,B],align={ABOVE,RIGHT}): _t3:=textplot([0.95,-0.05,C],align={ABOVE,RIGHT}): |
# Příkaz textplot se užívá k zápisu textu do obrázku
> | display({tr,t1,t2,t3,_t1,_t2,_t3}); |
# Zobrazení grafu a textu do jednoho obrázku
> |
Z obrázku je vidět, že jde opravdu o křivku po částech hladkou, proto integrál rozdělíme na tři dílčí integrály po jednotlivých hladkých křivkách. Na výpočtu integrálu přes křivky gamma_1, tj. úsečka AB, si ukážeme jednotlivé kroky, které pak budeme považovat za jasné.
Nejprve je třeba určit parametrizaci křivky gamma_1. Jde o úsečku AB a jednou z možných parametrizací je
> | par1:=x=1+t,y=-1,t=0..1; |
# Identifikátoru par1 jsem přiřadili posloupnost parametrických rovnic, tzn. při každém dalším použití par1 bude na jeho místo vložena tato posloupnost.
Dosadíme do křivkového integrálu, tj. počítáme
> | i1:=Lineint(x+y,par1); |
Určíme hodnotu tohoto integrálu pomocí příkazu
> | value(i1); |
Určeme nyní parametrizace zbylých dvou křivek
> | par2:=x=2-t,y=-1+t,t=0..1; |
> | par3:=x=1,y=-1+t,t=0..1; |
Dosadíme do integrálu
> | i2:=Lineint(x+y,par2[1],par2[2],par2[3]): |
> | i3:=Lineint(x+y,par3[1],par3[2],par3[3]): |
Určíme hodnoty a sečteme jednotlivé integrály
> | value(i1+i2+i3); |
Nyní se podívejme na výpočet s využitím funkcí z rozšiřující knihovny VectorCalculus . Vysvětlíme pouze základní pojmy a postupy, více naleznete v příloze Knihovna VectorCalculus .
Nejprve určíme křivku. Máme zadán trojúhelník pomocí tří bodů. Užijeme konstrukce LineSegments , která ze zadaných bodů vytvoří po částech lineární křivku.
> | with(VectorCalculus): |
Warning, the assigned names <,> and <|> now have a global binding
Warning, these protected names have been redefined and unprotected: *, +, ., Vector, diff, int, limit, series
> | l:=LineSegments( <1,-1>, <2,-1>,<1,0> ,<1,-1>); |
# Je potřeba zadat čtyři body, protože každá úsečka je dána dvěma body a my potřebujeme získat trojúhelník.
Dále pro výpočet užijeme příkaz PathInt , která počítá integrál I. druhu.
> | PathInt( x+y, [x,y] = l ); |
Jak je vidět, tento postup je velmi efektivní, ale je potřeba dávat pozor na zadání křivky.
> |
> |
> |