9 Operace s vektory Osnova 9.1 Operace s vektory .......................................................................................................355 9.1.1 Elementární operace s vektory...............................................................................355 9.1.2 Polohové a metrické úlohy ....................................................................................356 Cíl
Analytická geometrie je mocným nástrojem, který pomáhá řešit obrovské množství problémů z praxe. Tato metoda, založená na použití souřadnicového systému, je ve své podstatě velice jednoduchá a přitom účinná. V této kapitole se naučíte řešit úlohy analytické geometrie pomocí MATLABu. ▲ Předpokládám, že umíte řešit základní úlohy z analytické geometrie a to jak polohové, tak i metrické. Tato kapitola sice nenavazuje na předchozí kapitoly, ale využijete zde z Kap. 1 m-soubor prevodx.m a z Kap. 4 výpočet determinantu matice a řešení soustavy lineárních rovnic. Proto je žádoucí si tyto věci připomenout a zopakovat si analytickou geometrii. Kdo ji hodně pozapomněl, tak mu mohu doporučit skripta: Polcerová M., Bayer J.: Analytická geometrie v příkladech, Vysoké učení technické v Brně, Fakulta chemická, Brno 2004, ISBN 80-214-1793-5. ▲ Jak již bylo řečeno ve všech předchozích kapitolách, kontaktní cvičení trvá přesně 100 minut. Proto by Vám prostudování této kapitoly mělo trvat přibližně 120 minut. Pokud ale neumíte používat analytickou geometrii a budete poctivě řešit AUTOTEST i svou Dílčí úlohu č. 5, tak Vám prostudování této kapitoly bude trvat mnohem déle. ▲ Máte opět vše připravené? Leží vedle Vás tato skripta, tužka, papír a máte spuštěný MATLAB? Pokud ANO, tak začněte. Nejprve je třeba říci, že všechny úlohy, které řešíte pomocí analytické geometrie, lze rozložit na elementární úlohy a ty na jednotlivé operace s vektory. Proto Vám nejprve ukáži těchto několik málo základních operací s vektory, které je třeba znát, abyste dokázali vyřešit jakoukoliv úlohu z analytické geometrie. V dalších úlohách Vám pak ukáži použití těchto operací s vektory na konkrétních příkladech.. ▲ Poznámka 9.1: Historická V roce 1637 v Leydenu vyšla proslulá Rozprava o metodě, kde René Descartes (lat. Renatus Cartesius) vyložil principy své analytické metody a aplikoval ji v matematice a ve fyzice. Je to první tištěná práce obsahující prvky analytické geometrie, protože dřívější Fermatova práce zůstala pouze v rukopisu. Původně byla kniha vydána společně s dalšími spisy pod titulem Plán všeobecné vědy schopné povznést naši povahu na nejvyšší stupeň dokonalosti, potom Dioptrika, Meteory a Geometrie. Spisek o geometrii je prvním výkladem o kartézské soustavě souřadnic. ▲
9.1 Operace s vektory 9.1.1 Elementární operace s vektory Příklad 9.1: Elementární operace s vektory Jsou dány vektory u = (1; 2; 3) a v = (2; − 1; 2) . Určete velikost vektorů u a v , součet vektorů u + v , rozdíl vektorů u − v , skalární součin vektorů u ⋅ v a vektorový součin vektorů u×v . ▲ Řešení Nejprve do MATLABu zadejte vektory u a v těmito příkazy: u=[1,2,3] u = 1
2
3
355
v=[2,-1,2] v = 2 -1
2
Velikost vektorů vypočítáte takto: norm(u) ans = 3.7417 norm(v) ans = 3
Součet vektorů takto: w=u+v w = 3
1
5
Rozdíl vektorů takto: w=u-v w = -1
3
1
Skalární součin dvou vektorů takto: w=dot(u,v) w = 6
Vektorový součin dvou vektorů takto: w=cross(u,v) w = 7 4
-5
Výsledek Velikost vektorů u ≈ 3,741 7 a v = 3,000 0 , součet vektorů u + v = (3; 1; 5) , rozdíl vektorů
u − v = (− 1; 3; 1) , skalární u × v = (7; 4; − 5) . ▲
součin
vektorů
u⋅v = 6
a
vektorový
součin
vektorů
Poznámka 9.2: Ukládání do proměnných Pokud potřebujete dále počítat například s velikostí vektoru u, tak je vhodné, si tuto velikost uložit do nějaké proměnné (a=norm(u)), protože pak se Vám zjednoduší další příkazy, ve kterých budete tuto velikost potřebovat. Totéž samozřejmě platí i pro ostatní operace. ▲ K zamyšlení Jak se vypočítá smíšený součin tří vektorů? Smíšený součin tří vektorů je vlastně determinant matice, jejíž řádky jsou zadané vektory. Máte-li dány vektory u = (1; 2; − 3) , v = (3; 7; 6) a w = (2; − 1; 4) , pak jejich smíšený součin v MATLABu vypočítáte pomocí těchto dvou příkazů: A=[1,2,-3;3,7,6;2,-1,4];det(A) ans = 85
Smíšený součin zadaných tří vektorů je tedy roven 85. ▲
9.1.2 Polohové a metrické úlohy Polohové a metrické úlohy lineárních i kvadratických útvarů v rovině i v prostoru znáte již ze střední školy. V předmětu Matematika I jste si toto učivo pouze rozšířili o přesnou definici vektorového součinu, o smíšený součin a o jejich geometrický význam. Protože v MATLABu využíváte pouze příkazy uvedené v předchozím příkladě, tak není třeba se jimi podrobněji zabývat Z tohoto důvodu jsou zde zařazeny pouze tři reprezentativní příklady polohových a metrických úloh v prostoru, abyste si udělali přesnou představu o tom, jak se výše uvedené příkazy MATLABu používají. První příklad ukazuje využití analytické geometrie při výpočtu objemu resp. obsahu tělesa. Věnujte mu náležitou pozornost, protože Vaše Dílčí úloha č. 5 je velice podobná této úloze. ▲ 356
Příklad 9.2: Objem tělesa Čtyřstěn je dán vrcholy A = (2; 0; 0) , B = (0; 3; 0) , C = (0; 0; 6) a D = (2; 3; 8) . Určete: a) objem čtyřstěnu ABCD, b) obsah stěny ABC, c) tělesovou výšku na stěnu ABC. ▲ Řešení Nejprve zadejte do MATLABu vrcholy čtyřstěnu a pak vypočítejte tzv. doprovodný vektorový trojhran, tj. zadejte tyto příkazy: A=[2,0,0];B=[0,3,0];C=[0,0,6];D=[2,3,8];u=B-A u = -2 3 0 v=C-A v = -2 w=D-A w = 0
0 3
6 8
Víte, že objem čtyřstěnu je roven jedné šestině smíšeného součinu těchto tří vektorů (v absolutní hodnotě), proto objem čtyřstěnu vypočítáte takto: a=[u;v;w];V=1/6*abs(det(a)) V = 14
Obsah podstavy je roven jedné polovině velikosti vektorového součinu vektorů u, v, tedy stačí zadat tento příkaz: P=norm(cross(u,v)./2) P = 11.2250
Protože objem trojbokého jehlanu se vypočítá podle vztahu V =
1 ⋅ P ⋅ vt , kde vt je tělesová 3
výška čtyřstěnu, tak stačí zadat tento příkaz: vt=3*V/P vt = 3.7417
▲
Výsledek Objem čtyřstěnu je 14,000 0 příslušných objemových jednotek, obsah stěny ABC je přibližně s přesností na čtyři desetinná místa 11,225 0 příslušných plošných jednotek a tělesová výška je přibližně 3,741 7 příslušných délkových jednotek. ▲ Upozornění 9.1: Přesné hodnoty a povrch Pokud byste potřebovali přesné hodnoty obsahu podstavy, tak je nutné si vypočítat vektorový součin například příkazem: c=cross(u,v) c = 18 12
6
vidíte, že výsledný vektor c lze zapsat c = (18; 12; 6 ) = 6 ⋅ (3; 2; 1) , pro velikost platí:
c = 6 ⋅ 9 + 4 + 1 = 6 ⋅ 14 a obsah podstavy je pak přesně P = 3 ⋅ 14 . V MATLABu můžete počítat například takto: b=c/6; k=b(1)^2+b(2)^2+b(3)^2 k = 14
a obsah podstavy je P = 3 ⋅ 14 , protože je to trojúhelník a je nutné číslo 6 vydělit dvěma. Protože determinant z matice, která obsahuje pouze celá čísla, je celočíselný, tak vyjádřit objem čtyřstěnu ani výšku přesně není problém. Přesný výsledek objemu napíšete jako zlomek, kde v čitateli bude abs(det(a)) a ve jmenovateli číslo 6. Tělesovou výšku pak
357
přesně vyjádříte pomocí vztahu vt = případě je vt =
84 2 ⋅ 3 ⋅ 14
=
14 14
3 ⋅ V 3 ⋅ abs(det(a)) abs(det(a)) = = . V našem P 6⋅P 2P
= 14 .
Pokud chcete vypočítat povrch tohoto čtyřstěnu, tak nezapomeňte, že každá jeho stěna má jiný obsah. Je nutné vypočítat každou stěnu samostatně a pak všechny čtyři (včetně podstavy ABC) sečíst. ▲
Příklad 9.3: Vzdálenost bodu od roviny Jsou dány body A = (1; − 1; 2) , B = (2; − 2; 3) , C = (− 1; − 1; − 2) , D = (2; − 1; − 2) a rovina ρ : x + 2 y + z − 1 = 0 . Určete: a) rovnici roviny σ procházející body ABC, b) vzdálenost bodu D od roviny ρ , c) bodem D veďte rovinu τ procházející průsečnicí rovin ρ a σ . ▲ Řešení Nejprve do MATLABu zadejte body A, B, C, D a vypočítejte dva vektory, které leží v rovině ABC, například vektory u = B − A , v = C − A : A=[1,-1,2];B=[2,-2,3];C=[-1,-1,-2];D=[2,-1,-2];u=B-A u = 1 -1 1 v=C-A v =-2
0
-4
Nyní nalezněte pomocí vektorového součinu normálový vektor hledané roviny a dopočítejte poslední koeficient d obecné rovnice ax + by + xz + d = 0 roviny ABC: n=cross(u,v) n = 4 2
-2
n=n/2 n = 2
-1
1
d=-dot(n,A) d = 1
Obecná rovnice zadané roviny je σ : 2 x + y − z + 1 = 0 . Nyní vypočítejte podle známého ax 0 + by 0 + cz 0 + d vzorce v(D, ρ ) = vzdálenost bodu D od zadané roviny ρ . Jestliže si a2 + b2 + c2 normálový vektor roviny ρ označíte jako r, tak ve jmenovateli je velikost vektoru r a do MATLABu stačí zadat: r=[1,2,1];c=dot(r,D)-1 c = -3 vz=abs(c)/norm(r) vz = 1.2247
Vzdálenost bodu D od roviny ρ je přibližně v(D, ρ ) = 1,224 7 . Pokud byste tuto vzdálenost potřebovali vyjádřit přesně, tak zadejte do MATLABu příkaz: v1=r(1)^2+r(2)^2+r(3)^2 v1 = 6
3⋅ 6 6 = . Abyste nalezli 6 2 6 obecnou rovnici hledané roviny τ , tak si nejprve nalezněte směrový vektor k průsečnice roviny ρ a σ pomocí vektorového součinu normálových vektorů rovin ρ a σ . a vzdálenost bodu D od roviny ρ je pak v(D, ρ ) =
358
3
=
k=cross(n,r) k = 3 -3
3
k=k/3 k = 1
1
-1
Vektor průsečnice k = (1; − 1; 1) . Nyní nalezněte alespoň jeden bod X, který na této průsečnici leží. Zvolíte-li například x-ovou souřadnici bodu X, že je 0, tak dostáváte tuto soustavu rovnic: y − z = −1 2 y + z = 1, kterou v MATLABu vyřešíte následujícími třemi příkazy: a=[2,1;1,-1];b=[1;-1];a\b ans = 0 1
a souřadnice bodu X = (0; 0; 1) . Nyní si vypočítejte vektor m = D − X , který leží v rovině τ : X=[0,0,1];m=X-D m = -2 1
3
Obecnou rovnici roviny τ nyní naleznete analogicky, jako jste hledali obecnou rovnici roviny σ . Znáte dva vektory ležící v rovině τ a to vektory k a m a body X a D. Stačí tedy do MATLABu zadat tyto příkazy: no=cross(m,k) no = 4 5
1
dd=-dot(no,X) dd = -1
a obecná rovnice roviny τ : 4 x + y + z − 1 = 0 . ▲
Výsledek Rovnice roviny σ procházející body ABC je σ : 2 x + y − z + 1 = 0 . Vzdálenost bodu D od roviny ρ je v(D, ρ ) =
6 ≈ 1,224 7 příslušných délkových jednotek. Rovina τ procházející 2 průsečnicí rovin ρ a σ a bodem D má rovnici τ : 4 x + 5 y + z − 1 = 0 . ▲
Poznámka 9.3: Klasické řešení bez MATLABu Pro zapomnětlivé zde uvádím klasické řešení pomocí analytické geometrie bez použití MATLABu. Označení jednotlivých bodů a vektorů ponechám stejné jako při předchozím řešení v MATLABu: a) u = B − A = (1; − 1; 1) , v = C − A = (− 2; 0; − 4) i j k
n = u×v =
1 −1 1 = (4; 2; − 2) = 2 ⋅ (2, 1, − 1) ⇒ n = (2; 1; − 1) −2 0 −4
Obecná rovnice roviny σ má tvar 2 x + y − z + d = 0 . Koeficient d vypočítáme tak, že dosadíme bod A, který v této rovině leží: 2 − 1 − 2 + d = 0 ⇒ d = 1 . Hledaná rovnice roviny σ je tedy σ : 2 x + y − z + 1 = 0 . b) Vzdálenost bodu D od roviny ρ nejrychleji vypočítáme podle vzorce: ax 0 + by 0 + cz 0 + d v ( D, ρ ) = , kde ( x0 , y 0 , z 0 ) jsou souřadnice bodu D a (a, b, c ) je a2 + b2 + c2 normálový vektor roviny ρ tj. (1, 2, 1) . Po dosazení dostáváme:
359
v ( D, ρ ) =
2 − 2 − 2 −1 1+ 4 +1
=
3 6
=
3⋅ 6 6 = ≈ 1,224 7 . 6 2
Vzdálenost bodu D od roviny ρ je v(D, ρ ) =
6 ≈ 1,224 7 příslušných délkových 2
jednotek. c) Nejprve nalezneme směrový vektor průsečnice, který je kolmý k normálovým vektorům rovin ρ , σ a nalezneme ho tedy pomocí vektorového součinu těchto dvou normálových vektorů i j k
k= 1 2 1 = (− 3; 3; − 3) = −3 ⋅ (1; − 1; 1) ⇒ k = (1; − 1; 1) 2 1 −1
Bod, který leží na průsečnici musí náležet oběma rovinám ρ a σ . Protože těchto bodů je nekonečně mnoho, tak si zvolíme například x-ovou souřadnici tohoto bodu X jako 0 a vyřešíme tuto soustavu rovnic: y − z = −1 2y + z = 1
3 y = 0 ⇒ y = 0 , 0 − z = −1 ⇒ z = 1 a hledaný bod X = (0, 0, 1) . Hledaná rovina τ obsahuje vektor k a například vektor m = X − D = (− 2; 1; 3) . Normálový vektor hledané roviny τ tedy vypočítáme pomocí vektorového součinu vektorů m, k: i j k
n0 = − 2 1 3 = (4; 5; 1) 1 −1 1
a hledaná rovina τ má obecnou rovnici 4 x + 5 y + z + d = 0 ⇒ po dosazení bodu X 1 + d = 0 ⇒ d = −1 . Rovina τ procházející průsečnicí rovin ρ a σ a bodem D má obecnou rovnici τ : 4 x + 5 y + z − 1 = 0 . ▲
Příklad 9.4: Vzájemná poloha dvou přímek v prostoru x + y = 0 Jsou dány body A = (1; 1; 1) ; B = (1; 3; 2) a přímka p: . Určete: x + z − 1 = 0 a) rovnici přímky q procházející body AB, b) rozhodněte o vzájemné poloze přímek p, q, c) jsou-li přímky p, q různoběžky, stanovte jejich průsečík a úhel, ve zbylých případech jejich vzdálenost. ▲ Řešení Nejprve si nalezněte parametrické vyjádření přímky q a pak přímky p: A=[1,1,1];B=[1,3,2];u=B-A u = 0 2 1
Parametrické vyjádření přímky q je tedy:
q: x = 1 y = 1 + 2t z = 1 + t , kde t ∈ R .
Nyní pomocí vektorového součinu normálových vektorů zadaných rovin vypočítejte směrový vektor přímky p n1=[1,1,0]; n2=[1,0,1];r=cross(n1,n2) r = 1 -1 -1
360
Bod X, který leží v obou těchto rovinách a náleží tedy přímce p získáte tak, že si jednu jeho souřadnici zvolíte (třeba x = 0 ) a zbývající dopočítáte. V tomto případě téměř ihned dostáváte, že bod X má souřadnice X = (0; 0; 1) . Parametrické vyjádření přímky p je tedy: p: x = s y = −s z = 1 − s , kde s ∈ R . Směrový vektor jedné přímky není nenulovým reálným násobkem směrového vektoru druhé přímky, takže přímky jsou buď různoběžné, nebo mimoběžné. Různoběžné přímky mají společný bod a leží v jedné rovině, proto můžeme buď vyřešit soustavu rovnic: 1= s − s = −1 ⇒ s + 2t = −1 1 + 2t = − s 1 + t = 1 − s, s + t = 0, nebo zjistit, zda determinant, jehož řádky tvoří vektory u, r a k = A − X je nulový. V MATLABu například takto: a=[u;r;A-X];det(a) ans = 0
Přímky jsou různoběžné. Musíte tedy nalézt jejich průsečík, což znamená vyřešit výše uvedenou soustavu rovnic. V MATLABu stačí zadat: a=[-1,0;1,2;1,1];b=[-1;-1;0];a\b ans = 1.0000 -1.0000
Parametr s = 1 a parametr t = −1 . Po dosazení do parametrického vyjádření přímky p (s = 1) , resp. q (t = −1) dostáváte, že průsečík R = (1; − 1; 0) . Úhel dvou přímek je definován jako ostrý úhel, který dané dvě přímky spolu svírají a u⋅r vypočítáte jej ze vztahu cos ϕ = . V MATLABu například takto: u⋅r x=abs(dot(u,r))/(norm(u)*norm(r)) x = 0.7746 prevodx stupnu = 39 minut = 13 vterin = 53
▲
Výsledek Parametrické vyjádření přímky q procházející body AB je: q: x = 1 y = 1 + 2t z = 1 + t , kde t ∈ R . Přímky p, q jsou různoběžné, jejich průsečík je R = (1; − 1; 0) a svírají spolu úhel přibližně 39°13´53˝. ▲ Upozornění 9.2: Výpočet úhlu Pokud nebudete mít v pracovním adresáři MATLABu (work, resp. MATLAB) m-soubor prevodx.m, který jste si vytvořili v Kap. 1, tak Vám poslední příkaz v minulém řešení nebude fungovat a musíte si výpočet úhlu provést pomocí inverzní funkce arkuscosinus. Výsledný úhel, který je v radiánech, pak musíte převést na stupně, minuty a vteřiny, protože běžně požadujeme, aby úhly byly vyjádřeny v těchto úhlových jednotkách a ne v radiánech. ▲ Příklad 9.5: Vzdálenost bodu od přímky v prostoru x +1 y +1 z = Je dán bod A = (2; 2; 3) a přímka p = = . Určete: 2 2 −1 361
a) obecnou rovnici roviny ρ procházející bodem A kolmo k přímce p, b) vzdálenost bodu A od přímky p, c) rovnici kolmice q spuštěné z bodu A na přímku p. ▲ Řešení Normálový vektor hledané roviny je roven směrovému vektoru přímky p a má tedy souřadnice (2; 2; − 1) . Dosazením bodu A do rovnice 2 x + 2 y − z + d = 0 vypočítáte d = −5 . Do MATLABu byste zadali tyto příkazy: A=[2,2,3];n=[2,2,-1];d=-dot(n,A) d = -5
obecná rovnice hledané roviny ρ : 2 x + 2 y − z − 5 = 0 . Vzdálenost bodu A od přímky p v prostoru se počítá podle vztahu v(A, p ) =
n × AX n
, kde X je libovolný bod přímky p, tedy
například X = (− 1; − 1; 0) . V MATLABu stačí zadat: X=[-1,-1,0];vz=abs((norm(cross(n,(X-A))))/norm(n)) vz = 4.2426
Pokud byste chtěli tuto vzdálenost přesně, tak byste si vypočítali: u=cross(n,(X-A)) u = -9 9 0 u1=u/9;du=u1(1)^2+u1(2)^2+u1(3)^2 du = 2 dd=n(1)^2+n(2)^2+n(3)^2 dd = 9
9⋅ 2 = 3 2 ≈ 4,242 6 . Patu P kolmice q spuštěné 3 9 z bodu A na přímku p naleznete jako průsečík přímky p s rovinou, kterou jste vypočítali hned na začátku ρ ∩ p ⇒ 2 ⋅ (− 1 + 2t ) + 2 ⋅ (− 1 + 2t ) + t − 5 = 0 ⇒ 9t = 9 ⇒ t = 1 . Bod P = (1; 1; − 1) a směrový vektor hledané kolmice je k = A − P = (1; 1; 4) . V MATLABu stačí zadat: vzdálenost je pak v(A, p ) =
9⋅ 2
=
P=[1,1,-1];k=A-P k = 1 1 4
Parametrické vyjádření hledané kolmice je q:
x = 2+t y = 2+t z = 3 + 4t , kde t ∈ R . ▲
Výsledek Obecná rovnice roviny ρ procházející bodem A kolmo k přímce p je ρ : 2 x + 2 y − z − 5 = 0 .
Vzdálenost bodu A od přímky p je v(A, p ) = 3 2 ≈ 4,242 6 příslušných délkových jednotek. Rovnice kolmice q spuštěné s bodu A na přímku p je: q: x = 2 + t
y = 2+t z = 3 + 4t , kde t ∈ R . ▲
Úkol Vyřešte svou vlastní Dílčí úlohu č. 5 pomocí MATLABu. Dejme tomu, že Vaše zadání vypadá takto: Vypočítejte objem rovnoběžnostěnu s trojúhelníkovou podstavou, jeho povrch, tělesovou výšku a obsah podstavy, jestliže jeho vrcholy mají souřadnice: A = (6; 19; 15) , B = (19; 10; − 18) , C = (14; − 18; 2) a A ′ = (− 3; 3; − 2) . Rovnoběžnostěn zobrazte. ▲ 362
Řešení Protože do MATLABu nelze zadat A´ (apostrof ' je funkce MATLABu, která z matice A vytvoří matici transponovanou), tak si tento bod horní podstavy označte A1. Vaše početní řešení pomocí MATLABu pak může vypadat například takto: A=[6,19,15];B=[19,10,-18];C=[14,-18,2];A1=[-3,3,-2];u=B-A = 13 -9 -33 v=C-A v = 8 w=A1-A w =-9
-37 -16
-13 -17
a=[u;v;w];V=abs(det(a))/2 V = 9.2045e+003 num2str(V,8) ans = 9204.5 P=norm(cross(u,v))/2 P = 590.5764 vt=V/P vt = 15.5856 S1=norm(cross(u,w)) S1 = 701.7621 S2=norm(cross(v,w)) S2 = 673.6253 k=C-B k = -5
-28
20
S3=norm(cross(k,w)) S3 = 856.4024 S=S1+S2+S3+2*P S = 3.4129e+003 num2str(S,8) ans = 3412.9425
Abyste mohli vykreslit zadaný rovnoběžnostěn, tak si nejprve vypočítejte souřadnice zbývajících bodů horní podstavy: B1=B+w B1 = 10 C1=C+w C1 = 5
-6 -34
-35 -15
nyní již můžete napsat m-soubor, který Vám zadaný rovnoběžnostěn vykreslí. Jednotlivé hrany můžete zadávat přímo pomocí vypočítaných souřadnic, nebo si můžete nejprve body načíst a pak jednotlivé hrany kreslit obecně. Nezapomeňte, že těleso uvidíte ve skutečném tvaru pouze tehdy, když budete mít ekvidistantní všechny tři osy. Také je vhodné otočit orientaci osy x a y, aby byly orientovány tak, jak je běžné v matematice (fyzice i chemii) a popsat jednotlivé vrcholy. V prvním případě byste napsali například tento m-soubor: rovnob1.m hold on; plot3([6,19],[19,10],[15,-18],'k'); plot3([19,14],[10,-18],[-18,2],'k'); plot3([14,6],[-18,19],[2,15],'k'); plot3([6,-3],[19,3],[15,-2],'k'); plot3([19,10],[10,-6],[-18,-35],'k--');
363
plot3([14,5],[-18,-34],[2,-15],'k'); plot3([-3,10],[3,-6],[-2,-35],'k--'); plot3([5,10],[-34,-6],[-15,-35],'k--'); plot3([-3,5],[3,-34],[-2,-15],'k'); text(6,20,15,'\fontname{times new roman ce}A') text(20,12,-18,'\fontname{times new roman ce}B') text(15,-20,2,'\fontname{times new roman ce}C') text(-3,4,-2,'\fontname{times new roman ce}A´') text(10,-3.5,-35,'\fontname{times new roman ce}B´'); text(5.5,-35.5,-15,'\fontname{times new roman ce}C´'); axis square; axis([-35 19 -35 19 -35 19]); axis off; set(gca,'XDir','reverse','Ydir','reverse','ZDir','normal');
a rovnoběžnostěn pak vypadá takto:
v druhém případě byste napsali například tento m-soubor: rovnob2.m A=[6,19,15];B=[19,10,-18];C=[14,-18,2];A1=[-3,3,-2];B1=[10,-6,35];C1=[5,-34,-15];hold on; plot3([A(1),B(1)],[A(2),B(2)],[A(3),B(3)],'k'); plot3([B(1),C(1)],[B(2),C(2)],[B(3),C(3)],'k'); plot3([A(1),C(1)],[A(2),C(2)],[A(3),C(3)],'k'); plot3([A(1),A1(1)],[A(2),A1(2)],[A(3),A1(3)],'k'); plot3([B(1),B1(1)],[B(2),B1(2)],[B(3),B1(3)],'k--'); plot3([C(1),C1(1)],[C(2),C1(2)],[C(3),C1(3)],'k'); plot3([A1(1),B1(1)],[A1(2),B1(2)],[A1(3),B1(3)],'k--'); plot3([B1(1),C1(1)],[B1(2),C1(2)],[B1(3),C1(3)],'k--'); plot3([A1(1),C1(1)],[A1(2),C1(2)],[A1(3),C1(3)],'k'); text(6,20,15,'\fontname{times new roman ce}A') text(20,12,-18,'\fontname{times new roman ce}B') text(15,-20,2,'\fontname{times new roman ce}C') text(-3,4,-2,'\fontname{times new roman ce}A´') text(10,-3.5,-35,'\fontname{times new roman ce}B´'); text(5.5,-35.5,-15,'\fontname{times new roman ce}C´'); axis square; axis([-35 19 -35 19 -35 19]);axis off; set(gca,'XDir','reverse','Ydir','reverse','ZDir','normal');
rovnoběžnostěn je samozřejmě stejný. Co se jednotlivých řádků výše uvedených m-souborů týče, tak je myslím jasné, že pomocí příkazů plot3 se kreslí úsečky, které představují 364
jednotlivé hrany rovnoběžnostěnu. Při popisu (příkazy text) doporučuji nejprve napsat souřadnice jednotlivých bodů a teprve dodatečně písmena posunout tak, aby se nepřekrývaly s hranami. Prvními dvěma axis zabezpečujete ekvidistantní osy a rozsah os lze zadat od nejnižší po nejvyšší hodnotu, která se v souřadnicích všech bodů vyskytuje. Tento rozsah můžete také určit pro každou osu samostatně, ale pozor, že rozsah musí být stejný, protože jinak by se Vám těleso nezobrazilo tak, jak ve skutečnosti vypadá. Příkazem axis off vypnete zobrazení os, protože Vy máte zobrazit těleso a ne jeho polohu vzhledem k souřadnicovým osám. Poslední příkaz otáčí orientaci osy x a y tak, aby kladná poloosa x směřovala dopředu a kladná poloosa y doprava. Pokud by se při zobrazení některé hrany překrývaly, tak je vhodné použít příkaz view. Pomocí tlačítka na nástrojové liště v obrázku si těleso natočíte tak, aby se jednotlivé hrany nepřekrývaly, poznamenáte si azimut a elevaci (zobrazuje se při pohybu vlevo dole) a tyto hodnoty zapíšete do příkazu view. Můžete si vyzkoušet například view(174,-84), což je ukázáno v m-souborech rovnob1a.m a rovnob2a.m. Samozřejmě že bylo nutné posunout popis a obrázek pak vypadá takto:
▲ Výsledek Objem rovnoběžnostěnu s trojúhelníkovou podstavou je 9 204,5000 příslušných objemových jednotek. Obsah podstavy je přibližně s přesností na čtyři desetinná místa 590,576 4 příslušných plošných jednotek, tělesová výška je přibližně 15,585 6 příslušných délkových jednotek a povrch je přibližně 3 412,942 5 příslušných plošných jednotek. Rovnoběžnostěn lze zobrazit například pomocí m-souboru rovnob1.m. ▲ AUTOTEST 1. Je dán trojúhelník ABC, kde A = (− 1; 3) , B = (0; 2) , C = (1; − 1) . Nalezněte střed a poloměr kružnice opsané tomuto trojúhelníku. Trojúhelník i kružnici opsanou, včetně jejího středu, zakreslete. 2. Je dán trojúhelník, kde A = (− 3; − 4) , B = (5; − 2) , C = (1; 5) . Určete rovnice výšek tohoto trojúhelníka a jejich průsečík. Trojúhelník, výšky i jejich průsečík zobrazte. 3. Určete souřadnice vrcholů a obsah trojúhelníka vymezeného polorovinami danými nerovnostmi: y ≥ −3 x , y ≤ 2 x + 6 , y ≥ 4 x − 1 . Načrtněte obrázek. 4. Poloha trojúhelníkové parcely na plánu je vyznačena vrcholy trojúhelníka ABC. Jaké jsou její vnitřní úhly, jestliže: A = (9; − 3) , B = (2; 5) , C = (− 4; 2) . Parcelu zobrazte. 5. Určete velikost zorného úhlu, pod nímž je vidět kružnici x 2 + y 2 − 2 x − 6 y − 6 = 0 z bodu P = (− 3; 0) . Kružnici, bod P, obě tečny i zorný úhel zakreslete. 6. Vypočítejte obsah čtyřúhelníka ABCD, jestliže C = (− 1; 2; 4) , D = (1; 1; 9 ) . Čtyřúhelník zobrazte.
365
A = (1; − 5; 7 ) ,
B = (3; 2; 3) ,
7. Nalezněte těžiště homogenní desky tvaru trojúhelníka ABC, jestliže A = (2; − 1; 2) , B = (1; 3; 3) , C = (− 1; − 2; 5) . Napište obecnou rovnici roviny tohoto trojúhelníka a trojúhelník, včetně těžiště, zobrazte. 3 − x 5 − y 1− z = = s rovinou ρ = ABC , kde A = (2; 8; 1) , 1 2 3 B = (1; − 1; − 2) , C = (− 3; − 1; 4) . Načrtněte obrázek.
8. Vypočítejte úhel přímky p :
9. Nalezněte obvod trojúhelníka XYZ, kde X je průsečík přímek p, q, Y je průsečík přímky p s rovinou ρ = ABC a Z je průsečík přímky q s rovinou ρ . Přitom p = DE , kde D = (1; 1; 1) , E = (1; 3; 2) . Přímka q : x + z − 1 = 0 ∧ x + y = 0 a A = (2; − 1; 0) , B = (3; 1; − 1) a C = (2; − 2; 2) . Trojúhelník XYZ zobrazte. 10. Rohový a koncový sloupek musí být opatřen vzpěrou, aby, po natažení pletiva, zůstala voliéra stabilní. Jak dlouhá musí být tato nejkratší vzpěra, jestliže rohový sloupek je v průniku dvou sousedních stěn, které lze popsat rovnicemi: x − y + 4 = 0 , y + z = 0 a koncový sloupek spojuje bod A = (3; 2; 1) s bodem B = (− 1; 0; 1) . Zakreslete oba sloupky a tuto vzpěru, včetně bodů, kde budou úchyty. ▲
Řešení 1. Střed kružnice opsané je v průsečíku os stran. Stačí tedy nalézt například obecné rovnice dvou os stran a jejich průsečík je hledaný střed S kružnice opsané. Poloměr kružnice opsané je pak vzdálenost tohoto středu S od libovolného vrcholu trojúhelníka ABC. Nejprve do MATLABu zadejte body A, B, C a nalezněte normálový vektor osy strany AB, což je směrový vektor u = B − A : A=[-1,3];B=[0,2];C=[1,-1];u=B-A u = 1 -1
obecná rovnice osy strany AB je x − y + c1 = 0 , kde c1 dopočítáte tak, že do této rovnice dosadíte střed úsečky AB. Do MATLABu tedy zadáte: SAB=(A+B)/2; c1=-dot(u,SAB) c1 = 3
obecná rovnice osy strany AB je x − y + 3 = 0 . Analogicky naleznete obecnou rovnici osy strany BC. Do MATLABu tedy postupně zadáte tyto příkazy: v=C-B v = 1
-3
SBC=(B+C)/2;c2=-dot(v,SBC) c2 = 1
obecná rovnice osy strany BC je x − 3 y + 1 = 0 . Střed S kružnice opsané naleznete vyřešením soustavy rovnic: x − y = −3 x − 3 y = −1 , do MATLABu stačí zadat tyto příkazy: X=[1,-1;1,-3];Y=[-3;-1];S=X\Y S = -4 -1
Střed kružnice opsané S = (− 4; − 1) a poloměr r naleznete například jako r = AS . Protože ale souřadnice bodu S máte ve sloupečku, tak do MATLABu musíte zadat S': r=norm(S'-A) r = 5
366
Trojúhelník včetně kružnice opsané a jejího středu můžete vykreslit například pomocí následujícího m-souboru: autot1.m plot([-10,2],[0,0],'k'); hold on; plot([0,0],[-7,5],'k'); A=[-1,3];B=[0,2];C=[1,-1]; plot([A(1),B(1)],[A(2),B(2)],'b'); plot([C(1),B(1)],[C(2),B(2)],'b'); plot([A(1),C(1)],[A(2),C(2)],'b'); plot(-4,-1,'m+'); text(-3.75,-1.15,'\fontname{times new roman ce}S'); t=0:2*pi/200:2*pi; plot(5.*cos(t)-4,5.*sin(t)-1,'m'); text(-1,3.25,'\fontname{times new roman ce}A'); text(0.1,2.25,'\fontname{times new roman ce}B'); text(1.15,-1,'\fontname{times new roman ce}C'); axis square; box off; axis([-10 2 -7 5]); text(1.75,0.25,'\fontname{times new roman ce}\itx'); text(0.15,4.75,'\fontname{times new roman ce}\ity');
Obr. 9.1: Vykreslení trojúhelníka ABC s kružnicí opsanou 2. Výšky jsou kolmice spuštěné z vrcholu na protější stranu. Normálový vektor výšky na stranu AB je roven směrovému vektoru strany u = B − A . Do MATLABu tedy zadejte: A=[-3,-4];B=[5,-2];C=[1,5];u=B-A u = 8 2
obecná rovnice výšky na stranu AB je 4 x + y + c1 = 0 , kde c1 dopočítáte tak, že do této rovnice dosadíte vrchol C. Do MATLABu tedy zadáte: c1=-dot(u/2,C) c1 = -9
obecná rovnice výšky na stranu AB je 4 x + y − 9 = 0 . Analogicky naleznete obecnou rovnici výšky na stranu BC a AC. Do MATLABu tedy postupně zadáte tyto příkazy: v=C-B v = -4
7
c2=-dot(-v,A) c2 = -16
367
w=C-A w = 4
9
c3=-dot(w,B) c3 = -2
obecná rovnice výšky na stranu BC je tedy 4 x − 7 y − 16 = 0 a na stranu AC je 4 x + 9 y − 2 = 0 . Průsečík výšek naleznete tak, že si vyberete libovolné dvě ze tří výše uvedených obecných rovnic výšek a vyřešíte soustavu dvou rovnic o dvou neznámých. Do MATLABU stačí zadat například tyto příkazy: [x,y]=solve('4*x-7*y-16=0','4*x+9*y-2=0') x = 79/32 y = -7/8
Protože průsečík výšek leží uvnitř trojúhelníka ABC, tak je vhodné si ještě vypočítat paty výšek s jednotlivými stranami, abyste výšky kreslili pouze uvnitř trojúhelníka. Do MATLABu stačí postupně zadat následující příkazy: u1=[u(2),-u(1)] u1 = 2 -8 d1=-dot(u1/2,A) d1 = -13 [x,y]=solve('x-4*y-13=0','4*x+y-9=0') x = 49/17 y = -43/17 v1=[v(2),-v(1)] v1 = 7 4 d2=-dot(v1,B) d2 = -27 [x,y]=solve('7*x+4*y-27=0','4*x-7*y-16=0') x = 253/65 y = -4/65 w1=[w(2),-w(1)] w1 = 9 -4 d3=-dot(w1,A) d3 = 11 [x,y]=solve('9*x-4*y+11=0','4*x+9*y-2=0') x = -91/97 y = 62/97
Trojúhelník, výšky i jejich průsečík V můžete vykreslit například pomocí následujícího m-souboru:
autot2.m plot([-5,6],[0,0],'k');hold on; plot([0,0],[-5,6],'k'); A=[-3,-4];B=[5,-2];C=[1,5]; plot([A(1),B(1)],[A(2),B(2)],'b'); plot([C(1),B(1)],[C(2),B(2)],'b'); plot([A(1),C(1)],[A(2),C(2)],'b'); plot(79/32,-7/8,'m+'); text(79/32+0.15,-7/8+0.5,'\fontname{times new roman ce}V'); plot([C(1),49/17],[C(2),-43/17],'m'); plot([A(1),253/65],[A(2),-4/65],'m'); plot([B(1),-91/97],[B(2),62/97],'m'); text(-3.25,-4.25,'\fontname{times new roman ce}A'); text(5.25,-2.25,'\fontname{times new roman ce}B');
368
text(1.25,5.25,'\fontname{times new roman ce}C'); axis square; box off; axis([-5 6 -5 6]); text(5.75,0.25,'\fontname{times new roman ce}\itx'); text(0.15,5.75,'\fontname{times new roman ce}\ity');
Obr. 9.2: Zobrazení trojúhelníka ABC, výšek a jejich průsečíku 3. Nejprve nalezněte vrcholy hledaného trojúhelníka ABC. Do MATLABu stačí postupně zadat tyto příkazy: [x1,y1]=solve('3*x+y=0','2*x-y+6=0') x1 = -6/5 y1 = 18/5 [x2,y2]=solve('3*x+y=0','4*x-y-1=0') x2 = 1/7 y2 = -3/7 [x3,y3]=solve('2*x-y+6=0','4*x-y-1=0') x3 = 7/2 y3 = 13 A=[-6/5,18/5,0];B=[1/7,-3/7,0];C=[7/2,13,0];u=B-A;v=C-A; P=norm(cross(u,v))/2 P = 15.7786
Pokud byste chtěli výsledek přesný, pak si stačí uvědomit, že společný jmenovatel všech souřadnic nalezených bodů je 70, a protože se velikost vektorového součinu dělí dvěma, tak bychom měli mít zlomek, kde ve jmenovateli je 140. Proto stačí napsat příkaz: P1=(P-15)*140 P1 = 109.0000
Pro hledaný obsah trojúhelníka ABC platí: P = 15 ⋅
109 2 209 = ≈ 15,778 6 . Trojúhelník 140 140
můžete zobrazit pomocí následujícího m-souboru:
autot3.m plot([-7,10],[0,0],'k');hold on; plot([0,0],[-2,15],'k'); patch([-6/5,1/7,7/2],[18/5,-3/7,13],'c'); text(-6/5-0.75,18/5,'\fontname{times new roman ce}A'); text(1/7+0.25,-3/7-0.5,'\fontname{times new roman ce}B');
369
text(7/2+0.25,13+0.25,'\fontname{times new roman ce}C'); axis square;box off; axis([-7 10 -2 15]); text(9,0.5,'\fontname{times new roman ce}\itx'); text(0.25,14,'\fontname{times new roman ce}\ity');
Obr. 9.3: Zobrazení trojúhelníku ABC 4. Úhly v trojúhelníku musíte počítat jako úhly příslušných směrových vektorů, protože u⋅v úhel v trojúhelníku může být i tupý. Využijte vztah cos ϕ = a m-soubor u⋅v prevodx.m. Do MATLABu tedy budete postupně zadávat následující příkazy: A=[9,-3];B=[2,5];C=[-4,2];u=B-A;v=C-A; x=dot(u,v)/(norm(u)*norm(v));prevodx stupnu = 27 minut = 46 vterin = 36 u=A-B;v=C-B;x=dot(u,v)/(norm(u)*norm(v));prevodx stupnu = 104 minut = 37 vterin = 15 u=A-C;v=B-C;x=dot(u,v)/(norm(u)*norm(v));prevodx stupnu = 47 minut = 36 vterin = 9
Trojúhelník lze zobrazit pomocí následujícího m-souboru: autot4.m plot([-5,10],[0,0],'k');hold on; plot([0,0],[-5,10],'k'); A=[9,-3];B=[2,5];C=[-4,2]; plot([A(1),B(1)],[A(2),B(2)],'b'); plot([C(1),B(1)],[C(2),B(2)],'b'); plot([A(1),C(1)],[A(2),C(2)],'b'); text(9.25,-3.25,'\fontname{times new roman ce}A'); text(2.25,5.25,'\fontname{times new roman ce}B'); text(-4.5,2,'\fontname{times new roman ce}C'); axis square;box off; axis([-5 10 -5 10]); text(9.5,0.5,'\fontname{times new roman ce}\itx');
370
text(0.25,9.5,'\fontname{times new roman ce}\ity'); text(7,-1.6,'\fontname{times new roman ce}\it{\alpha}'); text(1.6,4,'\fontname{times new roman ce}\it{\beta}'); text(-2.75,2.2,'\fontname{times new roman ce}\it{\gamma}');
Obr. 9.4: Zobrazení parcely včetně vnitřních úhlů 5. Abyste danou úlohu vyřešili, tak potřebujete znát body dotyku tečen sestrojených z bodu P k zadané kružnici. Tyto body dotyku leží nejen na zadané kružnici, ale také na Thaletově kružnici nad průměrem SP, kde S je střed zadané kružnice. Nejprve si proto 2 2 nalezněte střed zadané kružnice x 2 + y 2 − 2 x − 6 y − 6 = 0 ⇒ ( x − 1) + ( y − 3) = 16 ⇒ S = (1; 3) . Nyní nalezněte rovnici Thaletovy kružnice. Střed má uprostřed úsečky SP a poloměr je roven polovině této úsečky. Do MATLABu stačí zadat tyto příkazy: S=[1,3];P=[-3,0];SP=(S+P)/2 SP = -1.0000 1.5000 r=norm(S-P)/2 r = 2.5000 2
3 25 takže středová rovnice Thaletovy kružnice je ( x + 1) + y − = . Nyní nalezněte 2 4 průsečíky obou kružnic. Do MATLABu stačí zadat následující příkaz: 2
[x,y]=solve('x*x+y*y-2*x-6*y-6=0','(x+1)^2+(y-3/2)^2=25/4') x = [ -3] [ -3/25] y = [ 3] [ -21/25]
21 3 Hledané body dotyku mají souřadnice T1 = (− 3; 3) a T2 = − ; − . Zorný úhel je 25 25 úhel vektorů u = T1 − P a v = T2 − P . Do MATLABu stačí zadat tyto příkazy: T1=[-3,3];T2=[-3/25,-21/25];u=T1-P;v=T2-P; x=dot(u,v)/(norm(u)*norm(v)); prevodx stupnu = 106 minut = 15 vterin = 37
Obecné rovnice tečen získáte pomocí příkazů: n1=[u(2),-u(1)],d1=-dot(n1,P)
371
n1 = 3 d1 = 9
0
n2=25*[v(2),-v(1)],d2=-dot(n2,P) n2 = -21 -72 d2 = -63
pro obecnou rovnici tečny procházející body T1 , P platí: t1 : 3x + 9 = 0 ⇒ x + 3 = 0 a pro tečnu procházející body T2 , P platí: t 2 : −21x − 72 y − 63 = 0 ⇒ 7 x + 24 y + 21 = 0 . Kružnici, bod P, obě tečny, zorný úhel i Thaletovu kružnici můžete zobrazit například pomocí následujícího m-souboru: autot5.m plot([-4,6],[0,0],'k');hold on; plot([0,0],[-2,8],'k'); plot(-3,0,'m+'); text(-3.25,-0.25,'\fontname{times new roman ce}P'); t=0:2*pi/100:2*pi;plot(4.*cos(t)+1,4.*sin(t)+3,'b'); t=0:2*pi/100:2*pi;plot(5/2.*cos(t)-1,5/2.*sin(t)+3/2,'k--'); plot(-3,3,'k+'); text(-3.5,3.4,'\fontname{times new roman ce}T'); text(-3.5,3.4,'\fontname{times new roman ce} _1'); plot(-3/25,-21/25,'k+'); text(-3/25-0.4,-21/25-0.5,'\fontname{times new roman ce}T'); text(-3/25-0.4,-21/25-0.5,'\fontname{times new roman ce} _2'); plot(-1,3/2,'k+'); plot(1,3,'b+'); y=-1:0.01:4;x=-3;plot(x,y,'m'); x=-3.75:0.01:1;y=(-7.*x-21)/24; plot(x,y,'m'); axis square;box off;axis([-4 6 -2 8]); text(5.5,0.25,'\fontname{times new roman ce}\itx'); text(0.15,7.5,'\fontname{times new roman ce}\ity'); text(-2.75,0.35,'\fontname{times new roman ce}\it{\alpha}');
Obr. 9.5: Zobrazení kružnice, bodu P, tečen, zorného úhlu i Thaletovy kružnice 6. Obsah čtyřúhelníka vypočítejte jako součet obsahů trojúhelníka ABC a trojúhelníka ACD. Nejprve si vypočítejte vektory u = B − A , v = C − A , w = D − A . Obsah u×v v×w a obsah trojúhelníka ACD je P2 = . Celkový trojúhelníka ABC je pak P1 = 2 2 obsah čtyřúhelníka je P = P1 + P2 . Do MATLABu stačí zadat tyto příkazy: 372
A=[1,-5,7];B=[3,2,3];C=[-1,2,4];D=[1,1,9];u=B-A;v=C-A;w=D-A; P=norm(cross(u,v))/2+norm(cross(v,w))/2 P = 33.2437
Pokud byste chtěli výsledek přesně, tak byste si ještě vypočítali: k=cross(u,v) k = 7 14 28 l=cross(v,w) l = 32 4 -12 k1=k/7;l1=l/4;l1(1)^2+l1(2)^2+l1(3)^2 ans = 74 k1(1)^2+k1(2)^2+k1(3)^2 ans = 21
Čtyrúhelník můžete zobrazit například pomocí následujícího m-souboru: autot6.m plot3([0,9],[0,0],[0,0],'k');hold on; plot3([0,0],[0,9],[0,0],'k'); plot3([0,0],[0,0],[0,9],'k'); A=[1,-5,7];B=[3,2,3];C=[-1,2,4];D=[1,1,9]; plot3([A(1),B(1)],[A(2),B(2)],[A(3),B(3)],'b'); plot3([C(1),B(1)],[C(2),B(2)],[C(3),B(3)],'b'); plot3([C(1),D(1)],[C(2),D(2)],[C(3),D(3)],'b'); plot3([A(1),D(1)],[A(2),D(2)],[A(3),D(3)],'b'); text(2.25,-5,7.5,'\fontname{times new roman ce}A'); text(3.25,2,2.5,'\fontname{times new roman ce}B'); text(-1,2.5,4,'\fontname{times new roman ce}C'); text(1,0,9.5,'\fontname{times new roman ce}D'); axis square;box off;axis([-5 9 -5 9 -5 9]); set(gca,'XDir','reverse','Ydir','reverse','ZDir','normal'); text(9,0,-0.5,'\fontname{times new roman ce}\itx'); text(0,9,-0.5,'\fontname{times new roman ce}\ity'); text(0,0.5,9,'\fontname{times new roman ce}\itz'); axis off;
Obr. 9.6: Zobrazení čtyřúhelníku v prostoru 7. Souřadnice těžiště se vypočítají nejrychleji podle vztahu T =
A+B+C . Do MATLABu 3
stačí zadat tyto příkazy: A=[2,-1,2];B=[1,3,3];C=[-1,-2,5];T=(A+B+C)/3 T = 0.6667 0 3.3333
Trojúhelník s těžištěm lze zobrazit pomocí následujícího m-souboru:
autot7.m plot3([0,6],[0,0],[0,0],'k'); hold on; plot3([0,0],[0,6],[0,0],'k');
373
plot3([0,0],[0,0],[0,6],'k'); A=[2,-1,2];B=[1,3,3];C=[-1,-2,5];T=[2/3,0,10/3]; plot3([A(1),B(1)],[A(2),B(2)],[A(3),B(3)],'b'); plot3([C(1),B(1)],[C(2),B(2)],[C(3),B(3)],'b'); plot3([A(1),C(1)],[A(2),C(2)],[A(3),C(3)],'b'); text(2.25,-1,1.75,'\fontname{times new roman ce}A'); text(1,3.25,2.75,'\fontname{times new roman ce}B'); text(-1.15,-2,5.15,'\fontname{times new roman ce}C'); text(2/3+0.15,0,10/3+0.5,'\fontname{times new roman ce}T'); plot3(2/3,0,10/3,'k+'); axis square; box off; axis([-2 6 -2 6 -2 6]); set(gca,'XDir','reverse','Ydir','reverse','ZDir','normal'); text(6,0,-0.25,'\fontname{times new roman ce}\itx'); text(0,6,-0.25,'\fontname{times new roman ce}\ity'); text(0,0.25,6,'\fontname{times new roman ce}\itz'); axis off;
Obr. 9.7: Zobrazení trojúhelníka ABC včetně těžiště 8. Nejprve si nalezněte normálový vektor n roviny ρ = ABC . Vypočítejte u = B − A , v = C − A , normálový vektor je pak n = u × v . Do MATLABu stačí zadat tyto příkazy: A=[2,8,1];B=[1,-1,-2];C=[-3,-1,4];u=B-A;v=C-A;n=cross(u,v) n = -54 18 -36 n1=n/(-18) n1 = 3 -1 2
parametrické vyjádření přímky p je p :
3− x 5− y = t ⇒ 3− x = t ⇒ x = 3−t , =t⇒ 1 2
1− z = t ⇒ 1 − z = 3t ⇒ z = 1 − 3t , kde t ∈ R . Směrový vektor 3 přímky p je w = (− 1; − 2; − 3) a úhel, který svírá přímka p s rovinou ρ = ABC se n⋅w vypočítá podle vztahu sin α = . Zadejte do MATLABu tyto příkazy: n⋅w 5 − y = 2t ⇒ y = 5 − 2t ,
n=[3,-1,2];w=[-1,-2,-3];x=abs(dot(n,w))/(norm(w)*norm(n)) x = 0.5000
1 π ⇒ α = ⇒ α = 30° . Úhel, který svírá přímka s rovinou je úhel, který 2 6 svírá přímka se svým pravoúhlým průmětem do této roviny. Abyste mohli nakreslit odpovídající obrázek, tak si nejprve musíte tento pravoúhlý průmět nalézt. Nalezněte nejprve průsečík P přímky p s rovinou ρ a pak spusťte z libovolného bodu přímky p kolmici na rovinu ρ , nalezněte průsečík R a těmito dvěma body prochází pravoúhlý
protože sin α =
374
průmět p1 přímky p do roviny ρ . Do MATLABu nejprve zadejte tento příkaz: d=-dot(n1,A) d = 0
obecná rovnice roviny ρ : 3 x − y + 2 z = 0 . Dosaďte do této rovnice parametrické vyjádření přímky p: 3 ⋅ (3 − t ) − (5 − 2t ) + 2 ⋅ (1 − 3t ) = 0 ⇒ 9 − 3t − 5 + 2t + 2 − 6t = 0 ⇒ 6 6 6 6 15 23 11 6 = 7t ⇒ t = . Hledaný průsečík P = 3 − ; 5 − 2 ⋅ ; 1 − 3 ⋅ = ; ; − . Na 7 7 7 7 7 7 7 přímce p leží například bod X = (3; 5; 1) , vektor kolmý k rovině ρ je vektor n = (3; − 1; 2) . Parametrické vyjádření kolmice spuštěné z bodu X na rovinu ρ je: x = 3 + 3t , y = 5 − t , z = 1 + 2t , kde t ∈ R . Průsečík této kolmice s rovinou ρ bude 3 3 ⋅ (3 + 3t ) − (5 − t ) + 2 ⋅ (1 + 2t ) = 0 ⇒ 9 + 9t − 5 + t + 2 + 4t = 0 ⇒ 14t = −6 ⇒ t = − , pak 7 3 3 3 12 38 1 hledaný průsečík R = 3 + 3 ⋅ − ; 5 + ; 1 + 2 ⋅ − = ; ; , směrový vektor 7 7 7 7 7 7 3 3 15 12 pravoúhlého průmětu je a s = P − R = ; − ; − ⇒ s = ⋅ (1; − 5; − 4 ) 7 7 7 7 15 23 11 parametrické vyjádření je p1 : x = + t , y = − 5t , z = − − 4t , kde t ∈ R . Protože 7 7 7 průsečík P neleží uvnitř trojúhelníka ABC, tak byly protaženy strany AC a BC o svou polovinu. Do MATLABu byly zadány tyto dva příkazy: A+(A-C)/2 ans = 4.5000 B+(B-C)/2 ans = 3
-1
12.5000
-0.5000
-5
Obrázek nyní můžete nakreslit například pomocí následujícího m-souboru:
autot8.m patch([4.5,3,-3],[12.5,-1,-1],[-0.5,-5,4],'c');hold on; plot3(2,8,1,'k+'); text(1.6,8.7,1,'\fontname{times new roman ce}A'); plot3(1,-1,-2,'k+'); text(1,-1.4,-2,'\fontname{times new roman ce}B'); plot3(-3,-1,4,'k+'); text(-3.4,-1.1,4,'\fontname{times new roman ce}C'); t=-3:0.01:3; x=15/7+t;y=23/7-5.*t;z=-11/7-4.*t;plot3(x,y,z,'m '); t=-2:0.01:5; x=3-t;y=5-2.*t;z=1-3.*t;plot3(x,y,z,'b'); plot3([3,12/7],[5,38/7],[1,1/7],'k:'); plot3(3,5,1,'k+'); plot3(15/7,23/7,-11/7,'k+'); text(1.6,3.8,1/7,'\fontname{times new roman ce}P'); plot3(12/7,38/7,1/7,'k+'); text(0.1,12.5,5,'\fontname{times new roman ce}\itp'); text(0.1,12.5,5,'\fontname{times new roman ce} _1'); text(5.2,8,5,'\fontname{times new roman ce}\itp'); text(2.5,5,2,'\fontname{times new roman ce}\it{\alpha}'); axis square;box off; axis([-4 11 -4 11 -4 11]); set(gca,'XDir','reverse','Ydir','reverse','ZDir','normal'); axis off;view(70,90);
375
Obr. 9.8: Úhel, který svírá přímka p s rovinou trojúhelníka ABC 9. Potřebujete určit souřadnice bodů X, Y a Z. Nejprve si nalezněte parametrické vyjádření přímek p, q a obecnou rovnici roviny ρ = ABC . Pomocí MATLABu si vypočítejte vektory u = B − A , v = C − A , jejich vektorovým součinem získáte normálový vektor roviny ρ . Směrový vektor přímky p je s = D − E , směrový vektor přímky q získáte vektorovým součinem normálových vektorů zadaných dvou rovin a libovolný bod přímky q (průsečnice zadaných dvou rovin) tak, že si jednu souřadnici zvolíte a zbývající dopočítáte. Zde lze zpaměti určit bod L = (0; 0; 1) . A=[2,-1,0];B=[3,1,-1];C=[2,-2,2];D=[1,1,1];E=[1,3,2];u=B-A; v=C-A;n=cross(u,v), n = 3 -2 -1 d=-dot(n,A) d = -8 s=D-E s = 0
-2
-1
ss=cross([1,0,1],[1,1,0]) ss = -1 1 1
Obecná rovnice roviny ρ : 3 x − 2 y − z − 8 = 0 , parametrické vyjádření přímky p : x = 1 , y = 1 − 2t , z = 1 − t , kde t ∈ R , parametrické vyjádření přímky q : x = − s , y = s , z = 1 + s , kde s ∈ R . Průsečík přímek p, q stanovíte lehce, protože porovnání x-ových souřadnic okamžitě máte s = −1 a dosazením do zbývajících parametrických rovnic dostáváte X = (1; − 1; 0) . Dosazením parametrického vyjádření přímky p do obecné 8 rovnice roviny dostáváte: 3 − 2 ⋅ (1 − 2t ) − 1 + t − 8 = 0 ⇒ 5t − 8 = 0 ⇒ 5t = 8 ⇒ t = , 5 16 8 11 3 dosazením pak Y = 1; 1 − ; 1 − = 1; − ; − . Analogicky naleznete bod Z 5 5 5 5 3 3 ⋅ (− s ) − 2 ⋅ s − (1 + s ) − 8 = 0 ⇒ −3s − 2 s − 1 − s − 8 = 0 ⇒ −6 s = 9 ⇒ s = − dosazením 2 3 3 3 3 1 3 pak Z = ; − ; 1 − = ; − ; − . Velikosti stran vypočítáte lehce jako velikosti 2 2 2 2 2 2 vektorů x = Z − Y , y = Z − X , z = Y − X . Do MATLABu stačí zadat následující příkazy: X=[1,-1,0];Y=[1,-11/5,-3/5];Z=[3/2,-3/2,-1/2]; o=norm(Z-Y)+norm(Z-X)+norm(Y-X) o = 3.0737
Pokud byste potřebovali obvod vyjádřit přesně, pak byste použili tyto příkazy: x=10*Z-10*Y;vx=x(1)^2+x(2)^2+x(3)^2 vx = 75
376
y=2*Z-2*X;vy=y(1)^2+y(2)^2+y(3)^2 vy = 3 z=5*Y-5*X;vz=z(1)^2+z(2)^2+z(3)^2 vz = 45
75 3 45 5 3 + 5 3 + 6 5 10 3 + 6 5 5 3 + 3 5 + + = = = ≈ 3,073 7 . 10 2 5 10 10 5 Trojúhelník XYZ je rovnoramenný a lze jej zobrazit například pomocí následujícího m-souboru:
pak o =
autot9.m plot3([0,3],[0,0],[0,0],'k'); hold on; plot3([0,0],[0,3],[0,0],'k'); plot3([0,0],[0,0],[0,3],'k'); patch([1,1,3/2],[-1,-11/5,-3/2],[0,-3/5,-1/2],'g'); text(1,-1,0,'\fontname{times new roman ce}X'); text(1,-11/5,-3/5+0.25,'\fontname{times new roman ce}Y'); text(3/2,-3/2,-1/2-0.25,'\fontname{times new roman ce}Z'); axis square;box off; axis([-1 2 -1 2 -1 2]); set(gca,'XDir','reverse','Ydir','reverse','ZDir','normal'); text(3,0,-0.25,'\fontname{times new roman ce}\itx'); text(0,3,-0.25,'\fontname{times new roman ce}\ity'); text(0,0.25,3,'\fontname{times new roman ce}\itz'); axis off;
Obr. 9.9: Zobrazení trojúhelníka XYZ 10. Nejprve si určete parametrické vyjádření „sloupků“. Sloupek p = AB má směrový vektor s = B − A , sloupek q je průsečnice rovin x − y + 4 = 0 a y + z = 0 a směrový vektor je roven vektorovému součinu normálových vektorů zadaných rovin. Bod průsečnice lze opět stanovit zpaměti, zvolíte-li z-ovou souřadnici nulovou, pak X = (− 4; 0; 0) . Do MATLABu stačí zadat tyto příkazy: A=[3,2,1];B=[-1,0,1];s=B-A s = -4 -2 0 s=s/(-2) s = 2
1
0
ss=cross([1,-1,0],[0,1,1]) ss = -1 -1 1 ss=-ss ss = 1
1
-1
377
Parametrická vyjádření jsou: p : x = −1 + 2t , y = t , z = 1 , kde t ∈ R ; q : x = −4 + s , y = s , z = − s , kde s ∈ R . Nalézt délku nejkratší vzpěry znamená nalézt délku osy těchto dvou mimoběžek. Musíte tedy nejprve nalézt směr k kolmý k oběma přímkám p, q a pak nalézt příčku mimoběžek rovnoběžnou s tímto směrem k. Pokud jste to pozapomněli, tak například přímkou p a směrem k proložíte rovinu α , naleznete průsečík Q této roviny α s přímkou q, což je jeden krajní bod hledané osy. Pak tímto bodem Q vedete přímku rovnoběžnou se směrem k a naleznete její průsečík P s přímkou p. Vzdálenost bodů PQ je hledaná délka vzpěry. S pomocí MATLABu můžete postupovat například takto: k=cross(s,ss) k = -1 2
1
l=cross(k,s) l = -1 2
-5
d=-dot(l,B) d = 4
obecná rovnice roviny
α : − x + 2 y − 5 z + 4 = 0 ⇒ α : x − 2 y + 5 z − 4 = 0 . Průsečík
s přímkou q je tedy − 4 + s − 2 s − 5s − 4 = 0 ⇒ 6 s = −8 ⇒ s = −
4 a dosazením dostáváte 3
4 4 4 16 4 4 Q = − 4 − ; − ; = − ; − ; . Přímka k = Q, k má parametrické vyjádření 3 3 3 3 3 3 16 4 4 k : x = − − r , y = − + 2r , z = + r , kde r ∈ R . Průsečík přímek k, p naleznete 3 3 3 4 1 velice snadno, stačí porovnat z-ové souřadnice a okamžitě dostanete 1 = + r ⇒ r = − , 3 3 16 1 4 2 dosazením pak P = − + ; − − ; 1 = (− 5; − 2; 1) . Vzdálenost bodů PQ je: 3 3 3 3 P=[-5,-2,1];Q=[-16/3,-4/3,4/3];vzd=norm(P-Q) vzd = 0.8165
nebo pro přesnou hodnotu: v=3*P-3*Q;vz=v(1)^2+v(2)^2+v(3)^2 vz = 6
6 ≈ 0,816 5 . Oba sloupky a vzpěru lze zakreslit například 3 pomocí následujícího m-souboru:
Vzdálenost bodů PQ je
autot10.m t=-5:0.01:2;x=-1+2.*t;y=t;z=1+0.*t;plot3(x,y,z,'k'); hold on; s=-10:0.01:25;x=-4+s;y=s;z=-s;plot3(x,y,z,'b'); P=[-5,-2,1];Q=[-16/3,-4/3,4/3]; plot3([P(1),Q(1)],[P(2),Q(2)],[P(3),Q(3)],'m'); plot3(-5,-2,1,'k+'); text(-5+0.5,-2,1+0.25,'\fontname{times new roman ce}P'); plot3(-16/3,-4/3,4/3,'k+'); text(-16/3-0.25,-4/3,4/3,'\fontname{times new roman ce}Q'); axis square;box off;axis([-5 2 -5 2 -5 2]); text(2,1,1,'\fontname{times new roman ce}\itp'); text(-3.5,0,0,'\fontname{times new roman ce}\itq'); set(gca,'XDir','reverse','Ydir','reverse','ZDir','normal'); axis off;
378
Obr. 9.10: Zobrazení osy dvou mimoběžek (sloupků a vzpěry)
▲
Výsledek 1. Střed kružnice opsané trojúhelníku ABC má souřadnice S = (− 4; − 1) a poloměr r = 5 příslušných délkových jednotek. Trojúhelník i kružnice opsaná, včetně jejího středu jsou zobrazeny na Obr. 9.1. 2. Obecná rovnice výšky na stranu AB je 4 x + y − 9 = 0 , na stranu BC je 4 x − 7 y − 16 = 0 7 79 a na stranu AC je 4 x + 9 y − 2 = 0 . Průsečík výšek má souřadnice V = ; − . 8 32 Trojúhelník, výšky i jejich průsečík jsou zobrazeny na Obr. 9.2.
3 6 18 1 7 3. Souřadnice vrcholů jsou A = − ; , B = ; − , C = ; 13 a pro obsah 7 5 5 7 2 109 2 209 = ≈ 15,778 6 příslušných plošných jednotek. trojúhelníka ABC platí: P = 15 140 140 Zobrazení trojúhelníku ABC je na Obr. 9.3. 4. Trojúhelníková parcela ABC má vnitřní úhly přibližně s přesností na čtyři desetinná místa: α ≈ 27°46′36′′ , β ≈ 104°37 ′15′′ a γ ≈ 47°36′9′′ . Parcela je s vnitřními úhly zobrazena na Obr. 9.4. 5. Velikost zorného úhlu, pod nímž je vidět kružnici x 2 + y 2 − 2 x − 6 y − 6 = 0 z bodu P = (− 3; 0) je přibližně α ≈ 106°15′37 ′ . Tečna procházející body T1 , P má obecnou rovnici t1 : x + 3 = 0 a tečna procházející body T2 , P má obecnou rovnici 21 3 t 2 : 7 x + 24 y + 21 = 0 , kde T1 = (− 3; 3) a T2 = − ; − . Kružnice, bod P, obě 25 25 tečny, zorný úhel i Thaletova kružnice jsou zobrazeny na Obr. 9.5. 7 ⋅ 21 + 2 ⋅ 74 ≈ 33,243 7 příslušných plošných 2 jednotek. Čtyřúhelník je zobrazen na Obr. 9.6.
6. Obsah čtyřúhelníka ABCD je P =
10 2 7. Souřadnice těžiště jsou T = ; 0; . Zobrazení zadaného trojúhelníka ABC včetně 3 3 těžiště je na Obr. 9.7.
379
π ⇒ α = 30° . Zobrazení roviny ρ , 6 přímky p, jejího pravoúhlého průmětu p1 do roviny ρ i úhlu α je na Obr. 9.8.
8. Přímka p svírá s rovinou ρ = ABC úhel α =
5 3 +3 5 ≈ 3,073 7 příslušných délkových jednotek. 5 Rovnoramenný trojúhelník XYZ je zobrazen na Obr. 9.9.
9. Obvod trojúhelníka XYZ je o =
10. Nejkratší vzpěra, která spojuje rohový a koncový sloupek voliéry, je dlouhá 6 ≈ 0,816 5 příslušných délkových jednotek. Osa dvou mimoběžek i mimoběžky 3 (vzpěra a sloupky) jsou zobrazeny na Obr. 9.10. ▲
Shrnutí V této kapitole jste se pomocí MATLABu naučili provádět elementární operace s vektory a tím byste měli umět vyřešit jakoukoliv polohovou či metrickou úlohu (v rovině i v prostoru) z analytické geometrie s využitím MATLABu. Samozřejmě, že pokud nebudete umět řešit tuto úlohu prostorově a nebudete umět si ji rozložit na základní úlohy analytické geometrie, tak Vám znalost těchto elementárních operací s vektory v MATLABu mnoho nepomůže. Budete-li vědět, že potřebujete vypočítat smíšený součin, resp. vektorový součin atd., pak Vás MATLAB zbaví nepříjemných výpočtů, u kterých dochází často k numerickým chybám. ▲ Další zdroje MATLAB CREATIVE TEAM. MATLAB The Language of Technical Computing. USA: Natick, The MathWorks, Inc., November 2000. Fifth printing. MA 01760-2098 USA POLCEROVÁ, Marie. Doprovodný text k počítačovým cvičením Matematika I. Brno: Fakulta chemická, Vysoké učení technické v Brně, 2001 POLCEROVÁ, Marie a Jaroslav BAYER. Analytická geometrie v příkladech. Brno: Vysoké učení technické v Brně, Fakulta chemická, 2004, ISBN 80-214-1793-5 POLCEROVÁ, Marie. Cvičení č. 9. In: Vysoké učení technické v Brně, e-learning, Kurz: Počítačová cvičení z matematiky BCT_PCM [online], 2010 [cit. 2010-05-12]. Dostupné z: https://www.vutbr.cz/elearning/ POLCEROVÁ, Marie. Počítačové cvičení č. 9. In: Fakulta chemická Vysokého učení technického v Brně, Matematika [online], 2010 [cit. 2010-05-12]. Dostupné z: https://www.fch.vutbr.cz/~polcerova/ POLCEROVÁ, Marie. Dílčí úloha č. 5. In: Vysoké učení technické v Brně, e-learning, Kurz: Počítačová cvičení z matematiky BCT_PCM [online], 2010 [cit. 2010-05-12]. Dostupné z: https://www.vutbr.cz/elearning/ POLCEROVÁ, Marie. Dílčí úloha č. 5. In: Vysoké učení technické v Brně, e-learning, Kurz: Počítačová cvičení z matematiky BCT_PCM [online], 2010 [cit. 2010-05-12]. Dostupné z: https://www.vutbr.cz/elearning/ POLCEROVÁ, Marie. MAT. In: Vysoké učení technické v Brně, e-learning, Kurz: Počítačová cvičení z matematiky BCT_PCM [online], 2010 [cit. 2010-05-12]. Dostupné z: https://www.vutbr.cz/elearning/
Klíčová slova Analytická geometrie Analytická geometrie je část geometrie, která zkoumá geometrické útvary v euklidovské geometrii pomocí algebraických a analytických metod. V analytické geometrii jsou geometrické útvary v prostoru vyjadřovány čísly a rovnicemi ve zvolených souřadnicových soustavách. ▲ 380