8. přednáška (integrály a jejich aplikace) Úvod Základním příkazem pro výpočet integrálů je příkaz int. int(x^,x); Int(x^,x); x dx Int(x^,x=..)=int(x^,x=..); x x dx = Užitečný je i balík IntegrationTools, pomocí kterého můžeme integrál substituovat, provádět per-partes, apod. with(integrationtools); [ Change, CollapseNested, Combine, Expand, ExpandMultiple, Flip, GetIntegrand, GetOptions, GetParts, GetRange, GetVariable, Parts, Split, StripOptions ] Substituce: i:=int(cos(x)^*sin(x)^,x=..pi/); i := i_subst:=change(i,sin(x)=t); value(i_subst); value(i); π cos( x) sin( x ) dx i_subst := ( + t ) t dt 5
5 Per-partes: i:=int(x^*ln(x),x); i := x ln( x) dx i_per_partes:=parts(i,ln(x)); x i_per_partes := 4 x4 ln( x ) 4 value(i_per_partes); diff(%,x); 4 x4 ln( x ) 6 x ln( x) x 4 dx Další možnosti: i:=int(x^,x=..8); i := 8 x dx Integrovaná funkce: GetIntegrand(i); x Proměnná v integrálu: GetVariable(i); x Meze integrálu: GetRange(i); op(,getrange(i));.. 8
op(,getrange(i)); Jednorozměrný integrál 8 Obsah plochy pod křivkou (mezi křivkami) Příklad: Je dána parabola p( x ) = x x + 5. Sestrojíme tečny k parabole v bodech [-,?] a [,?]. Vypočtěte obsah plochy ohraničené parabolou p a těmito tečnami. p:=x-x^-*x+5; p := x x x + 5 t:=p(-)+d(p)(-)*(x+); t:=p()+d(p)()*(x-); t := 4 5 x t := 4 + x plot([p(x),t,t],x=-..4,thickness=5);
prusecik:=solve(t=t,x); prusecik := obsah:=int(p(x)-t,x=-..prusecik); 8 obsah := obsah:=int(p(x)-t,x=prusecik..); obsah:=obsah+obsah; Hledaný obsah je 6. Délka křivky 8 obsah := 6 obsah :=
Příklad: Vypočtěte délku křivku f( x ) = ln( x ), kde x probíhá interval < a, b ( < a < b). Poté vypočtěte délku pro a = a b = e. Vzorec pro délku křivky (explicitně zadané) má tvar delka = a b d + dx f( x ) dx. f:=x-ln(x); f := x ln( x) int(sqrt(+diff(f(x),x)^),x=a..b); Warning, unable to determine if is between a and b; try to use assumptions or use the AllSolutions option a b + x dx Maple potřebuje dodatečné informace o parametrech a a b. Použijeme příkaz assume. assume(<a,a<b); int(sqrt(+diff(f(x),x)^),x=a..b); a~ + + arctanh + b~ + arctanh a~ + b~ + Co je arctanh? convert(%,ln); a~ + + ln + ln a~ + + a~ + ln + + ln b~ + vysledek:=unapply(%,a,b); b~ + b~ + vysledek ( a~, b~ ) a~ := + + ln + ln a~ + b~ + + ln + + ln b~ + vysledek(,exp()); b~ + a~ +
ln + ln ( e ) + + + ln + ( e) + + ln evalf(%); ( e ) + sqrt(+(exp()-)^); evalf(%);.497 + ( e ).9888764 plot([ln(x),/(exp()-)*(x-)],x=..exp(),thickness=5,co lor=[red,blue]); Délka (červené) křivky je.497 a délka (modré) úsečky je.9888764. Objem rotačního tělesa
Příklad: Vypočtěte objem tělesa, které vznikne rotací oblouku sinusoidy f( x ) = sin( x ) (x probíhá interval <, π) kolem osy x. Připomeňme, že vzorec pro objem rotačního tělesa má tvar objem = π f( x ) dx. objem:=pi*int(sin(x)^,x=..pi); Příklad: objem := Odvoďte vzorce pro objem následujících těles: - koule s poloměrem r - kulová úseč s poloměrem r a výškou v - rotační komolý kužel s výškou v a s poloměry podstav r a r. π a b Je jasné, že koule i kulová úseč vzniknou rotací jistých částí kružnice kolem osy x. Komolý kužel vznikne rotací úsečky kolem osy x. Koule: with(plots): p:=plot(sqrt(-x^),x=-..,filled=true,scaling=constrain ed,color=grey): p:=plot(sqrt(-x^),x=-..,scaling=constrained,color=red,thickness=5): display([p,p]);
rovnice:=sqrt(r^-x^); rovnice := r x objem:=pi*int(rovnice^,x=-r..r); Kulová úseč: objem := 4 π r p:=plot(sqrt(-x^),x=.6..,filled=true,scaling=constrai ned,color=grey): p:=plot(sqrt(-x^),x=-..,scaling=constrained,color=red,thickness=5): display([p,p]);
rovnice; r x objem:=pi*int(rovnice^,x=r-v..r); objem := π r v + objem:=simplify(objem); Komolý kužel: objem := r ( r v) π v ( r v) p:=plot(+x/,x=..5,filled=true,scaling=constrained,colo r=grey): p:=plot(+x/,x=..5,scaling=constrained,color=red,thickn ess=5): display([p,p]);
rovnice:=r[]+(r[]-r[])/v*x; ( r r ) x rovnice := r + v objem:=pi*int(rovnice^,x=..v); objem := π objem:=simplify(objem); Klasický kužel: r v r r r v r r objem := π ( + + r ) r r v r r[]:=; r[]:=r; objem; r := r := r π r v Obsah pláště rotačního tělesa Příklad:
Vypočtěte obsah pláště tělesa, které vznikne rotací křivky f( x ) = x na intervalu <, kolem osy x. Obecný vzorec pro obsah pláště rotačního tělesa má tvar obsah_plaste = π d f( x ) + d dx f( x ) x. f:=x-x^; a b f := x x obsah_plaste:=*pi*int(f(x)*sqrt(+diff(f(x),x)^),x=..) ; obsah_plaste := π 9 5 ln( ) + ln + 64 obsah_plaste:=simplify(%); evalf(%); Příklad: obsah_plaste := π ( 8 5 ln ( 5 + )).897976 Odvoďte vzorec pro povrch koule s poloměrem r. 5 4 Je jasné, že koule vznikne rotací půlkružnice kolem osy x. f:=x-sqrt(r^-x^); f := x r x obsah_plaste:=*pi*int(f(x)*sqrt(+diff(f(x),x)^),x=-r..r ); r obsah_plaste := π r x x + dx r x Maple potřebuje vědět více informací o parametru r. assume(r); obsah_plaste; r
4 π r~ Bonus Příklad: Jednoho dne před polednem začal padat (s konstantní intenzitou) sníh. V poledne vyjel na silnici pluh s konstantním výkonem (za jednotku času je schopen odklidit dané množství sněhu - čím je vrstva sněhu větší, tím pluh jede pomaleji). Za první hodinu (od : do :) pluh dokázal ujet (a odklidit) 4 km cesty a za druhou hodinu (od : do 4:) už jenom km. Určete, v kolik hodin (hodiny : minuty : sekundy) začal padat sníh. Řešení: Časem označme okamžik, kdy začal padat sníh a časem t okamžik vyjetí pluhu k (:). Ze zadání je patrné, že rychlost pluhu v čase t ( t t) je dána funkcí v( t) = t, kde k je konstanta související s výkonem pluhu. Vzdálenost, kterou pluh urazí mezi : a :, lze vyjádřit integrálem t + k 4:, lze spočítat jako dt. t t + t + t k dt a vzdálenost, kterou pluh urazí mezi : a t int(k/t,t=t[]..t[]+); { undefined And ( - < t, t < ) ln( t ) k + ln ( t + ) k otherwise assume(t[]); s:=int(k/t,t=t[]..t[]+); s := ln( t~ ) k + ln ( t~ + ) k s:=int(k/t,t=t[]+..t[]+); s := ln ( t~ + ) k + k ln ( t~ + ) solve({s=4,s=},{k,t[]}); Warning, solve may be ignoring assumptions on the input variables.
4 k = RootOf _Z ln + e RootOf _Z + e vysledek:=rhs(%[]); ln ( + e_z) + e _Z ln ( + e_z) + e _Z vysledek := + e allvalues(vysledek); + e map(evalc,{%}); ln / 5 + I π _Z~, t~ = + e RootOf _Z ln ( + e_z) + e _Z, + e ln / + 5 5 {, + } RootOf _Z ln ( + e_z) + e _Z 5 + I π _Z~ Vzhledem k tomu, že t, platí t = + 5. Zamyslete se, jak by šlo t vypočítat pouze s tužkou a papírem. t[]:=-/+sqrt(5)/; t := + 5 Jak dlouho před polednem tedy začal padat sníh? hodiny:=floor(t[]); hodiny := minuty:=floor((t[]-hodiny)*6); minuty := 7 sekundy:=evalf(((t[]-hodiny)*6-minuty)*6); sekundy := 4.959 Sníh tedy začal padat 7 minut 5 sekund před polednem, tzn. v ::55. Dvojný integrál
Int(x+y,x=..,y=..); int(x+y,x=..,y=..); x + y dx dy Int(x^+x*y,y=..x,x=..)=int(x^+x*y,y=..x,x=..); x + x y dy dx = 8 x Objem tělesa pod grafem (nezáporné) funkce dvou proměnných Příklad: Pro libovolné < a vypočtěte objem tzv. Vivianiova tělesa T a. Těleso T a je průnikem koule o poloměru a a rotačního válce majícího průměr a, přičemž plášť válce prochází středem koule.
assume(a); objem:=*int(sqrt(a^-x^-y^),y=-sqrt(a^/4-(x-a/)^)..s qrt(a^/4-(x-a/)^),x=..a); value(objem); Warning, computation interrupted objem := a~ x y dy dx a~ x + x a~ x + x a~ Maple si s integrálem neporadil, proto ho převedeme do polárních souřadnicích x = r cos( t ), y = r sin( t ). with(integrationtools): objem_pol:=change(objem,{x=r*cos(t),y=r*sin(t)}); Warning, computation of new ranges [_l[r](t).. _u[r](t), _alpha, _beta] not implemented _β objem_pol := a~ r cos( t) r sin( t) cos( t ) r + r sin( t) dr dt _α _u ( t ) r _l ( t ) r
Vidíme, že Maple integrál transformoval, ale neumí převést meze dvojného integrálu do polárních souřadnic. Udělejme to proto za něj sami. integrand:=simplify(getintegrand(objem_pol)); integrand := a~ r r objem_pol:=*int(integrand,r=..a*cos(t),t=-pi/..pi/); value(objem_pol); π objem_pol := a~ r r dr dt π a~ cos( t ) a~ π 8 9 a~ Pokud nám vadí vlnky, odstraníme je např. takto: subs(a='a',%); a π 8 9 a Obsah plochy v prostoru Příklad: Pro libovolné < a vypočtěte obsah plochy popsané podmínkami z, x + y + z = a, x + y a x.
assume(a); f:=sqrt(a^-x^-y^); f := a~ x y obsah:=int(sqrt(+diff(f,x)^+diff(f,y)^),y=-sqrt(a^/4-( x-a/)^)..sqrt(a^/4-(x-a/)^),x=..a); obsah := a~ x + a~ x x + a~ x value(obsah); Warning, computation interrupted x y + + dy dx a~ x y a~ x y Převedeme raději do polárních souřadnic:
with(integrationtools): Change(obsah,{x=r*cos(t),y=r*sin(t)}); Warning, computation of new ranges [_l[r](t).. _u[r](t), _alpha, _beta] not implemented _β _α _u ( t ) r _l ( t ) r a~ cos( t ) r + r sin( t) dr dt a~ + r cos( t ) + r sin( t) integrand:=simplify(getintegrand(%)); integrand := a~ r a~ r obsah_pol:=int(integrand,r=..a*cos(t),t=-pi/..pi/); obsah_pol := value(obsah_pol); obsah_pol:=factor(%); π π a~ cos( t ) a~ a~ ( a~ π a~ ) obsah_pol := a~ ( π ) subs(a='a',obsah_pol); Souřadnice těžiště tenké desky Příkad: a ( π ) r dr dt a~ r Najděte souřadnice těžiště homogenní tenké desky půlkruhového tvaru { x + y r, y } (s poloměrem < r). x-ová souřadnice těžiště: xt:=int(x,y=..sqrt(r^-x^),x=-r..r)/int(,y=..sqrt(r^- x^),x=-r..r);
value(xt); r r xt := r r r x x dy dx r x dy dx To, že je x-ová souřadnice těžiště nulová, nás jistě příliš nepřekvapí. y-ová souřadnice těžiště: yt:=int(y,y=..sqrt(r^-x^),x=-r..r)/int(,y=..sqrt(r^- x^),x=-r..r); value(yt); assume(r); value(yt); subs(r='r',%); yt := r r r r 4 r x y dy dx r x dy dx r csgn( r ) π 4 r~ π 4 r π Těžiště homogenního půlkruhu s poloměrem r se tedy nachází v bodě, 4 r π. Obrázek pro r = : with(plots): p:=plot([,sqrt(-x^)],x=-..,thickness=5,color=[red,re d]): p:=pointplot([,4/(*pi)],symbol=solidcircle,symbolsize=,color=blue):
display([p,p],scaling=constrained,axes=none); Trojný integrál i:=int(x*y^*z,z=..,y=..,x=..); value(i); Objem tělesa i := x y z dz dy dx 6 Objem tělesa T v prostoru je trojný integrál z jedničky přes množinu T. Souřadnice těžiště tělesa
Příklad: Pro < r vypočtěte souřadnice těžiště homogenní polokoule { x + y + z r, z} (s poloměrem r). x-ová souřadnice: xt:=int(x,z=..sqrt(r^-x^-y^),y=-sqrt(r^-x^)..sqrt(r^ -x^),x=-r..r)/int(,z=..sqrt(r^-x^-y^),y=-sqrt(r^-x ^)..sqrt(r^-x^),x=-r..r); value(xt); xt := r r r r r x d r x r x r x y x z dy dx r x d r x y z dy dx y-ová souřadnice: yt:=int(y,z=..sqrt(r^-x^-y^),y=-sqrt(r^-x^)..sqrt(r^ -x^),x=-r..r)/int(,z=..sqrt(r^-x^-y^),y=-sqrt(r^-x ^)..sqrt(r^-x^),x=-r..r); value(yt); yt := r r r r r x d r x r x r x y y z dy dx r x d r x y z dy dx z-ová souřadnice: zt:=int(z,z=..sqrt(r^-x^-y^),y=-sqrt(r^-x^)..sqrt(r^ -x^),x=-r..r)/int(,z=..sqrt(r^-x^-y^),y=-sqrt(r^-x ^)..sqrt(r^-x^),x=-r..r);
value(zt); assume(r); value(zt); subs(r='r',%); zt := r r r r r x d r x r x r x y z z dy dx r x d 8 r x y z dy dx csgn( r ) r r~ 8 r 8 Souřadnice těžiště homogenní polokoule s poloměrem r je tedy,, r 8. Křivkový integrál Křivkový integrál. druhu Pro výpočet křivkového integrálu. druhu slouží příkaz PathInt z balíku VectorCalculus. with(vectorcalculus); [ &x, *, +, -,., <,, <, About, AddCoordinates, ArcLength, BasisFormat, Binormal, Compatibility, ConvertVector, CrossProd, CrossProduct, Curl, Curvature, D, Del, DirectionalDiff, Divergence, DotProd, DotProduct, Flux, GetCoordinateParameters, GetCoordinates, GetNames, GetPVDescription, GetRootPoint, GetSpace, Gradient, Hessian, IsPositionVector, IsRootedVector, IsVectorField, Jacobian, Laplacian, LineInt, MapToBasis, Nabla, Norm, Normalize, PathInt, PlotPositionVector, PlotVector, PositionVector, PrincipalNormal, RadiusOfCurvature, RootedVector, ScalarPotential, SetCoordinateParameters, SetCoordinates, SpaceCurve, SurfaceInt, TNBFrame, Tangent, TangentLine, TangentPlane, TangentVector, Torsion, Vector, VectorField, VectorPotential, VectorSpace, Wronskian, diff, eval, evalvf, int, limit, series ]
PathInt(f(x,y),[x,y]=Path(<u(t),v(t),t=a..b)); Geometrická interpretace: d d f ( u( t ), v( t )) u( t ) + dt dt a b v( t ) Křivkový integrál. druhu nezáporné funkce dvou proměnných (šedá plocha) podél červené křivky je roven obsahu zelené plochy (viz obrázek). dt Poznámka: Křivkový integrál. druhu z jedničky odpovídá délce křivky, podél které integrujeme. Příklad:
Vypočtěte křivkový integrál. druhu z funkce f ( x, y ) = x + y po křivce x = cos( t ), y = sin( t ), kde t probíhá interval <, π. PathInt(x^+y^,[x,y]=Path(<cos(*t),sin(*t),t=..*Pi)) ; 4 π PathInt(x^+y^,[x,y]=Path(<cos(*t),sin(*t),t=..*Pi), inert); Příklad: π ( sin( t) + cos( t) ) ( / ) dt Vypočtěte křivkový integrál. druhu z funkce f ( x, y ) = x y po křivce x = t, y = + t, kde t probíhá interval <,. PathInt(x^*y,[x,y]=Path(<t,+t,t=-..)); Poznámka: 44 Integrovali jsme vlastně po úsečce s počátečním bodem [, ] a s koncovým bodem [, 4 ]. V Maplu tento integrál můžeme zapsat i takto: PathInt(x^*y,[x,y]=Line(<-,,<,4)); Příklad: 5 44 Vypočtěte povrch tělesa T, které je zadáno následujícími nerovnostmi: x, y, z, y x, z x + y. 5 Znázornění tělesa:
plotd(x^+y^,y=..-x^,x=..,filled=true,axes=framed); Obsah podstavy: s:=int(-x^,x=..); s:=value(s); s := x dx s := Obsah "horní podstavy": f:=x^+y^; f := x + y s:=int(sqrt(+diff(f,x)^+diff(f,y)^),y=..-x^,x=..) ;
s:=value(s); s := 5 4 x + 4 x 4 s := x + 4 x + 4 y dy dx 5 4 x + 4 x 4 x + ln ( x + 5 4 x + 4 x 4 ) 4 ln ( + 4 x ) x ln ( x + 5 4 x + 4 x 4 + ) ln ( + 4 x ) x dx 8 Maple to neumí spočítat, tak budeme muset počítat numericky. s:=evalf(s,); s :=.779975569456 Obsahy "bočních stěn" vyjádříme křivkovými integrály: with(vectorcalculus): b:=pathint(f,[x,y]=path(<t,,t=..)); b := b:=pathint(f,[x,y]=path(<,t,t=..)); b := b:=pathint(f,[x,y]=path(<t,-t^,t=..)); 7 5 7 b := ln( ) + + ln + 56 768 5 s+s+b+b+b; 5 4 7 5 7.4789 + ln( ) + + ln + 56 768 5 evalf(%);.67996 4 5 Křivkový integrál. druhu Pro výpočet křivkového integrálu. druhu slouží příkaz LineInt z balíku VectorCalculus. with(vectorcalculus): SetCoordinates(cartesian[x,y]);
cartesian x, y LineInt(VectorField(<f(x,y),g(x,y)),Path(<u(t),v(t),t=a..b)); Příkad: d d f ( u( t ), v( t) ) u( t ) + g ( u( t ), v( t) ) dt dt a b v( t ) Vypočtěte křivkový integrál. druhu vektorového pole f ( x, y ) = ( x + y, x y ) podél křivky x = t, y = t, kde t probíhá interval <,. LineInt(VectorField(<x^+y^,x^-y^),Path(<t,-abs(-t),t=..)); 4 LineInt(VectorField(<x^+y^,x^-y^),Path(<t,-abs(-t),t=..),inert); dt t + ( t ) ( t ( t ) ) abs (, t ) dt Interpretace (práce vykonaná silovým polem): with(plots): p:=fieldplot([x^+y^,x^-y^],x=..,y=..,arrows=large,color=black): p:=plot(-abs(-t),t=..,color=red,thickness=5): display([p,p]);
Příkad: Vypočtěte křivkový integrál. druhu vektorového pole f ( x, y ) = ( e x + y, x y ) podél křivky x = t, y = t, kde t probíhá interval <,. LineInt(VectorField(<exp(x)+y,x*y^),Path(<t^,t,t=-sqrt ()..sqrt())); 8 5 Grafické znázornění: p:=fieldplot([exp(x)+y,x*y^],x=..,y=-sqrt()..sqrt(), arrows=large,color=black): p:=plot([t^,t,t=-sqrt()..sqrt()],color=red,thickness=5 ): display([p,p]);