Příklad 5

Následující příklad postupně spočítáme čtyřmi postupy: pomocí skalárního součinu, pomocí VectorCalculus , užitím Greenova  vzorce, pomocí potenciálu.

>    restart:with(plots):

Warning, the name changecoords has been redefined

>    Int([(x+y)^2,-(x-y)^2]*`.`,S=Gamma..``);

Int([(x+y)^2, -(x-y)^2]*`.`,S = Gamma .. ``)

Křivka je dána sjednocením části paraboly a úsečky zadané body  [0,0] , [1,1].

>    _par:=[x=t,y=t^2,t=0..1];
par:=[t,t^2,t=0..1];

_par := [x = t, y = t^2, t = 0 .. 1]

par := [t, t^2, t = 0 .. 1]

# Parametrizace paraboly.

>    _par1:=[x=1-t,y=1-t,t=0..1];
par1:=[1-t,1-t,t=0..1];

_par1 := [x = 1-t, y = 1-t, t = 0 .. 1]

par1 := [1-t, 1-t, t = 0 .. 1]

# Parametrické rovnice úsečky.

>    vpole:=[(x+y)^2,-(x-y)^2];

vpole := [(x+y)^2, -(x-y)^2]

# Zadání pole

Nakreslení obrázku

>    p:=plot(t^2,t=-1..1,color=WHITE):
_p:=plot(t^2,t=0..1,color=blue,thickness=3):

# Graf části paraboly. První příkaz je v tomto tvaru, protože jinak by obrázek zahrnoval pouze interval <0,1> na ose x , což není vhodné kvůli lepší představě tvaru vektorového pole. Proto také byla zvolena křivka bílé barvy, protože splyne s pozadím..

>    p1:=polygonplot([[0,0],[1,1]],thickness=3):

# Vykreslení úsečky zadáním počátečního a koncového bodu.

>    p2:=fieldplot(vpole,x=-1..1.05,y=-1..1.05,grid=[15,15],thickness=2):

# Obrázek vektorového pole

>    display({p,_p,p1,p2},scaling=constrained);

[Maple Plot]

Dosazením parametrických rovnic do integrandů obdržíme

>    parpole:=[subs(op(1..2,_par),vpole[1]),subs(op(1..2,_par),vpole[2])];
parpole1:=[subs(op(1..2,_par1),vpole[1]),subs(op(1..2,_par1),vpole[2])];

parpole := [(t+t^2)^2, -(t-t^2)^2]

parpole1 := [(2-2*t)^2, 0]

# Použili jsme příkaz op , jehož první parametr určuje počet prvků seznamu (popř. množiny) zadané ve druhém parametru, který bude vypsán jako posloupnost. Příkaz subs  provádí vícenásobnou substituci, tj. substituční rovnice musí být zadány jako posloupnost, poslední parametr určuje místo použití.

Přesný zápis integrálů se skalárním součinem  je

>    Int(parpole.Diff([par[1],par[2]],t), par[3]);

Int([(t+t^2)^2, -(t-t^2)^2].Diff([t, t^2],t),t = 0 .. 1)

>    Int(parpole1.Diff([par1[1],par1[2]],t), par1[3]);

Int([(2-2*t)^2, 0].Diff([1-t, 1-t],t),t = 0 .. 1)

Nyní provedeme naznačenou derivaci

>    dpar:=[op(1..2,diff(par,t))];
dpar1:=[op(1..2,diff(par1,t))];

dpar := [1, 2*t]

dpar1 := [-1, -1]

Počítáme tedy integrály

>    Int(parpole.dpar, par[3]);

Int([(t+t^2)^2, -(t-t^2)^2].[1, 2*t],t = 0 .. 1)

>    Int(parpole1.dpar1, par[3]);

Int([(2-2*t)^2, 0].[-1, -1],t = 0 .. 1)

Jde o skalární součin dvou vektorů, proto použijeme příkaz dotprod  z rozšiřující knihovny linalg.

>    arg:=linalg[dotprod](parpole,dpar,'orthogonal');

arg := (t+t^2)^2-2*t*(t-t^2)^2

