Kapitola 12
Derivace funkce v Maplu

V této kapitole je z výpočetního hlediska velmi efektivní použití počítačového systému k přímým výpočtům parciálních derivací, zejména při kontrole výsledků náročnějších výpočtů. Pomocí PC-grafů můžeme také znázorňovat geometrický význam parciálních a směrových derivací.

12.1 Parciální derivace 1. řádu

Pomocí Maplu lze Definici 3.1 zapsat následujícím způsobem:
> Diff(f(x[0],y[0]),x)=
> Limit((f(x,y[0])-f(x[0],y[0]))/(x-x[0]),  x=x[0]);

 ∂ f (x, y0)− f (x0,y0) ---f (x0,y0) = xl→imx ------------------ ∂x 0 x − x0


> Diff(f(x[0],y[0]),y)=
> Limit((f(x[0],y)-f(x[0],y[0]))/(y-y[0]),  y=y[0]);

-∂-f (x0,y0) = lim f-(x0,y)-−-f (x0,y0) ∂y y→y0 y − y0

Označíme–li x x0 = h a y y0 = k, můžeme použít analogického zápisu:
> Diff(f(x[0],y[0]),x)=
> Limit((f(x[0]+h,y[0])-f(x[0],y[0]))/h,  h=0);

-∂-f (x0,y0) = lim f-(x0 +-h,y0)-−-f (x0,y0) ∂x h→0 h


> Diff(f(x[0],y[0]),y)=
> Limit((f(x[0],y[0]+k)-f(x[0],y[0]))/k,  k=0);

∂-f (x ,y ) = lim f-(x0,y0 +-k)-−-f (x0,y0) ∂y 0 0 k→0 k

 

Příklad 12.1. Určete parciální derivace funkce f(x,y) = x4y2 xy + 7 v obecném bodě [x,y ]
i) podle definice.
> f:=(x,y)->x^4*y^2-x*y+7;

f := (x,y ) → x4y2 − xy + 7


> Limit((f(x+h,y)-f(x,y))/h, h=0):"=value(");

 (x + h)4 y2 − (x + h )y − x4 y2 + x y 3 lhim→0 ----------------h----------------- = y( 4yx − 1)


> Limit((f(x,y+k)-f(x,y))/k, k=0):"=value(");

 4 2 4 2 lim x-(-y +-k-)-−-x-(y +-k-)−-x-y-+-x-y = x( 2yx3 − 1) k→0 k

Tedy

∂f-(x,y) = y(4yx3 − 1) ∂x
a
∂f-(x,y) = x(2yx3 − 1). ∂y

ii) Využitím příkazu diff. Maple umožňuje i přímý výpočet parciálních derivací. Ten využíváme tehdy, pokud je parciální derivování dostatečně procvičeno a rutinními výpočty se nechceme dále zdržovat, případně ke kontrole správnosti výpočtu. K symbolickému derivování používáme příkazu diff pro výrazy a funkčního operátoru D pro funkce1:
> Diff(f(x,y),x):"=value(");

-∂- 4 2 3 2 ∂x ( x y − xy + 7) = 4x y − y


> factor(");

-∂- 4 2 3 ∂x (x y − x y + 7 ) = y (4y x − 1 )


> Diff(f(x,y),y):"=factor(value("));

-∂- 4 2 3 ∂y (x y − x y + 7 ) = x (2y x − 1 )


> D[1](f);

(x,y) → 4 x3y2 − y


> factor(D[1](f)(x,y));

 3 y(4 yx − 1)


> factor(D[2](f)(x,y));

x(2 yx3 − 1)

 

 

12.2 Geometrický význam parciálních derivací

Grafických možností Maplu využijeme nyní i k znázornění geometrického významu parciálních derivací. PC-grafem znázorníme geometrický význam parciální derivace funkce f(x,y) = x + y2 x3y podle x v bodě [1,2].

Generujme postupně PC-graf funkce f (p1), rovinu ρ: y = 2 (p2, za využití příkazu drawplane z knihovny mvcalp), křivku, která je průsečnicí roviny ρ s grafem funkce f (p3) a konečně tečnu k této křivce v bodě [1,2] (p4), ležící v rovině ρ. Parciální derivace funkce f podle x udává směrnici této tečny (smerx). Jednotlivé PC-grafy nevykreslujeme na obrazovku, v závěru je pomocí příkazu display3d složíme do výsledného PC-grafu (obr. 12.1 ):
> f:=(x,y)->x+y^2-x^3*y;

