Matematické výpočty v programu Maple
Ing. Vladimír Žák
email : zakyn@centrum.cz
web: http://www.vladimirzak.com
Soubor vznikl s podporou grantového projektu FRVŠ 3323/2006
Aplikace integrálu
Tento odstavec se věnuje aplikacím Riemannova integrálu
Obsah rovinných obrazců
Nechť g(x) a h(x) jsou funkce spojité na intervalu a platí na . Označme . Pak obsah obrazce M je roven .
Poznámky:
V této části budeme používat příkazy pro vykreslování grafů funkcí, proto je vhodné nejdříve prostudovat kapitolu Základy grafického zpracování .
> |
Příklad 1
Určeme obsah obrazce, který je ohraničen parabolami.
> | restart:with(plots):with(student): |
Warning, the name changecoords has been redefined
Paraboly jsou zadány rovnicemi
> | p1:=3*y=x^2-2; p2:=y=x^2-4/3*x-6; |
Vykreslíme graf funkcí
> | implicitplot({p1,p2},x=-4..5,y=-7..6); |
Určíme průsečíky obou parabol
> | intercept(p1,p2); |
Vyjádříme y z obou rovnic
> | h:=isolate(p1,y); |
> | g:=isolate(p2,y); |
Vytvoříme argument pro dosazení do vzorce
> | F:=unapply(rhs(h-g),x); |
Počítáme tedy integrál
> | i1:=Int(F(x),x=-2..4); |
Obsah tedy je
> | value(%); |
> |
Příklad 2
Určete obsah obrazce, který je ohraničen osou y a semikubickou parabolou.
> | restart:with(plots):with(student): |
Warning, the name changecoords has been redefined
Rovnice semikubické paraboly
> | p:=[y^2=(a-x)^3]; |
> | #assume(a>0); |
Pokus o vykreslení funkce dané implicitně. Je vidět, že systém Maple má určité problémy. Pro nakreslení grafu je samozřejmě nutné zvolit pevné a .
> | implicitplot(y^2=(2-x)^3,x=0..3,y=-10..10); |
Rozdělíme předepsanou funkci na dvě
> | h:=sqrt((a-x)^3); |
> | g:=-sqrt((a-x)^3); |
Vykreslíme graf funkcí h , g pro pevně zvolené a=10 .
> | p1:=plot(sqrt((10-x)^3),x=-2..10): |
> | p2:=plot(-sqrt((10-x)^3),x=-2..10): |
> | display({p1,p2}); |
Určíme průsečík s osou x , tj. y=0 . Příkaz intercept spočítá průsečík dvou křivek.
> | intercept(h=0,y=0); |
Počítáme tedy integrál
> | i2:=Int(h-g,x=0..a); |
Výsledný obsah
> | value(i2); |
> |
Příklad 3
Určete obsah obrazce ohraničeného obloukem cykloidy a osou x .
> | restart:with(plots):with(student): |
Warning, the name changecoords has been redefined
Rovnice cykloidy
> | rce:=[r*(t-sin(t)),r*(1-cos(t))]; #assume(0<=t,t<=2*Pi); |
Nakreslení grafu. Rovnice jsou děleny v argumentu r , abychom dostali konkrétní vyjádření.
> | plot([rce[1]/r,rce[2]/r,t=0..2*Pi],scaling=constrained); |
Užijeme vzorce pro výpočet obsahu obrazce ohraničeným funkcemi danými parametricky
> | P(M)=Int(psi(t)*D(phi(t)),t=alpha..beta); |
Dosazením dostáváme
> | i3:=Int(rce[2]*diff(rce[1],t),t=0..2*Pi); |
Spočteme obsah
> | value(i3); |
> |
> |
Příklad 4
Určete obsah obrazce 1.kvadrantu ohraničeného Archimedovou spirálou a přímkami
> | restart:with(plots):with(student): |
Warning, the name changecoords has been redefined
Omezení na plochu
> | p:=rho=a*phi; # archimedova spirála phi=Pi/3; # přímka phi=Pi/2; # přímka |
Vykreslení plochy
> | pl1:=polarplot(phi,phi=0..4/3*Pi): |
> | pl2:=plot(Pi/3*x,x=0..1): |
> | display({pl1,pl2}); |
Dosadíme-li do odpovídajícího intergrálu dostaneme
> | i4:=1/2*Int(a^2*phi^2,phi=Pi/3..Pi/2); |
Výsledná plocha je
> | value(%); |
> |
> |
Délka křivky
Při výpočtu délky l křivky C vycházíme ze vztahů
> |
Příklad 1
Vypočítejte délku grafu funkce ln mezi danými body
> | restart:with(plots):with(student): |
Warning, the name changecoords has been redefined
Zadané body
> | body:=[sqrt(3),ln(sqrt(3))],[sqrt(8),ln(sqrt(8))]; |
Počítáme délku křivky mezi dvěma vodorovnými přímkami
> | p1:=plot(ln(x),x=0..10,color=[blue],legend=`ln(x)`): p2:=plot([1/2*ln(3),ln(2*2^(1/2))],legend=[`1/2*ln(3)`,`ln(2*2^(1/2))`]): display({p1,p2}); |
Dosadíme do prvního vzorce
> | i1:=Int(sqrt(1+(D(ln)(x))^2),x=body[1][1]..body[2][1]); |
Upravíme na
> | i1p:=Int(sqrt(1+x^2)/x,x=body[1][1]..body[2][1]); |
Zavedeme substituci
> | changevar(1+x^2=u,i1p,u); |
Délka křivky je rovna
> | d1:=value(%); |
Přímý výpočet integrálu
> | d2:=value(i1p); |
Zjednodušíme a převedeme na členy s ln
> | simplify(convert(d2,ln)); |
> |
> |
Příklad 2
Vypočítejte délku asteroidy
> | restart:with(plots):with(student): |
Warning, the name changecoords has been redefined
Parametrické rovnice jsou
> | f:=[a*cos(x)^3,a*sin(x)^3]; |
a proto použijeme druhý vzorec
Graf asteroidy pro a=1
> | plot([cos(x)^3,sin(x)^3,x=-Pi..Pi]); |
Konstanta a>0
> | assume(a,positive); |
Křivka je symetrická, proto budeme počítat pouze integrál
> | i2:=4*Int(sqrt(Diff(f[1],x)^2+Diff(f[2],x)^2),x=0..Pi/2); |
Výsledek je
> | simplify(value(%)); |
> |
> |
Příklad 3
Délka oblouku cykloidy na <0,2*Pi>
> | restart:with(plots):with(student): |
Warning, the name changecoords has been redefined
Parametrizace
> | f:=[a*(x-sin(x)),a*(1-cos(x))]; |
Nechť a>0
> | assume(a>0); |
Vykreslíme graf funkce
> | plot([(t-sin(t)),(1-cos(t)),t=0..2*Pi],scaling=constrained); |
Počítáme integrál
> | i3:=Int(sqrt(Diff(f[1],x)^2+Diff(f[2],x)^2),x=0..2*Pi); |
Délka křivky je
> | value(%); |
> |
> |
Příklad 4
Vypočítejte délku kardioidy zadané v polárních souřadnicích rovnicí
> | restart:with(student):with(plots): |
Warning, the name changecoords has been redefined
> | rce:=1-cos(theta); |
pro .
Nakreslíme obrázek
> | polarplot(rce,theta=0..2*Pi); |
Použijeme třetí vzorec. Po dosazení dostáváme
> | Int(sqrt(rce^2+(Diff(rce,theta)^2)),theta=0..2*Pi); |
Spočteme délku této křivky
> | value(%); |
> |
Příklad 5
Vypočítejte délku Archimedovy spirály
> | rce:=a*theta; |
pro a>0 od počátku do konce prvního závitu.
Nakresleme obrázek pro a=1
> | polarplot(theta,theta=0..2*Pi); |
Použijeme třetí vzorec. Po dosazení dostáváme
> | Int(sqrt(rce^2+(Diff(rce,theta)^2)),theta=0..2*Pi); |
Délka prvního závitu spirály je
> | assume(a>0): simplify(value(%)); |
> |
> |
Objem rotačního tělesa
Při výpočtu objemu tělesa V vycházíme ze vztahů
> |
Příklad 1
Hledáme objem koule o poloměru r . Kouli dostaneme rotací poloviny kruhu
kolem osy .
> | restart:with(student):with(plots): |
Warning, the name changecoords has been redefined
Rovnice poloroviny kruhu
> | f:=sqrt(r^2-x^2); |
Nakresleme obrázek pro r=1
> | plot(sqrt(1-x^2),x=-2..2,scaling=constrained); |
Dosadíme do prvního vztahu
> | Int(Pi*f^2,x=-r..r); |
Výsledný objem je roven
> | value(%); |
> |
> |
Příklad 2
Vypočítejte objem tělesa V vzniklého rotací množiny A ležící mezi křivkami
> | restart:with(plots): |
Warning, the name changecoords has been redefined
> | rce:=y=x^2,y=2*x; |
Nakreslíme obrázek
> | plot([x^2,2*x],x=-2..3); |
Odečteme objem vzniklý rotací křivky y=x^2 od objemu vyniklého rotací křivky y=2*x . Dosazením do prvního vztahu dostáváme
> | Int(Pi*(2*x)^2,x=0..2)-Int(Pi*(x^2)^2,x=0..2); |
Výsledný objem je roven
> | value(%); |
> |
> |
Příklad 3
Hledáme objem koule o poloměru r . Kouli dostaneme rotací rovinné množiny kolem osy .
> | restart:with(student):with(plots): |
Warning, the name changecoords has been redefined
> | rce:=sqrt(r^2-y^2); |
Dosazením do druhého vztahu dostaneme
> | V:=2*Pi*Int(y*(rce-(-rce)),y=0..r); |
Spočteme nyní výsledný objem, který je pochopitelně roven objemu v příkladu 1
> | assume(r>0); value(%); |
> |
Příklad 4
Vypočítejte objem tělesa V vzniklého rotací kolem osy množiny ohraničené křivkami (viz. obrázek 1). Zavedeme novou soustavu souřadnic u , v takovou, že u=-y , v=x . Oblast B je pak z hlediska výpočtu stejná jako na obrázku 2 a rotační těleso vzniká její rotací kolem osy .
> | restart:with(student):with(plots): |
Warning, the name changecoords has been redefined
Nakreslíme obrázky
> | p1:=plot([0,sqrt(1+x^2)],x=0..2): p2:=plottools[line]([1,0],[1,2]): p3:=textplot([0.5,0.5,`B`]): display({p1,p2,p3},title=`Obrázek 1`); |
> | p1:=plot(1,u=-2..2): p2:=implicitplot(u+sqrt(1+v^2),u=-2..2,v=0..1.5,color=blue): p3:=textplot([-0.5,0.5,`B`]): display({p1,p2,p3},title=`Obrázek 2`); |
Dosazením do druhého vztahu dostáváme
> | 2*Pi*Int(v*(0-(-sqrt(1+v^2))),v=0..1); |
Výsledný objem je roven
> | simplify(value(%)); |
> |
> |
Obsah rotační plochy
Při výpočtu obsahu plochy S vycházíme ze vztahů
> |
Příklad 1
Odvodíme vzorec pro výpočet obsahu pláště rotačního kužele o poloměru r a výšce h . Ukážeme použití obou výše uvedených vztahů.
Nejdříve nakreslíme obrázky
> | restart:with(plots):with(plottools): |
Warning, the name changecoords has been redefined
Warning, the name arrow has been redefined
> | p1:=plot([0,1,1/2*x],x=0..2,color=[black,black,blue],linestyle=[1,2,1]): p2:=line([2,0],[2,1],color=black,linestyle=2): p3:=textplot({[1,0.6,`y=r/h*x`],[0.02,0.98,`r`],[1.98,0.019,`h`]}): display({p1,p2,p3},title=`Obrázek 1`); |
> | p1:=plot([0,1,1/2*x],x=0..2,color=[black,black,blue],linestyle=[1,2,1]): p2:=line([2,0],[2,1],color=black,linestyle=2): p3:=textplot({[1,0.6,`x=h/r*y`],[0.02,0.98,`r`],[1.98,0.019,`h`]}): display({p1,p2,p3},title=`Obrázek 2`); |
Nejprve užijeme první vztah, pro něj z prvního obrázku platí
> | f:=r/h*x; |
Dosazením dostáváme
> | 2*Pi*Int(f*sqrt(1+(Diff(f,x))^2),x=0..h); |
Výsledkem je
> | assume(h>0); simplify(value(%)); |
Nyní užijeme druhý ze vztahů, pro něj z z druhého obrázku platí
> | f:=h/r*y; |
Dosazením dostáváme
> | 2*Pi*Int(y*sqrt(1+(Diff(f,y))^2),y=0..r); |
Výsledkem je
> | assume(h>0,r>0); simplify(value(%)); |
> |
> |
Příklad 2
Spočtěte obsah kulového pásu o poloměru r a výšce h . Vznikne rotací subgrafu funkce
> | restart:with(plots):with(student): |
Warning, the name changecoords has been redefined
> | f:=sqrt(r^2-x^2); |
Po dosazení do prvního vztahu počítáme integrál
> | i1:=2*Pi*Int(f*sqrt(1+diff(f,x)^2),x=a..b); |
> | simplify(i1); |
Vidíme, že integrál je roven
> | v1:=2*Pi*r*(b-a); |
Systém Maple plochu vyjádří následovně
> | v2:=value(i1); |
> |
> |
> |