>    arg1:=linalg[dotprod](parpole1,dpar1);

arg1 := -4*(-1+t)^2

# Integrand

Počítáme tedy integrály

>    Int(arg,par[3])=int(arg,par[3]);
Int(arg1,par1[3])=int(arg1,par1[3]);

Int((t+t^2)^2-2*t*(t-t^2)^2,t = 0 .. 1) = 1

Int(-4*(-1+t)^2,t = 0 .. 1) = -4/3

Výsledkem je jejich součet

>    rhs(%)+rhs(%%);

-1/3

>    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

Vytvoříme vektorové pole v kartézské soustavě (z integrandů)

>    vf:=VectorField(<(x+y)^2,-(x-y)^2>,cartesian[x,y]);

vf := Vector(%id = 10903260)

>    i1:=LineInt(vf,Path(<t,t^2>,t=0..1));

i1 := 1

# Výpočet po parabolu

>    i2:=LineInt(vf,Line(<1,1>,<0,0>));

i2 := -4/3

# POZOR - křivka je orientována z koncového bodu do počátečního.

Výsledkem je součet jednotlivých integrálů

>    i1+i2;

-1/3

Nejprve uveďme Greenův vzorec [Maple OLE 2.0 Object]  . Předpokladem je normální oblast s po částech hladkou hranicí, dále spojitost P(x,y) , Q(x,y)  a jejich derivací, a kladná orientace hranice oblasti vzhledem k oblasti. Přesnou definici Greenovy věty lze nalézt např. v [1].

Z obrázku je patrné, že oblast ohraničená oběma křivkami je konvexní, tzn. je i normální. Orientace hranice vzhledem k oblasti je kladná (viz. obrázek).

>    with(student):

>    P:=(x+y)^2;
Q:=-(x-y)^2;

P := (x+y)^2

Q := -(x-y)^2

# Určení funkcí P , Q  z původního integrálu

Provedeme naznačené derivace

>    dQ:=Diff(Q,x)=diff(Q,x);
dP:=Diff(P,y)=diff(P,y);

dQ := Diff(-(x-y)^2,x) = -2*x+2*y

dP := Diff((x+y)^2,y) = 2*x+2*y

Dosadíme do Greenova  vzorce

>    Doubleint(rhs(dQ)-rhs(dP),x,y,Omega);

Int(Int(-4*x,x = Omega .. ``),y = `` .. ``)

# Pomocí příkazu rhs  získáme pravou stranu rovnice.

Oblast Omega  je omezena zdola parabolou a shora úsečkou. Podle obrázku lze snadno určit meze pro dvojný integrál.

>    Doubleint(rhs(dQ)-rhs(dP),y=x^2..x,x=0..1);

Int(Int(-4*x,y = x^2 .. x),x = 0 .. 1)

Spočteme hodnotu integrálu

>    value(%);

-1/3

V kapitole o knihovně VectorCalculus  byl uveden příkaz pro výpočet potenciálu. Jde o příkaz ScalarPotential . Na tomto příkladu si ukážeme jeho použití. Ještě připomeňme, že výsledný integrál je roven rozdílu funkční hodnoty potenciálu v koncovém bodu a funkční hodnoty potenciálu v počátečním bodu. V tomto případě také mluvíme o nezávislosti křivkového integrálu na integrační cestě.

>    restart: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

>    v:=VectorField(<(x+y)^2,-(x-y)^2>,cartesian[x,y]);

v := Vector(%id = 3143096)

# Vektorové pole získané z integrandů

Výpočet potenciálu

>    ScalarPotential(v);

Je vidět, že potenciál neexistuje, což je v souladu s tím, že v tomto případu není v oblasti splněna podmínka

>    Diff(P(x,y),y)=Diff(Q(x,y),x);

Diff(P(x,y),y) = Diff(Q(x,y),x)

která je ekvivalentní s výrokem o nezávislosti křivkového integrálu na integrační cestě, viz.[1, V.7.6].

Pro kontrolu naznačené derivace spočteme

>    diff((x+y)^2,y)=diff(-(x-y)^2,x);

2*x+2*y = -2*x+2*y

>   

>