f := (x,y) → x + y2 − x3y


> bod:=[1,2];

bod := [1,2 ]


> p1:=plot3d(f(x,y),x=-2..2,y=-3..3,axes=framed):


> with(mvcalp):


> with(plots):


> p2:=drawplane(y=bod[2],x=-2..2, z=-10..20,
> axes=framed):


> p3:=plot3d([x,bod[2],f(x,bod[2])],x=-2..2,y=-3..3,
> axes=framed, thickness=3, color=black):


> smerx:=limit((f(bod[1]+h,bod[2])-f(bod[1],bod[2]))/h,
> h=0);

smerx := − 5


> p4:=spacecurve(evalm([bod[1],bod[2],
> f(bod[1],bod[2])]+t*[1,0,smerx]),
> t=-3..1, color=black, thickness=3):


> display3d({p1,p2,p3,p4}, labels=[x,y,z]);


 

PIC

obr. 12.1:
PIC
obr. 12.2:

Obdobně generujme i PC-graf znázorňující parciální derivaci podle y. Zkoumaná funkce je zde uvedena z jiného úhlu pohledu (obr. 12.2):
> g2:=drawplane(x=bod[1],y=-3..3,z=-10..20):


> g3:=plot3d([bod[1],y,f(bod[1],y)], x=-2..2, y=-3..3,
> thickness=3, color=black):


> smery:=limit((f(bod[1],bod[2]+h)-f(bod[1],bod[2]))/h,
> h=0);

smery := 3


> g4:=spacecurve(evalm([bod[1],bod[2],f(bod[1],bod[2])]
> +t*[0,1,smery]), t=-4..1, color=black, thickness=3):


> display3d({p1,g2,g3,g4}, labels=[x,y,z],
> orientation=[129,-131]);

Uvedené postupy jsou univerzální a umožňují generovat tento PC-graf pro libovolnou funkci, která má v zadaném bodě parciální derivace pouze změnou zadání funkce a souřadnic bodu, ve kterém parciální derivace počítáme. Samostatné generování těchto PC-grafů studenty v počítačové laboratoři je vhodným cvičením na pochopení geometrického významu parciálních derivací.

Skutečnost, že z existence parciálních derivací funkce f(x,y) v bodě [x0,y0] neplyne spojitost v tomto bodě, ilustruje následující příklad:

Příklad 12.2. Funkce

 { 42 xx8+yy4 pro (x,y) ⁄= (0,0), f (x,y) = 0 pro (x,y) = (0,0)

> f:=(x,y)->if (x=0 and y=0) then 0
> else (x^4*y^2)/(x^8+y^4) fi:

má v bodě [0,0] obě parciální derivace (rovny nule):
> limit((f(x,0)-f(0,0))/(x-0), x=0);

0


> limit((f(0,y)-f(0,0))/(y-0), x=0);

0

a není zde spojitá, neboť blížíme–li se k bodu [0,0] po parabolách y = kx2, dostáváme:
> Limit(f(x, k*x^2), x=0)=limit(f(x, k*x^2), x=0);

 x8k2 k2 lixm→0 x8 +-k4-x8 = 1+-k4

To však znamená, že lim(x,y)→(0,0)f(x,y) neexistuje a tedy funkce f není v bodě [0,0] spojitá (obr. 12.3 ).
> plot3d(f, -1..1, -1..1, style=patchcontour,
> axes=boxed, grid=[100,100], orientation=[-45,35],
> contours=7, labels=[x,y,’z’]);

 


 

PIC

obr. 12.3:

12.3 Derivace vyšších řádů

K výpočtu derivací vyšších řádů se používá stejného příkazu jako pro derivaci prvního řádu, navíc pouze zadáme, kolikrát podle které proměnné derivujeme. Efektivnost výpočtu ilustrujme na následujícím příkladě:

Příklad 12.3. Ukažte, že pro funkci

u = ∘-----1------- x2 + y2 + z2
platí uxx + uyy + uzz = 0.
> u:=(x,y,z)->1/sqrt(x^2+y^2+z^2);
u := (x,y,z) → --------1--------- sqrt( x2 + y2 + z2)


> st := time():


> diff(u(x,y,z),x$2)+diff(u(x,y,z),y$2)+
> diff(u(x,y,z),z$2);

 -------x2-------- -------1--------- -------y2-------- 3( x2 + y2 + z2)5∕2 − 3 (x2 + y2 + z2)3∕2 + 3(x2 + y2 + z2)5∕2+ 2 + 3-------z--------- ( x2 + y2 + z2)5∕2

> simplify(");
0

Tím je zkoumaná rovnost ověřena. Dobu výpočtu v sekundách určíme příkazem:
> time() - st;

.050

 

 

Následující příklad ukazuje, že bez předpokladu spojitosti smíšených parciálních derivací fxy, fyx v bodě [x0,y0] rovnost fxy(x0, y0) = fyx(x0, y0) obecně neplatí.

Příklad 12.4. Nechť je funkce f dána předpisem

 { xy3−x3y pro (x,y) ⁄= (0,0), f(x,y) = x2+y2 0 pro (x,y) = (0,0).
Ukažte, že pro tuto funkci je fxy(0,0)fyx(0,0).
Počítejme postupně parciální derivace 1. řádu
 { y3−3x2y 2x(xy3−-x3y) fx(x, y) = x2+y2 − (x2+y2)2 , (x,y) ⁄= (0,0), 0 (x,y) = (0,0).
Pro výpočet fx(0,0) jsme použili definice fx(0,0) = limh→0f(h,0)−hf(0,0). Obdobně
 { 3xy2−x3 2y(xy3−-x3y) fy(x, y) = x2+y2 − (x2+y2)2 , (x, y) ⁄= (0,0), 0 (x, y) = (0,0).
Využitím těchto výsledků plyne z definice parciálních derivací 2. řádu
fxy(0,0) = limh→0f (0,h) − f (0,0) -x--------x------ h = limh→0h− 0 ----- h = 1,
fyx(0,0) = limh→0fy(h,-0)−-fy(0,0) h = limh→0− h-−-0 h = 1.
Tedy pro tuto funkci je fxy(0,0)fyx(0,0).
Výpočet:
> f:=(x,y)->if (x=0 and y=0) then 0
> else (x*y^3-x^3*y)/(x^2+y^2) fi:


> D[1](f)(x,y);

y3 − 3x2y (x y3 − x3 y)x ---2---2--− 2 ----2----2-2-- x + y (x + y )


> D[2](f)(x,y);

 2 3 3 3 3x-y-−-x--− 2 (x-y-−-x--y)y- x2 + y2 (x2 + y2)2


> fx0:=limit((f(h,0)-f(0,0))/h, h=0);

fx0 := 0


> fy0:=limit((f(0,h)-f(0,0))/h, h=0);

fy0 := 0


> limit((D[1](f)(0,h)-fx0)/h, h=0);

1


> limit((D[2](f)(h,0)-fy0)/h, h=0);

− 1

 

Počítačem generujme PC-graf funkce, kterou si jinak umíme jen velmi obtížně představit. Tento PC-graf je zajímavý i tím, že z něj není vidět, že smíšené parciální derivace nejsou záměnné (obr. 12.4 ):
> plot3d(f, -3..3, -3..3, style=patch, axes=boxed,
> labels=[x,y,’z’]);


 

PIC

obr. 12.4:

 

 

12.4 Směrové derivace

Na rozdíl od parciálních derivací nemáme v Maplu k dispozici přímý příkaz k výpočtu směrových derivací. K výpočtu tedy používáme přímo Definice 3.3 . V Maplu zápis vypadá takto:
> Limit((f(x[0]+t*u[1], y[0]+t*u[2])-f(x[0],y[0]))/t,
> t=0);

lim f-(x0 +-tu1,y0-+-tu2)−-f-(x0,y0) t→0 t

 

Příklad 12.5. Určete směrovou derivaci funkce

g(x,y) = x2 + y2 − x cos(py) − ysin(px)
v bodě [1,2] ve směru vektoru u = (2∘ --- (5),1∘ --- (5)).
Nejdříve definujme funkci g(x,y):
> g:=(x,y)->x^2+y^2-x*cos(Pi*y)-y*sin(Pi*x);
 2 2 g := (x,y ) → x + y − x cos( py )− y sin( px )

a nyní aplikujme definici:
> Dg(-1,2):=limit((g(-1+t*2/sqrt(5),
> 2+t*1/sqrt(5))-g(-1,2))/t, t=0);

Dg( − 1,2) := − 2√5--+ 4-p√5-- 5 5

 

Ke znázornění geometrického významu směrových derivací použijeme podobného postupu jako u derivací parciálních. Generování tohoto PC-grafu je opět vhodným cvičením na pochopení geometrického významu a definice směrových derivací.

PC-grafem znázorníme směrovou derivaci funkce f(x,y) = x2 + y2 ve směru vektoru u = (1,1) v bodě [1,1].

Tvorbu rozdělme do několika samostatných částí, postupně generujme PC-graf funkce f (s1), rovinu y = x (s2, znázorňuje směr vektoru u, v tomto případě ji zadáváme parametricky), křivku, která je průsečnicí roviny s grafem funkce (s3, tedy funkci jedné proměnné ϕ(t), jejíž derivaci hledáme) a konečně tečnu k ϕ(t) v bodě [1,1] (s4). Výsledný PC-graf je znázorněn na obrázku 12.5 .


 

PIC

obr. 12.5:


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

f := (x, y) → x2 + y2


> bod:=[1,1];

bod := [1,1 ]


> u:=[1,1];

u := [1,1 ]


> s1:=plot3d(f(x,y), x=-3..3, y=-3..3):


> s2:=plot3d([bod[1]+u[1]*t, bod[2]+u[2]*t,z], t=-4..2,
> z=-5..18, grid=[5,5]):


> with(plots):


> s3:=spacecurve([bod[1]+u[1]*t, bod[2]+u[2]*t,
> f(bod[1]+u[1]*t, bod[2]+u[2]*t)], t=-4..2,
> thickness=3, color=black):


> smer:=limit((f(bod[1]+t*u[1],
> bod[2]+t*u[2])-f(bod[1], bod[2]))/t, t=0);

smer := 4


> s4:=spacecurve(evalm([bod[1],bod[2], f(bod[1],
> bod[2])]+t*[u[1],u[2],smer]), t=-2..2, thickness=3):


> display3d({s1,s2,s3,s4}, scaling=constrained,
> orientation=[-28,-170], labels=[x,y,z], axes=framed);

Změnou zadání funkce, bodu (bod) a vektoru u (u) můžeme generovat další PC-grafy.

V příkladu 12.2 jsme ukázali, že z existence parciálních derivací funkce f v bodě [x0,y0] neplyne spojitost funkce v tomto bodě. Nyní na stejné funkci ukážeme, že ani existence směrové derivace v bodě [x0,y0] ve směru libovolného vektoru u není postačující pro spojitost.

Příklad 12.6. Ukažte, že funkce f definovaná předpisem

 {-x4y2 f(x,y) = x8+y4 pro (x,y) ⁄= [0,0], 0 pro (x,y) = [0,0]
má v bodě [0,0] směrovou derivaci ve směru libovolného vektoru u ∈ 𝕍2 a přesto není v tomto bodě spojitá. (𝕍2 je označení pro zaměření 2-rozměrného euklidovského prostoru.)
Je–li 0u = (u1,u2) ∈ 𝕍2 libovolný vektor, pak podle definice směrové derivace platí
 1- -t4u41-⋅t2u22-- fu(0,0) = ltim→0 t[f(0+ tu1,0 + tu2) − f(0,0)] = ltim→0 t(t8u81 + t4u42) = 4 = lim -tu81u2-4-= 0. t→0 t4u1 + u2

> f:=(x,y)->if (x=0 and y=0) then 0
> else (x^4*y^2)/(x^8+y^4) fi:


> Limit((f(0+t*u[1], 0+t*u[2])-f(0,0))/t, t=0)=
> limit((f(0+t*u[1], 0+t*u[2])-f(0,0))/t, t=0);

 5 4 2 lim --t-u1--u2--- = 0 t→0 t8u18 + t4 u24

Přitom v příkladu 12.2 jsem ukázali, že funkce f není v bodě [0,0] spojitá, viz také příklad 3.5 a obr. 12.3.

 

12.5 Parciální derivace složených funkcí

Výpočty parciálních derivací složené funkce dvou proměnných jsou úkolem poměrně početně náročným, v učitelském studiu dnes probíráme pouze výpočet parciální derivace složené funkce prvního řádu. Ukážeme zde možnost, jak tyto výpočty značně zjednodušit za pomoci počítače.

Pomocí Maplu lze vzorce pro parciální derivace 1. řádu složené funkce dvou proměnných v obecném bodě [u,v] (Věta 5.1 ) zapsat takto:
> dFdx:=Diff(f(u,v),u)*Diff(u(x,y),x)+
> Diff(f(u,v),v)*Diff(v(x,y),x);

 ( ∂ ) ( ∂ ) ( ∂ ) ( ∂ ) dFdx := ---f(u,v ) ---u( x,y) + ---f(u,v ) ---v(x,y) ∂u ∂x ∂v ∂x


> dFdy:=Diff(f(u,v),u)*Diff(u(x,y),y)+
> Diff(f(u,v),v)*Diff(v(x,y),y);

 ( ) ( ) ( ) ( ) dFdy := ∂--f(u,v ) ∂-u( x,y) + -∂-f(u,v ) ∂--v(x,y) ∂u ∂y ∂v ∂y

Úkolem pro studenty do počítačové laboratoře je využití těchto vzorců v procedurách pro výpočet parciálních derivací složených funkcí:
> dzd1:=proc(z,uu,vv,u,v,x,y)


> diff(z,u)*diff(uu,x)+diff(z,v)*diff(vv,x);


> end:


> dzd2:=proc(z,uu,vv,u,v,x,y)


> diff(z,u)*diff(uu,y)+diff(z,v)*diff(vv,y);


> end:

Procedury dzd1 a dzd2 určují parciální derivaci 1. řádu složené funkce dvou proměnných. Parametry procedury jsou: z je funkce z = f(u,v), uu je funkce u(x,y), vv je funkce v(x,y) a u, v, x a y jsou proměnné, ve kterých jsou funkce zapsány (můžeme použít libovolné označení proměnných, viz příklad 12.8 ). Procedury můžeme použít i obecně na funkce z(u,v), u(x,y) a v(x,y), přičemž dzd1 počítá parciální derivaci podle první proměnné (zde podle x) a dzd2 podle 2. proměnné (y):
> dzd1(z(u,v), u(x,y), v(x,y), u,v,x,y);

( ) ( ) ( ) ( ) ∂-- -∂- ∂-- -∂- ∂u z(u,v) ∂x u( x,y) + ∂v z(u,v ) ∂x v( x,y)


> dzd2(z(u,v), u(x,y), v(x,y), u,v,x,y);

( ∂ ) ( ∂ ) ( ∂ ) ( ∂ ) ---z(u,v ) ---u( x,y) + ---z(u,v ) ---v(x, y) ∂u ∂y ∂v ∂y

 

Příklad 12.7. Je dána funkce z = eu sinv, kde u = xy a v = x + y. Určete zxzy.
Použitím procedur dzd1 a dzd2 dostáváme:
> zx:=dzd1(exp(u)*sin(v), x*y, x+y, u,v,x,y );

zx := eusin(v )y + eucos(v)


> zy:=dzd2(exp(u)*sin(v), x*y, x+y, u,v,x,y );

 u u zy := e sin(v )x+ e cos(v)

Dosazením za u a v dostáváme:
> zx:=subs(u=x*y, v=x+y, zx);

zx := e(xy)sin( x+ y )y + e(x y)cos(x+ y)


> zy:=subs(u=x*y, v=x+y, zy);

zy := e(xy)sin(x + y )x+ e(x y)cos(x+ y)

 

Poznámka 12.1. Pro řešení příkladu 12.7 můžeme použít i přímého výpočtu:
> u:=(x,y)->x*y;v:=(x.y)->x+y;

u := (x, y) → x y

 

v := x.y → x+ y


> vyraz:=exp(u(x,y))*sin(v(x,y));

 (xy ) vyraz := e sin( x+ y )


> zx:=diff(vyraz,x);

zx := y e(x y)sin(x + y)+ e(x y)cos(x+ y)


> zy:=diff(vyraz,y);

zy := x e(x y)sin(x + y)+ e(x y)cos(x+ y)

V tomto případě jsou však vzorce pro výpočet parciálních derivací složené funkce „skryty“ a tento postup je vhodný pouze pro kontrolu správnosti výpočtu.

 

Příklad 12.8. Transformujte rovnici

yfx(x, y)− xfy(x,y) = 0
do polárních souřadnic ϕ = arctany x, r = ∘ ------- x2 + y2.
Označme z = f(x,y) a dosaďme do vzorců pro derivace prvního řádu:
> alias(z=z(r,phi));
I,z

(označení z=z(r,phi) bylo použito pro zjednodušení Mapleovského výstupu)
> zx:=dzd1(z, sqrt(x^2+y^2), arctan(y/x), r,phi,x,y);

 ( ) (-∂ z)x ∂∂φ z y zx := ∘∂r------− ---(------2)- x2 + y2 x2 1+ y-- x2


> zy:=dzd2(z, sqrt(x^2+y^2), arctan(y/x), r,phi,x,y);

 ( ) ∂∂r z y ∂∂φ z zy := ∘--2----2 + --(----y2)-- x + y x 1 + -2- x

Což po úpravě dává rovnici:
> simplify(y*zx-x*zy=0);

 ( ) − ∂--z = 0 ∂φ

 

Poznámka 12.2. Řešení příkladu 12.8 opět za použití přímého výpočtu:
> vyraz:=z(sqrt(x^2+y^2),arctan(y/x));

 ( ∘ -2---2- (y-)) vyraz := z x + y ,arctan x

 


> zx:=diff(vyraz,x);

 (∘ ------- ( )) (∘ ------- ( )) D1(z ) x2 + y2,arctan y- x D2( z) x2 + y2,arctan y- y zx := -----------∘-------------x-----− ------------(-------)----x----- x2 + y2 2 y2- x 1+ x2


> zy:=diff(vyraz,y);

 (∘ -2----2 (y-)) (∘ -2----2 (y-)) D1(z-)---x--+-y-,arctan--x---y- D2(z-)---x--+-y-,arctan--x---- zy := ∘x2-+-y2- + ( y2) x 1+ -2- x

Označíme-li

 (∘ ------- (y)) ∂z (∘ ------- (y)) ∂z D1( z) x2 + y2,arctan -- = ---a D2( z) x2 + y2,arctan -- = --- x ∂r x ∂φ
dostáváme:
> zx:=subs({op(1,op(1,zy))=
> Diff(z,r),op(1,op(2,zy))=Diff(z,phi)},  zx);
 ( ) ( ) ∂∂r z x ∂∂φ z y zx := ∘--2---2-− ---(------2)- x + y x2 1+ y-- x2


> zy:=subs({op(1,op(1,zy))=
> Diff(z,r),op(1,op(2,zy))=Diff(z,phi)},  zy);

 ( ) --∂∂r z-y- ----∂∂φ z---- zy := ∘x2--+-y2 + ( y2) x 1 + -2- x


> simplify(y*zx-x*zy=0);

 ( ) ∂-- − ∂φ z = 0

 

 

Podobným způsobem je možno naprogramovat i procedury pro výpočet parciálních derivací druhého řádu:
> dzdd1:=proc(z,uu,vv,u,v,x,y)


> diff(z,u,u)*diff(uu,x)^2+2*diff(z,u,v)*diff(vv,x)*
> diff(uu,x)+diff(z,v,v)*diff(vv,x)^2+diff(z,u)*
> diff(uu,x,x)+diff(z,v)*diff(vv,x,x);


> end:


> dzdd2:=proc(z,uu,vv,u,v,x,y)


> diff(z,u,u)*diff(uu,y)^2+2*diff(z,u,v)*diff(vv,y)*
> diff(uu,y)+diff(z,v,v)*diff(vv,y)^2+diff(z,u)*
> diff(uu,y,y)+diff(z,v)*diff(vv,y,y);


> end:


> dzdd12:=proc(z,uu,vv,u,v,x,y)


> diff(z,u,u)*diff(uu,x)*diff(uu,y)+diff(z,u,v)*
> diff(vv,y)*diff(uu,x)+diff(z,u,v)*diff(vv,x)*
> diff(uu,y)+diff(z,v,v)*diff(vv,x)*diff(vv,y)+
> diff(z,u)*diff(uu,x,y)+diff(z,v)*diff(vv,x,y);


> end:

Zde dzdd1 je procedura pro výpočet druhé parciální derivace podle 1. proměnné, dzdd2 pro výpočet druhé parciální derivace podle druhé proměnné a dzdd12 pro výpočet smíšené parciální derivace, přičemž význam parametrů procedur je stejný jako u procedur pro výpočet prvních derivací.

Nyní si pomocí těchto procedur připomeňme vzorce pro parciální derivace složené funkce 2. řádu v obecném bodě [u,v] (Věta 5.2 ):
> alias(z=z(u,v));

I,z


> dzdd1(z, u(x,y), v(x,y), u,v,x,y);

( 2 ) ( )2 ( 2 ) ( ) ( ) -∂--z -∂-u( x,y) + 2 -∂---z -∂-v( x,y) -∂-u(x,y ) ∂u2 ∂x ∂u∂v ∂x ∂x ( ∂2 ) ( ∂ )2 ( ∂ ) ( ∂2 ) + ∂v2-z ∂x-v(x,y) + ∂u-z ∂x2-u(x,y ) ( ) ( 2 ) + ∂--z ∂---v(x,y) ∂v ∂x2

> dzdd2(z, u(x,y), v(x,y), u,v,x,y);
( 2 ) ( )2 ( 2 ) ( ) ( ) ∂--z -∂-u( x,y) + 2 -∂---z -∂-v(x, y) ∂--u(x,y ) ∂u2 ∂y ∂u∂v ∂y ∂y ( ∂2 ) ( ∂ )2 ( ∂ ) ( ∂2 ) + --2-z ---v(x,y) + ---z --2-u(x,y ) ( ∂v ) ( ∂y ) ∂u ∂y ∂-- ∂2-- + ∂v z ∂y2 v(x,y)

> dzdd12(z, u(x,y), v(x,y), u,v,x,y);
( 2 ) ( ) ( ) ∂--z ∂--u(x,y) -∂-u( x,y) ∂u2 ∂x ∂y ( ∂2 ) ( ∂ ) ( ∂ ) + ∂u-∂v-z ∂y-v(x,y) ∂x-u( x,y) ( 2 ) ( ) ( ) + -∂----z ∂--v(x,y) -∂-u( x,y) ∂u ∂v ∂x ∂y ( ∂2 ) ( ∂ ) ( ∂ ) ( ∂ ) ( ∂2 ) + --2-z ---v(x,y ) ---v( x,y) + ---z -----u( x,y) ( ∂v ) ( ∂x ) ∂y ∂u ∂y∂x ∂-- -∂2--- + ∂v z ∂y ∂x v(x,y)
Možnosti nových procedur ilustrujeme na následujících příkladech.

Příklad 12.9. Transformujte do nových nezávisle proměnných u = x + ay, v = x ay rovnici

a2zxx − zyy = 0.

Využitím procedur dzdd1 a dzdd2 dostáváme:
> alias(z=z(u,v));

I,z


> zxx:=dzdd1(z, x+a*y, x-a*y, u,v,x,y);

 ( 2 ) ( 2 ) ( 2 ) zxx := -∂--z + 2 -∂---z + -∂--z ∂u2 ∂u ∂v ∂v2


> zyy:=dzdd2(z, x+a*y, x-a*y, u,v,x,y);

 ( ) ( ) ( ) -∂2- 2 --∂2-- 2 ∂2-- 2 zyy := ∂u2 z a − 2 ∂u ∂v z a + ∂v2 z a


> simplify(a^2*zxx-zyy=0);

 ( ∂2 ) 2 4 ∂u-∂v-z a = 0

 

Příklad 12.10. Transformujte rovnici

 2 2 x zxx + y zyy − 2xyzxy + xzx + yzy = 0
do nezávisle proměnných u = xy a v = x∕y.

> zx:=dzd1(z, x*y,x/y,u,v,x,y);
 ( ∂ ) ∂-z zx := ---z y + ∂v-- ∂u y


> zy:=dzd2(z, x*y,x/y,u,v,x,y);

 ( ) ( ) -∂- -∂∂v z-x- zy := ∂u z x− y2


> zxx:=dzdd1(z, x*y,x/y,u,v,x,y);

 ( 2 ) ( 2 ) ∂2- zxx := ∂--z y2 + 2 -∂---z + ∂v2 z ∂u2 ∂v∂u y2


> zyy:=dzdd2(z, x*y,x/y,u,v,x,y);

 ( ) ( ) ( 2 ) ∂∂v2∂u z x2 -∂22 z x2 (∂-z)x zyy := -∂-2 z x2 − 2 -----2-----+ -∂v--4----+ 2 -∂v-3--- ∂u y y y


> zxy:=dzdd12(z, x*y,x/y,u,v,x,y);

 ( ) ( ∂2 ) ∂∂2v2 z x ( ∂ ) -∂ z zxy := --2-z yx − -----3--- + ---z − ∂v2- ∂u y ∂u y


> tr:=expand(simplify(x^2*zxx+y^2*zyy-
> 2*x*y*zxy+x*zx+y*zy=0));

 ( 2 ) x2 ∂∂v2-z x (-∂ z) tr := 4-----2---- + 4---∂v--- = 0 y y

Dalšími úpravami dostáváme:
> tr:=factor(student[powsubs](x/y=v,tr));

 (( 2 ) ( )) tr := 4 v ∂---z v + -∂-z = 0 ∂v2 ∂v


> tr/(4*v);

( ∂2 ) ( ∂ ) --2 z v + ---z = 0 ∂v ∂v

 

Příklad 12.11. Transformujte rovnici

zxx + zyy = 0
do polárních souřadnic x = r cosφ, y = r sinφ za předpokladu, že funkce z má spojité parciální derivace 2. řádu.

> alias(z=z(x,y));
I,z


> zr:=dzd1(z, r*cos(phi), r*sin(phi), x,y,r,phi);

 ( ) ( ) zr := -∂-z cos(φ) + -∂-z sin( φ) ∂x ∂y


> zrr:=dzdd1(z, r*cos(phi), r*sin(phi), x,y,r,phi);

 ( ) ( ) ( ) -∂2- 2 -∂2--- -∂2- 2 zrr := ∂x2 z cos(φ ) +2 ∂y∂x z sin( φ)cos( φ)+ ∂y2 z sin( φ)


> zff:=dzdd2(z, r*cos(phi), r*sin(phi), x,y,r,phi);

 ( ∂2 ) 2 2 ( ∂2 ) 2 zff := ∂x2 z r sin(φ ) − 2 ∂y-∂x-z r cos(φ)sin( φ) ( 2 ) ( ) ( ) + -∂--z r2cos(φ )2 − -∂-z r cos(φ) − -∂-z rsin(φ ) ∂y2 ∂x ∂y
Vynásobíme-li vzorec pro zrr výrazem r2 a sečteme se vzorcem pro zφφ, dostáváme:
> r2:=r^2*Diff(z,r,r)+Diff(z,phi,phi)=
> simplify(r^2*zrr+zff);
 ( 2 ) ( 2 ) r2 := r2 -∂--z + ∂---z = ( ∂r2) ( ∂f2) ( ) ( ) 2 ∂2 ∂2 2 ∂ ∂ r ∂y2 z + ∂x2-z r − ∂x-z rcos(φ )− ∂y-z r sin( φ)
Dosazením a úpravami dále dostáváme:
> r2:=simplify(r2, [diff(z,x,x)+diff(z,y,y)=0,
> Diff(z,r)]=zr);
 ( ) ( ) ( ) 2 -∂2- -∂2- -∂- r2 := r ∂r2 z + ∂φ2 z = − r ∂r z


> lhs(r2)-rhs(r2)=0;

 ( ∂2 ) ( ∂2 ) ( ∂ ) r2 --2 z + ---2 z + r ---z = 0 ∂r ∂ φ ∂r

 

 

1Výraz a funkce ve smyslu základních datových struktur Maplu.