1. Logika

Př. 1.1    Zjednodušte výrok p ∧ (p ∨ q)

LogicalExpand[p && (p ||q)]

Př. 1.2   Zjednodušte výrok  ¬(p ∨ q) ⇔ ¬p ∧ ¬q

Jedná se vlastně o de Morganův zákon, tedy by mělo vyjít "true"

Ekvivalence není v Mathematice definována, musíme si pomoci jinak

1. pomocí přepisu ekvivalence do dvou implikací:

LogicalExpand[Implies[!(p||q),!p && !q]&&Implies[!p && !q,!(p||q)]]

2. definujeme si ekvivalenci jako funkci dvou proměnných, funkci pak použijeme k řešení úlohy:

Equivalence[a_,b_]:=Implies[a,b]&&Implies[b,a]

Equivalence[!(p||q),!p&&!q] //LogicalExpand

Př. 1.3   Určete, pro které hodnoty výroků a, b, c je následující výrok nepravdivý. ((¬A⇒C)∨(B∧¬C))⇔(A∨C)

LogicalExpand[!Equivalence[(Implies[!a,c]||b&& !c),a||c]]

Tedy výrok je nepravdivý pro jedinou kombinaci výroků: a neplatí, b platí, c neplatí.

Př. 1.4   Rozhodněte, zda výroková formule je tautologie: (A ∧ B) ⇒ (A ∨ B)

LogicalExpand[Implies[A&&B,A||B]]

2. Množiny

Př. 2.1 Jsou dány množiny A={1, 2, 3, 5, 6, 7}, B={2, 4, 6, 8, 9}. Určete jejich průnik , sjednocení a množinový rozdíl A - B.

A={1,2,3,5,6,7}; B={2,4,6,8,9};

Sjednoceni=Union[A,B]

Prunik=Intersection[A,B]

Rozdil=Complement[A,B]

3. Přirozená čísla

Př. 3.1    Napište tabulku prvních 100 prvočísel

Table[Prime[n],{n,100}]

Př. 3.2    Vypište 2007. prvočíslo

Prime[2007]

Př. 3.3   Rozhodněte, zda jsou čísla 224831, 20204080301 prvočísla

PrimeQ[224831]

PrimeQ[20204080301]

Opravdu není? Podívejme se na celočíselné dělitele tohoto čísla:

Divisors[20204080301]

Př.  3.4    Najděte největší společný dělitel, nejmenší společný násobek pro čísla 24268, 31884

GCD[24268,31884]

LCM[24268,31884]

Přesvědčíme se,  že  součin největšího společného dělitele a násobku dvou přirozených čísel se rovná součinu těchto čísel:

GCD[24268,31884]*LCM[24268,31884]==24268*31884

Př. 3.5 Vypište všechny dělitele čísla 2006, 2007

Divisors[2006]

Divisors[2007]

Případně

Map[Divisors,{2006,2007}]

Př. 3.6  Dokonalé číslo nazveme takové přirozené číslo, jež je rovno součtu všech svých přirozených dělitelů menších než je toto číslo.
    Vypište všechna dokonalá čísla menší než 50000

Napíšeme funkci. která sečte všechny dělitele daného čísla, porovná s daným číslem:

dokonalecislo[ seznam_]:=Select[seznam,2#==Plus@@Divisors[#]&]

dokonalecislo[Range[49999]]

4. Výrazy

Př. 4.1 Upravte výraz: (((a^6)(b^2)c)/((a^4)(b^3)(c^3))).

Simplify[(((a^(6 ))(b^2) c)/((a^4) (b^3) (c^3)))]

Zajímají-li nás podmínky existence zlomku, vyřešme rovnici pro jmenovatel:

Reduce[(a^4)(b^3)(c^3)==0,{a,b,c}]

Př. 4.2  Sečtěte:(1/( 1-(v^2)))+(1/(1+(v^2))).

Simplify[(1/( 1-(v^2)))+(1/(1+(v^2)))] //TraditionalForm

Př. 4.3  Proveďte: ((1-(v^2))/(v^8))+((1+v)/(v^6))-(1/(v^5)).

Simplify[((1-(v^2))/(v^8))+((1+v)/(v^6))-(1/(v^5))]

Př. 4.4  Sečtěte:(1/a)+(1/b).

Simplify[(1/a)+(1/b)]

FullSimplify[(1/a)+(1/b)]

Nepomohl příkaz pro zjednodušení, ani jeho silnější (ale pomalejší) verze. Zadáme tedy přímo příkaz pro sečtení zlomků.

Together[(1/a)+(1/b)]

Př. 4.5   Vynásobte mnohočleny: ((x^2)+3x+2)(x+1)

Expand[((x^2)+3x+2)(x+1)]

Chceme-li zapsat od nejvyšší mocniny x:

Expand[((x^2)+3x+2)(x+1)] //TraditionalForm

Př. 4.6  Upravte: (a^5)-(b^5), roznásobte:(a-b) ((a^4)+(a^3) b+(a^2) (b^2)+a (b^3)+(b^4))

Factor[ (a^5)-(b^5)]

Expand[(a-b) ((a^4)+(a^3) b+(a^2) (b^2)+a (b^3)+(b^4))]

Př. 4.7    Proveďte: (x+1)(x+2)(1-x)+x(x+5)(x-3)

Expand[(x+1)(x+2)(1-x)+x(x+5)(x-3)]

Př. 4.8  Stanovte hodnotu výrazu ((a^2)-3ab+4(b^2))(2a-3b)-6(b^2)(3a-2b)-(ab^2)  pro a=(1/2), b=-(1/9)

Při zápisu výrazu je třeba dbát na to, aby mezi a, b v "3ab" byla mezera nebo "raději" "*" jako symbol násobení. Jinak Mathematica chápe ab jako jednu proměnnou ab.

((a^2)-3a*b+4(b^2))(2a-3b)-6(b^2)(3a-2b)-a*(b^2)  /.{a->(1/2),b->-(1/9)}

Př. 4.9  Vydělte: (4(a^2)+6b)/2

Simplify[ (4(a^2)+6b)/2]

Př. 4.10  Vydělte: ((((a^2)-8*a+7))/(a-7))

Simplify[ ((((a^2)-8*a+7))/(a-7))]

Př. 4.11  Vydělte:(((m^4)-(m^3) n+(m^2) (n^2)-m (n^3))/((m^2)+(n^2)))

Simplify[(((m^4)-(m^3) n+(m^2) (n^2)-m (n^3))/((m^2)+(n^2)))] //Expand

Př. 4.12  Dělte mnohočleny: (15-9a+5(a^2)-3(a^3)):(5-3a)

Simplify[(15-9a+5(a^2)-3(a^3))/(5-3a)]

Podmínky Mathematica neurčí, musíme sami:

Solve[5-3a==0,a]

a tedy nesmí být rovno (5/3).

Př. 4.13  Dělte mnohočlen mnohočlenem: (2(x^7)+3(x^6)+14(x^5)+10(x^4)-7(x^3)-32(x^2)+15x-5):((x^4)+7(x^2)-3x+1)

Simplify[(2(x^7)+3(x^6)+14(x^5)+10(x^4)-7(x^3)-32(x^2)+15x-5)/((x^4)+7(x^2)-3x+1)]

TraditionalForm[%]    (*zobraz výsledek v obvyklém tvaru *)

Př. 4.14  Dělte mnohočlen mnohočlenem:(3(x^2)-4x+5)/(x-1)

Simplify[(3(x^2)-4x+5)/(x-1)]

Simplify zřejmě dělení se zbytkem zvládnout nechce, použijeme FullSimplify nebo Apart:

Apart[(3(x^2)-4x+5)/(x-1)]

Př. 4.15  Umocněte: (((x+3))^2)

Simplify[(((x+3))^2)]

Expand[(((x+3))^2)]

Výsledek můžeme zobrazit způsobem obvyklým v matematice:

Expand[(((x+3))^2)] //TraditionalForm

Př. 4.16  Napište jako druhou mocninu dvojčlenu: (x^2)-6x+9

Factor[(x^2)-6x+9]

Factor[(x^2)-6x+9] //TraditionalForm

Př. 4.17 Rozložte na součin: -4(x^3)y+6(x^2)(y^2)-8(x^4)(y^3)

Factor[-4(x^3)y+6(x^2)(y^2)-8(x^4)*(y^3)]

Př. 4.18  Rozložte (a^4)-16, 1-(a^3)

Factor[(a^4)-16]

Factor[1-(a^3)]

Př. 4.19   Rozložte (((b x+a y))^2)+(((a x-b y))^2)

Factor[(((a*x-b*y))^2)+(((b*x+a*y))^2)]

Př. 4.20  Zjednodušte výraz (((x^2)-2x*y)/(x*y-2(y^2))), udejte podmínky existence výrazu

Simplify[(((x^2)-2x*y)/(x*y-2(y^2)))]

Solve[x*y-2(y^2)==0,y]

Př. 4.21   Zjednodušte výraz (((x^3)-(x^2)-x+1)/((x^4)-2(x^2)+1)), udejte podmínky existence výrazu

Simplify[(((x^3)-(x^2)-x+1)/((x^4)-2(x^2)+1))]

Solve[(x^4)-2(x^2)+1==0,x]

Hodnoty +1,-1 jsou dvojnásobnými kořeny rovnice:  jmenovatel = 0

Př. 4.22    Sečtěte zlomky (a/(a-b))-1

Together[(a/(a-b))-1]

Určíme ještě podmínky:

Solve[a-b==0,b]

Tedy b≠a

Př. 4.23   Sečtěte zlomky (1/(6x-4y))-(1/(6x+4y))-((3x)/(4(y^2)-9(x^2)))

Together[(1/(6x-4y))-(1/(6x+4y))-((3x)/(4(y^2)-9(x^2)))]

Př. 4.24   Upravte: ((x^2)-1)((1/(x-1))-(1/(x+1))-1)

Simplify[((x^2)-1)((1/(x-1))-(1/(x+1))-1)]

Př. 4.25   Upravte (((2m+1)/(2m-1))-((2m-1)/(2m+1))):((4m)/(10m-5))

Simplify[(((((2m+1)/(2m-1))-((2m-1)/(2m+1))))/((4m)/(10m-5)))]

Př. 4.26   Upravte   (((1/(1-x))+(1/(1+x)))/((1/(1-x))-(1/(1+x))))

Simplify[(((1/(1-x))+(1/(1+x)))/((1/(1-x))-(1/(1+x))))]

Př. 4.27   Upravte ((x^(r-1))y)*(xy), (((((a^2)/b)))^3)*((((b/a)))^2)

((x^(r-1))y)*(x*y)

(((((a^2)/b)))^3)*((((b/a)))^2)

Př. 4.28   Vypočtěte: 4((Sqrt[a])+(Sqrt[b]))-2((Sqrt[a])-(Sqrt[b]))-6(3(Sqrt[a])+(Sqrt[b]))+16(Sqrt[a])

Simplify[4((Sqrt[a])+(Sqrt[b]))-2((Sqrt[a])-(Sqrt[b]))-6(3(Sqrt[a])+(Sqrt[b]))+16(Sqrt[a])]

Př. 4.29   Částečně odmocněte:(Sqrt[12]), (Sqrt[50]),(250^(1/3))

(Sqrt[12])
(Sqrt[50])
(250^(1/3))

Př. 4.30   Upravte: (Sqrt[(x^2)])+2(Sqrt[x])-(Sqrt[(x^2)(y^2)])

Expand[(Sqrt[(x^2)])+2(Sqrt[x])-(Sqrt[(x^2)(y^2)])]

Metoda Expand nepomůže, Mathematica nezná obor proměnných x, y. V tomto případě je možné použít PowerExpand. Např.:

Expand[(Sqrt[(x^2)])]
PowerExpand[(Sqrt[(x^2)])]

PowerExpand[(Sqrt[(x^2)])+2(Sqrt[x])-(Sqrt[(x^2)(y^2)]) ]

Můžeme výsledek upravit vytknutím na součin:

Factor[2 (Sqrt[x])+x-x y]

Př. 4.31 Upravte ((((x^6)))^(1/3)).

((((x^6)))^(1/3))

Simplify[((((x^6)))^(1/3))]

Expand[((((x^6)))^(1/3))]

PowerExpand[((((x^6)))^(1/3))]

Opět je tedy nejefektivnější použití PowerExpand, pozor je jen potřeba dávat na obor proměnné, v tomto případě je pro všechna reálná x úprava v pořádku..

Př. 4.32   Upravte výrazy: ((5!-8!+6!)/(3!)),    ((((3!))^2)/(((5^2))!))

((5!-8!+6!)/(3!))
((((3!))^2)/(((5^2))!))

Př. 4.33   Zjednodušte výrazy: (n+1)!/n!,   ((n!*(n+1)!)/((n-1)!*(n+2)!))

FullSimplify[(n+1)!/n!]

FullSimplify[((n!*(n+1)!)/((n-1)!*(n+2)!))]

Př. 4.34   Upravte výrazy: ((((n!))^2)/((n-1)!*(n+1)!)), (((n-1)!)/((1+n)!))+(((3n+3)!)/((3n+4)!))

FullSimplify[((((n!))^2)/((n-1)!*(n+1)!))]

FullSimplify[(((n-1)!)/((1+n)!))+(((3n+3)!)/((3n+4)!))]

Př. 4.35   Určete hodnotu zlomku (((x^3)+2(x^2)-x-2)/((x^3)+(x^2)-4x-4)) pro x rovno po řadě -2, -3, 4.

Nejprve zlomek pojmenujeme:

zlomek=(((x^3)+2(x^2)-x-2)/((x^3)+(x^2)-4x-4));

Použijeme dosazení /.

zlomek /. x->-3

zlomek /. x->4
zlomek /. x->-2

Pro x = -2 je jmenovatel zlomku 0, výraz tedy není definován.. Zlomek však můžeme nejprve zjednodušit:

zjednzlomek=Cancel[zlomek]

zjednzlomek /. x->-2

5. Rovnice a nerovnice

Základní příkazy k řešení rovnic jsou Solve, NSolve, Reduce, FindRoot.

Př. 5.1 Řešte rovnici v R: 2x+3=7

Solve[2x+3==7,x]

Př. 5.2    Řešte nerovnici v R:(((x-1))^2)-(((x+1))^2)<8

Solve[(((x-1))^2)-(((x+1))^2)<8,x]

Systém Mathematica tedy standardně pomocí Solve nerovnice neřeší, použijeme Reduce:

Reduce[(((x-1))^2)-(((x+1))^2)<8,x]

Př. 5.3    Řešte rovnici v R: (9-4(x^2) )((x^2)-6x+9)=0

Solve[(9-4(x^2) )((x^2)-6x+9)==0,x]

Vidíme, že kořen x = 3 je dvojnásobným kořenem rovnice.

Př. 5.4    Řešte rovnici v R:((1-2x)/((x^2)-1))=0

Solve[((1-2x)/((x^2)-1))==0,x]

Př. 5.5   Řešte nerovnici v R:((1-2x)/((x^2)-1))<0

Použijeme opět příkaz Reduce:

Reduce[((1-2x)/((x^2)-1))≤0,x]

Řešení nerovnice můžeme i graficky znázornit pomocí příkazu RegionPlot:

RegionPlot[((1-2 x)/((x^2)-1))≤0,{x,-3,3},{y,-1,1},AspectRatio->Automatic]

Př. 5.6   Řešte rovnici v R: (x^2)+2x-1=0

Solve[(x^2)+2x-1==0,x]

Samostatné kořeny můžeme pro další použití v systému Mathematica získat takto:

rovnice=Solve[(x^2)+2x-1==0,x]

koren1=x /. rovnice[[1]]

koren2=x /. rovnice[[2]]

Tuto konstrukci doporučujeme k zapamatování, objeví se v mnoha dalších příkladech.

Př. 5.7   Řešte rovnici v R: (x^2)-6x-10+6(Sqrt[2])=0

Solve[ (x^2)-6x-10+6(Sqrt[2])==0,x]

Př. 5.8   Řešte rovnici v R: ((|1-x|)/2)-((|x+3|)/6)==1-(x/3)

Poznámka: K přehlednému zápisu rovnice (v zadání - výše) můžeme s výhodou použít příkazu:
      Abs[1-x]/2-Abs[3+x]/6==1-x/3  //TraditionalForm:

Abs[1-x]/2-Abs[3+x]/6==1-x/3  //TraditionalForm

Solve[Abs[1-x]/2-Abs[3+x]/6==1-x/3,x]

Metoda Solve selhala, budeme se pokoušet o řešení dál:

NSolve[Abs[1-x]/2-Abs[3+x]/6==1-x/3,x]

Ani metoda NSolve příliš nepomohla.

Reduce[Abs[1-x]/2-Abs[3+x]/6==1-x/3,x]

A tady je výsledek: všechna reálná x ≤-3, dále hodnota x=3.
Podívejme se ještě na grafické řešení rovnice:

graf1=Plot[(1/2) Abs[1-x]-(1/6) Abs[3+x],{x,-6,5},PlotStyle->{RGBColor[1,0,0],Dashing[{0.05,0.03}]}];
graf2=Plot[1-(x/3),{x,-6,5},PlotStyle->{RGBColor[0,1,0],Dashing[{0.02,0.03}]}];
Show[graf1,graf2]

V grafu jsou zobrazeny obě funkce najednou, je tedy dobře vidět i řešení rovnice.

Př. 5.9   Řešte nerovnici (x^2)-1≤x+1 početně i graficky

Nejprve početně: použijeme příkaz Reduce, Solve nerovnice neřeší

Reduce[(x^2)-1≤x+1,x]

Graficky: grafy nerovnic lze zobrazit příkazem RegionPlot

gr1=RegionPlot[(x^2)-1≤x+1,{x,-3,3},{y,-1,4},AspectRatio->Automatic]

gr2=Plot[{(x^2)-1,x+1},{x,-2,3}]

Oba grafy zobrazíme najednou příkazem Show:

Show[gr1,gr2]

Př. 5.10  Odvoďte systémem Mathematica vzorec pro řešení úplné kvadratické rovnice

Solve[a*(x^2)+b*x+c==0,x]

Př. 5.11   Nalezněte řešení rovnice (x^2)-3x+1=0

Solve[(x^2)-3x+1==0,x]

Kořeny můžeme získat i numericky - tedy jako zaokrouhlená desetinná čísla. Uveďme si několik způsobů řešení:

Solve[(x^2)-3x+1==0,x] //N
N[Solve[(x^2)-3x+1==0,x]]
NSolve[(x^2)-3x+1==0,x]

Př. 5.12   Řešte v R rovnici: (((1/2)x-(1/3)(2x-1))/((1/3)x+(1/2)(3x-1)))=(2/3)

Solve[(((1/2)x-(1/3)(2x-1))/((1/3)x+(1/2)(3x-1)))==(2/3),x]

Př. 5.13   Řešte v R rovnici s neznámou x: (x^2)+(((a-x))^2)=(((a-2x))^2)

Solve[ (x^2)+(((a-x))^2)==(((a-2x))^2),x]

Př. 5.14   Rozložte kvadratický trojčlen (x^2)+4x-96

Factor[(x^2)+4x-96]

Výsledek můžeme upravit do obvyklého tvaru:

Factor[(x^2)+4x-96] //TraditionalForm

Př. 5.15   Řešte v R rovnici: (x^4)-3((x^2)-1)=7((x^2)-3)

Solve[(x^4)-3((x^2)-1)==7((x^2)-3),x]

Př. 5.16   Určete tři po sobě jdoucí celá čísla tak, aby součet jejich druhých mocnin byl roven součtu druhých mocnin dvou po nich bezprostředně následujících celých čísel

První číslo označme x, sestavíme a vyřešíme rovnici:

(x^2)+(((x+1))^2)+(((x+2))^2)=(((x+3))^2)+(((x+4))^2)

Solve[(x^2)+(((x+1))^2)+(((x+2))^2)==(((x+3))^2)+(((x+4))^2),x]

Jedná se tedy o trojici čísel {-2,-1,0}  nebo {10,11,12}.

Př. 5.17   Řešte v R rovnici: 2 |x-2|+3 |x-1| = |x+10|

3*Abs[x-1]+2*Abs[x-2]==Abs[x+10] //TraditionalForm

Solve[3*Abs[x-1]+2*Abs[x-2]==Abs[x+10],x]

Podívejme se ještě na grafické   řešení: Sestrojíme grafy   funkcí reprezentujících pravou a levou stranu rovnice:

Plot[{3*Abs[x-1]+2*Abs[x-2],Abs[x+10]},{x,-2,5}]

Kořeny jsou x-ové souřadnice průsečíků obou grafů.

Př. 5.18    Řešte rovnici v R:|x+5|-|x-2|==-x+|x|+7

Solve[Abs[x+5]-Abs[x-2]==Abs[x]-x+7,x]

Metoda Solve nenalezla řešení, použijeme podobně jako v příkladu 5.8 Reduce

Reduce[Abs[x+5]-Abs[x-2]==Abs[x]-x+7,x]

Tedy řešením jsou všechna reálná x≥2.

Př. 5.19    Řešte rovnici v R:-2 |x-2|+3 |x-1|-|x|+|x+1|==|x+2|

Abs[x+1]-Abs[x]+3*Abs[x-1]-2*Abs[x-2]==Abs[x+2]

Použijeme podobně jako v příkladu 5.18 Reduce:

Reduce[Abs[x+1]-Abs[x]+3*Abs[x-1]-2*Abs[x-2]==Abs[x+2],x]

Zápis řešení je po vyřešení předchozích příkladů dostatečně srozumitelný.
Předveďme si ještě grafické řešení, sestrojíme graf pomocí RegionPlot:

RegionPlot[Abs[x+1]-Abs[x]+3*Abs[x-1]-2*Abs[x-2]==Abs[x+2],{x,-5,5},{y,-1,1},AspectRatio->Automatic]

Př. 5.20   Řešte v R rovnici: (Sqrt[12-x])=x

Solve[ (Sqrt[12-x])==x,x]

Př. 5.21    Řešte v R rovnici: (Sqrt[2x+6])-(Sqrt[x+1])=2

Solve[(Sqrt[2x+6])-(Sqrt[x+1])==2,x]

Př. 5.22    Řešte v R rovnici: (Sqrt[3x-7])-(Sqrt[x+1])=2

Solve[(Sqrt[3x-7])-(Sqrt[x+1])==2,x]

Př. 5.23    Řešte v R rovnici: 2(x^2)+(Sqrt[2(x^2)-4x+12])=4x+8

Solve[2(x^2)+(Sqrt[2(x^2)-4x+12])==4x+8,x]

Př. 5.24    Řešte v R rovnici:  (((Sqrt[x+1])-(Sqrt[x-1]))/((Sqrt[x+1])+(Sqrt[x-1])))=2-x

Solve[ (((Sqrt[x+1])-(Sqrt[x-1]))/((Sqrt[x+1])+(Sqrt[x-1])))==2-x,x]

Př. 5.25    Řešte v R rovnici: 1+(((a^2)-1)/x)=a,kde neznámá je x, parametr a

Solve[1+(((a^2)-1)/x)==a,x]

Systém Mathematica nenalezl všechna řešení, použijeme raději Reduce:

Reduce[1+(((a^2)-1)/x)==a,x]

Zde jsou již všechna řešení správně diskutována.

Př. 5.26   Řešte soustavu rovnic: 3x-5y=14
                                                	      6x-10y=17

Solve[{3x-5y==14,6x-10y==17},{x,y}]

Tedy soustava nemá řešení.

Př. 5.27    Řešte soustavu rovnic:  x+4y=37 ∧ 2x+5y=53.

Solve[{x+4y==37,2x+5y==53},{x,y}]

Př. 5.28    Řešte soustavu rovnic:  2x+3y=12 ∧ 4x+6y=24.

Solve[{2x+3y==12,4x+6y==24},{x,y}]

Soustava tedy má nekonečně mnoho řešení, vztah ve výsledku udává závislost x na y.

Př. 5.29    Řešte soustavu rovnic:x+3|y|==1 ∧ x+y+3==0.

Můžeme použít jak Solve, tak i Reduce :

Solve[{x+3Abs[y]==1,x+y+3==0},{x,y}]

Reduce[{x+3Abs[y]==1,x+y+3==0},{x,y}]

Řešení jsou stejná, liší se jen způsobem zápisu..

Př. 5.30    Řešte soustavu rovnic: x-y-z=5 ∧ y-x-z=1 ∧ z-x-y=-15.

Solve[{x-y-z==5,y-x-z==1,z-x-y==-15},{x,y,z}]

Př. 5.31    Řešte soustavu rovnic: (x^2)+(y^2)=4 ∧ x+2y=4

Solve[{(x^2)+(y^2)==4, x+2y==4},{x,y}]

Soustava má tedy 2 řešení - uspořádané dvojice [0,2] a [(8/5),(6/5)].

Podívejme se ještě na grafické řešení, grafickou reprezentaci této soustavy rovnic: obě rovnice reprezentují křivky v rovině - kružnici a přímku. Sestrojíme jejich grafy. Vzhledem k tomu, že první rovnice nereprezentuje funkci (zjednodušeně řečeno), nelze použít příkaz Plot, ale ContourPlot:

ContourPlot[{(x^2)+(y^2)==4,x+2y==4},{x,-3,3},{y,-3,3},Axes->True,AxesLabel->{x,y}]

Př. 5.32   Řešte soustavu rovnic: 4(x^2)-5(y^2)=-320 ∧ 3(x^2)+2(y^2)=588

Solve[{4(x^2)-5(y^2)==-320,3(x^2)+2(y^2)==588},{x,y}]

Př. 5.33   Řešte početně a graficky soustavu rovnic:  4(x^2)+(y^2)=4 ∧ (x^2)+4(y^2)=4

Grafem obou rovnic jsou elipsy. Jejich grafy můžeme sestrojit několika způsoby, použijeme ContourPlot.

el1=ContourPlot[4(x^2)+(y^2)-4,{x,-3,3},{y,-3,3},Contours->{0},ContourShading->False,PlotPoints->80];

el2=ContourPlot[(x^2)+4(y^2)-4,{x,-3,3},{y,-3,3},Contours->{0},ContourShading->False,PlotPoints->80];

Show[el1,el2,Frame->True,Axes->Automatic,AxesOrigin->{0,0}]

Souřadnice průsečíků jsou hledané kořeny soustavy.
Soustavu vyřešíme početně pomocí Solve.

Solve[{ 4(x^2)+(y^2)==4,(x^2)+4(y^2)==4},{x,y}]

Př. 5.34   Řešte soustavu rovnic:((x^2)/(a^2))+((y^2)/(b^2))=1 ∧ y=k x

Zde musíme v Solve uvést, vzhledem ke kterým neznámým soustavu rovnic  řešíme.

Clear[x,y,a,b,k]

Solve[{((x^2)/(a^2))+((y^2)/(b^2))==1, y==k*x},{x,y}]

Př. 5.35   V množině R řešte nerovnici: (((x-3))^2)+(((x+1))^2)≤2(x^2)-6x+13

Reduce[(((x-3))^2)+(((x+1))^2)≤2(x^2)-6x+13,x]

Př. 5.36  V množině R řešte nerovnici: (x/(|x-1|))≥0∧(1/x)<x+1

Reduce[(x/(Abs[x-1]))≥0&&1/x<x+1,x]

Př. 5.37  V množině R řešte nerovnici:(1/x)+(1/(x^2))≥1

Reduce[(1/x)+(1/(x^2))≥1,x]

Numerické řešení rovnic

Př. 5.38  Řešte rovnici (x^5)+(x^4)-4(x^3)+2(x^2)-3x-7=0

Solve[(x^5)+(x^4)-4(x^3)+2(x^2)-3x-7==0,x]

To nám mnoho nepomohlo, algebraické rovnice stupně vyššího než 4 Mathematica (a jak víme nejen ona) řešit obecně neumí. Použijeme tedy jiné metody - numerické. Použijeme postupně NRoots, NSolve, po sestrojení grafu FindRoot.

NRoots[(x^5)+(x^4)-4(x^3)+2(x^2)-3x-7==0,x]

?||

NSolve[(x^5)+(x^4)-4(x^3)+2(x^2)-3x-7==0,x]

Případně je možno řešit takto:

Solve[(x^5)+(x^4)-4(x^3)+2(x^2)-3x-7==0,x] //N

A graf funkce na levé straně rovnice:

Plot[(x^5)+(x^4)-4 (x^3)+2 (x^2)-3 x-7,{x,-3,2}]

FindRoot[(x^5)+(x^4)-4(x^3)+2(x^2)-3x-7==0,{x,-2.5}]

FindRoot[(x^5)+(x^4)-4(x^3)+2(x^2)-3x-7==0,{x,-1}]

FindRoot[(x^5)+(x^4)-4(x^3)+2(x^2)-3x-7==0,{x,2}]

FindRoot[(x^5)+(x^4)-4(x^3)+2(x^2)-3x-7==0,{x,0.5+I}]

Př. 5.39    Řešte rovnici x=cos x

Tuto rovnici běžnými matematickými prostředky řešit nelze.

Nejprve sestrojíme příslušný graf:

Clear[f]
f[x_]=Cos[x]-x;
Plot[f[x],{x,0,1}]

FindRoot[f[x]==0,{x,0.7}]

Př. 5.40   Řešte soustavu rovnic:  (x^2)+4xy+(y^2)=4 ∧ 5(x^2)-4xy+2(y^2)=8

Sestrojíme grafy pomocí ContourPlot, pak použijeme metodu FindRoot pro soustavu rovnic.

cp1=ContourPlot[(x^2)+4 x y+(y^2)-4==0,{x,-4,4},{y,-4,4},PlotPoints->60,ContourShading->False];
cp2=ContourPlot[5 (x^2)-4 x y+2 (y^2)-8==0,{x,-4,4},{y,-4,4},PlotPoints->60,ContourStyle->Dashing[{0.01}],ContourShading->False];
Show[cp1,cp2,Frame->False,Axes->Automatic,AxesOrigin->{0,0}]

FindRoot[{(x^2)+4xy+(y^2)==4,5(x^2)-4xy+2(y^2)==8},{x,1},{y,0.25}]

FindRoot[{(x^2)+4xy+(y^2)==4,5(x^2)-4xy+2(y^2)==8},{x,-1},{y,-0.25}]

Nalezli jsme dva průsečíky - dva kořeny dané soustavy. Zbývající kořeny by se určovaly podobně.

Př. 5.41 Řešte rovnici (e^(-((((x/4)))^2))) cos(x/π)=Sin (x^(3/2))+(5/4)pro 0≤x≤5.

Definujeme si funkce f, g jako funkce levé, pravé strany rovnice. Sestrojíme grafy obou funkcí, zajímají nás jejich průsečíky. Kořeny rovnice budou x-ové souřadnice těchto průsečíků.

Clear[f,g]
f[x_]=(E^(-((((x/4)))^2))) Cos[(x/π)];
g[x_]=Sin[(x^(3/2))]+(5/4);
Plot[{f[x],g[x]},{x,0,5},PlotStyle->{RGBColor[1,0,0],RGBColor[0,0,1]}]

První ze dvou kořenů budeme hledat "blízko" 2, druhý "blízko" 3.

FindRoot[f[x]==g[x],{x,2.}]

Spočítáme ještě souřadnici y tohoto bodu:

N[f[2.54105]]
N[g[2.54105]]

FindRoot[f[x]==g[x],{x,3}]

N[f[2.9746]]

6. Funkce

a)   Obecně o použití funkcí v Mathematice

Definice funkce v Mathematice má tvar 
f[x_]:=výraz s proměnnou x - tzv. odložené přiřazení, vyhodnotí se až při volání fce nebo
f[x_]=výraz s proměnnou x

Funkci můžeme definovat i s definičním oborem, případně po částech pomocí   /;

Př. 6.a.1    Definujte funkci y=(x^2)-3, určete její hodnotu pro x=1,-3,3,0,3.3

Zde je několik způsobů, jak dosadit první z hodnot:

f[x_]:=(x^2)-3

f[1]

f[x] /.x->1

1 //f

Map[f,{1}]

Dále:

f[-3]
f[3]
f[0]
f[3.3]

Nebo najednou:

listhodnot={1,-3,3,0,3.3}

Map[f,listhodnot]

Př. 6.a.2   Funkci f definujte jako -x pro záporná x, 2x pro nezáporná x. Sestrojte graf pro x od -3 do 4

ClearAll[f]
f[x_]:=-x/;x<0
f[x_]:=2 x/;x≥0
Plot[f[x],{x,-3,4},AspectRatio->Automatic]

Př. 6.a.3   Sestrojte graf funkce g(x) pro 0≤x≤5
g(x)=1 pro 0≤x<1; g(x)=g(x-1) pro x≥1

Clear[g]
g[x_]:=1 /;0≤x<1
g[x_]:=1+g[x-1] /;x≥1

Plot[g[x],{x,0,5},AspectRatio->Automatic,PlotRange->{0,5},PlotStyle->RGBColor[1,0,0]]

Př. 6.a.4   K funkci y=((4x-1)/(x+2))najděte funkci inverzní, sestrojte grafy

ClearAll[f,g]
f[x_]:=((4x-1)/(x+2))

Funkci inverzní dostaneme vyjádřením x, následně záměnou x, y ve funkčním předpisu. Funkce f je prostá (je lineární lomená), inverzní funkce existuje.

a=Solve[y==f[x],x]

kk=x /.a[[1]] /.y->x

g[x_]:=((-1-2 x)/(-4+x))

f a g jsou tedy navzájem inverzní funkce. Pro názornost sestrojme grafy:

Plot[{f[x],g[x],f[g[x]]},{x,-10,10},PlotStyle->{RGBColor[1,0,0],RGBColor[0,0.7,0.2],Dashing[{0.01}]},PlotRange->{-10,10},AspectRatio->Automatic]

Určíme ještě složení obou funkcí:

f[g[x]]

Simplify[f[g[x]]]

g[f[x]]

Simplify[g[f[x]]]

b) Lineární funkce

Př. 6.b.1   Sestrojte graf funkce y=2x-1

Funkci můžeme definovat nebo graf sestrojit přímo.

Plot[2 x-1,{x,-3,3},AspectRatio->Automatic]

Př. 6.b.2    Určete funkční předpis lineární funkce procházející body K[1,1] a L[2,5]

ClearAll[a,b,x,y,bK,bL]

Do rovnice lin. fce ve tvaru y=ax+b dosadíme postupně oba body (r1, r2), vzniklá soustava (rovnice) už vrátí hodnotu koeficientů a,b v předpisu hledané funkce.

bK={1,1};
bL={2,5};

r1=a*x+b==y /. {x->bK[[1]],y->bK[[2]]}

r2=a*x+b==y /. {x->bL[[1]],y->bL[[2]]}

rovnice=Solve[{r1,r2},{a,b}]

koefa=a /.rovnice[[1]]

koefb=b /.rovnice[[1]]

primka=koefa*x+koefb

Plot[primka,{x,-2,2},AspectRatio->Automatic]

Př. 6.b.3   Sestrojte graf funkce f dané takto:
      f(x)=x pro x≥0; f(x)=-x pro x<0

f[x_]:=x /;x≥0
f[x_]:=-x /; x<0

Plot[f[x],{x,-3,3},PlotStyle->RGBColor[0.5,0,1]]

Jedná se o funkci y = |x|.

Př. 6.b.4    Sestrojte graf funkce f:y=|x-1|-2

Plot[Abs[x-1]-2,{x,-4,4}]

Př. 6.b.5 Sestrojte graf funkce f:y=||x-2 |x+3||-8|+1

Abs[Abs[x-2*Abs[x+3]]-8]+1 //TraditionalForm

Clear[f]
f[x_]:=Abs[Abs[x-2 Abs[x+3]]-8]+1
Plot[f[x],{x,-6,5},PlotRange->{-1,8},PlotStyle->RGBColor[0.5,0,1]]

c) Kvadratická funkce

Př. 6.c.1    Sestrojte graf funkce f:y=(x^2)-x-6

Plot[(x^2)-x-6,{x,-4,5},PlotStyle->RGBColor[0.5,0,1]]

Př. 6.c.2    Graf kvadratické funkce prochází body [1,-2],[2,4],[3,4]. Určete její předpis, sestrojte graf.

Je několik metod, jak tuto úlohu řešit. V tomto příkladě si předvedeme řešení pomocí příkazu Mathematicy Fit - proloží křivku daného stupně (zde 2. - kvadratická funkce) danými body.

Clear[bA,bB,bC,data,parabola]

bA={1,-2};bB={2,4};bC={3,4};

data={bA,bB,bC}

parabola=Fit[data,{1,x,(x^2)},x]

Plot[parabola,{x,-2,6},PlotRange->{-16,5}]

Př. 6.c.3    Graf kvadratické funkce prochází body [1,-2],[2,4],[3,4]. Určete její předpis, sestrojte graf.

Jiné řešení předchozí úlohy. Do funkčního předpisu kvadratické funkce y=a*(x^2)+b*x+c postupně dosadíme souřadnice daných bodů, řešíme vzniklé rovnice.

Clear[a,b,c,bA,bB,bC,r1,r2,r3,rovnice,parabola,koefa,koefb,koefc,y]

bA={1,-2};bB={2,4};bC={3,4};

r1=y==a*(x^2)+b*x+c /.{x->bA[[1]],y->bA[[2]]}

r2=y==a*(x^2)+b*x+c /.{x->bB[[1]],y->bB[[2]]}

r3=y==a*(x^2)+b*x+c /.{x->bC[[1]],y->bC[[2]]}

rovnice=Solve[{r1,r2,r3},{a,b,c}]

koefa=a /.rovnice[[1]]
koefb=b /.rovnice[[1]]
koefc=c /.rovnice[[1]]

parabola=koefa*(x^2)+koefb*x+koefc

Plot[parabola,{x,-2,6},PlotRange->{-16,5}]

Celou úlohu můžeme ještě zjednodušit, zautomatizovat. Použijeme příkaz Table, abychom nemuseli vše, co se týká postupně všech tří bodů, opisovat. Zadání zůstává stejné.

bA={1,-2};bB={2,4};bC={3,4};
par=y==a*(x^2)+b*x+c;
body={bA,bB,bC};

rovniceparaboly=Table[par /. {x->body[[i,1]],y->body[[i,2]]},{i,1,3}]

vysl=Solve[rovniceparaboly,{a,b,c}]

par /.vysl[[1]]

Výsledek samozřejmě musí být stejný ☺

Př. 6.c.4   Sestrojte graf kvadratické funkce y=|(x^2)+2 x-3|

Abs[(x^2)+2x-3] //TraditionalForm

Clear[f]

f[x_]:=Abs[(x^2)+2x-3]

Plot[f[x],{x,-5,5},PlotStyle->RGBColor[0.5,0,1]]

Př. 6.c.5   Sestrojte graf kvadratické funkce y=|(x^2)+2| x|-3|

Clear[f]

f[x_]:=\[LeftBracketingBar](x^2)+2\[LeftBracketingBar] x\[RightBracketingBar]-3\[RightBracketingBar]

Plot[f[x],{x,-3,3},PlotStyle->RGBColor[0.5,0,1]]

Př. 6.c.6 Určete vrchol grafu kvadratické funkce y=2(x^2)-12x+14, sestrojte graf

rce=2(x^2)-12x+14

Pomocí příkazu Coefficient určíme koeficienty a, b, c v předpisu y=(ax^2)+bx+c. Pak vypočítáme souřadnice vrcholu.

a=Coefficient[rce,(x^2)]
b=Coefficient[rce,x]
c=Coefficient[rce,x,0]

V={((-b)/(2a)),((4a*c-(b^2))/(4a))}

Vrchol=Graphics[{PointSize[0.02],Point[V]}];

osa=Graphics[Line[{{V[[1]],0},V}]];

parabola=a(((x-V[[1]]))^2)+V[[2]]

gr=Plot[parabola,{x,-6,6},PlotRange->{-6,10},PlotStyle->RGBColor[1,0,0]];

Show[gr,Vrchol,osa]

d) Mocninná a polynomická funkce

Př.6.d.1   Sestrojte grafy funkcí f(x)=(x^n) pro přirozená n ≤8.

Můžeme postupovat různými způsoby s různým výsledkem:

1. Pomocí Plot vloženého do Table. Grafy se zobrazí každý zvlášť.

Table[Plot[(x^n),{x,-3,3},PlotRange->{-6,6},PlotStyle->RGBColor[0.7,0,0.7]],{n,1,8}]

2. obráceně, tedy pomocí Table vloženého do Plot. Nutné je použít Evaluate - Plot sám funkční předpis nevyhodnotí. Výhodou je, že všechny grafy jsou vidět najednou.

Plot[Evaluate[Table[(x^n),{n,1,8}]],{x,-3,3},PlotRange->{-6,6},PlotStyle->Hue[0.02]]

3. úpravou předchozího docílíme změny barvy pro každý graf.

n=8;
moc=Table[(x^k),{k,n}]
barva=Table[Hue[(k/n)],{k,n}];
Plot[Evaluate[moc],{x,-1,1},PlotRange->All,PlotStyle->barva]

Př. 6.d.2    Sestrojte graf funkce y=(x^(1/3))(((x-2))^(2/3))(((x+1))^(4/3)) pro xϵ⟨-2,3⟩

Problém tohoto příkladu je (x^(1/3)). Ta je definována "jen" pro x≥0, nic však nebrání tomu, abychom n-tou odmocninu dodefinovali pro záporná x takto: (x^(1/n))=-((|x|)^(1/n)).

p1=Plot[(x^(1/3)) (((x-2))^(2/3)) (((x+1))^(4/3)),{x,-2,3}]

Mathematica, jak je vidět, s tímto dodefinováním lichých odmocnin nepočítá. Např. rovnice (x^3)+1==0 má 3 kořeny:

s1=Solve[(x^3)+1==0]

N[s1]

N[(-1)^(1/3)]

Pomůže nám doplněk Mathematicy RealOnly v adresáři Miscellaneous:

<<Miscellaneous`RealOnly`

p2=Plot[(x^(1/3)) (((x-2))^(2/3)) (((x+1))^(4/3)),{x,-2,3}]

Show[GraphicsRow[{p1,p2}]]

Vidíme oba grafy - původní i s  "dodefinovanou" třetí odmocninou.

e) Lineární lomená funkce

Př. 6.e.1   Sestrojte graf funkce f:y=((x-3)/(x-2))

Plot[((x-3)/(x-2)),{x,-4,8},PlotRange->{-4,8}]

Př. 6.e.2   Sestrojte graf funkce f: y= ((|x-1|)/(x- 2)).

Graf sestrojíme postupnými úpravami.

p1=Plot[((x-1)/(x-2)),{x,-3,4},PlotRange->{-4,4},PlotStyle->RGBColor[0,1,0]]

p2=Plot[((Abs[x-1])/(x-2)),{x,-3,4},PlotRange->{-4,4},PlotStyle->RGBColor[1,0,1]]

Show[p1,p2]

6.e.3   Sestrojte graf funkce f: y= 2-((|x+1|)/(x+12))

Sestrojíme postupnými úpravami:

Plot[((x+3)/(x+4)),{x,-6,2},PlotRange->{-3,5}]

q1=Plot[((x+2)/(x+1)),{x,-6,2},PlotRange->{-3,5},PlotStyle->RGBColor[1,0,0]]

q2=Plot[Abs[((x+2)/(x+1))],{x,-6,2},PlotRange->{-3,5},PlotStyle->{RGBColor[0,1,0],Thickness[0.007]}]

q3=Plot[-Abs[((x+2)/(x+1))],{x,-6,2},PlotRange->{-3,5},PlotStyle->{RGBColor[0,1,1],Thickness[0.01]}]

q4=Plot[2-Abs[((x+2)/(x+1))],{x,-6,2},PlotRange->{-3,5},PlotStyle->{RGBColor[0,0,1],Thickness[0.012]}]

Show[q1,q2,q3,q4]

Výsledný graf je modrý.

f) Exponenciální a logaritmická funkce, rovnice

Př. 6.f.1    Sestrojte graf funkce f:y=(2^x)

Plot[(2^x),{x,-4,3},PlotStyle->Hue[0.4]]

Př.6.f.2    Sestrojte graf funkcef:y=(2^x)-4. Určete průsečíky grafu s osami souřadnic

Clear[f]

f[x_]:=(2^x)-4

Plot[f[x],{x,-4,3},PlotStyle->Hue[0.04]]

Solve[f[x]==0,x][[1]]

Víme, že exponenciální fce je prostá, proto se nemusíme bát "výstrahy" Mathematicy.

f[0]

Př. 6.f.3    Sestrojte grafy funkcí f:y=(2^(x+1))-4 ,g:y=(2^(|x+1|))-4,h:y=(2^(|x|+1))-4,k:y=|(2^(|x+1|))-4|

Clear[f,g,h,k]

f[x_]:=(2^(x+1))-4
g[x_]:=(2^(Abs[x+1]))-4
h[x_]:=(2^(Abs[x]+1))-4
k[x_]:=Abs[(2^(Abs[x+1]))-4]

gr1=Plot[f[x],{x,-4,4},PlotRange->{-4,10}];
gr2=Plot[g[x],{x,-4,4},PlotRange->{-4,10}];
gr3=Plot[h[x],{x,-4,4},PlotRange->{-4,10}];
gr4=Plot[k[x],{x,-4,4},PlotRange->{-4,10}];

Show[GraphicsGrid[{{gr1,gr2},{gr3,gr4}}]]

Př. 6.f.4   Vypočtěte  přirozené logaritmy čísel e,(e^4), 3e

Log[E]
Log[(E^4)]
Log[3E]

Poslední výraz upravíme :

Simplify[Log[3E]]

Př. 6.f.5   Sestrojte grafy funkcí f:y=(Subscript[log, 2])x, g:y=(Subscript[log, 1/2])x

Plot[{Log[2,x],Log[(1/2),x]},{x,0.0001,5},PlotRange->{{0,5},{-2.5,2.5}},AspectRatio->1]

Př. 6.f.5    Řešte rovnici (1/4)*(2^x)+(1/2)*(4^x)=9 v R

Solve[(1/4)*(2^x)+(1/2)*(4^x)==9,x]

Funkce na levé straně rovnice je prostá, proto je 2 jediným kořenem.

Př. 6.f.6    Řešte rovnici 2*((((1/2)))^((x^2)+(8/3)x))=(8/(4^(1/3))) v R

Solve[2*((((1/2)))^((x^2)+(8/3)x))==(8/(4^(1/3))),x]

Vznikly problémy: kořeny rovnice jsou v pro nás nepřehledném tvaru, nechme je vyjádřit numericky. Dále nevíme, zda jsou to všechny kořeny dané rovnice. Proto sestrojíme graf, který nám pomůže tento problém rozřešit.

Solve[2*((((1/2)))^((x^2)+(8/3)x))==(8/(4^(1/3))),x] //N

Plot[{2* ((((1/2)))^((x^2)+((8 x)/3))),(8/(4^(1/3)))},{x,-4,4}]

Oba nalezené kořeny zřejmě vyhovují, žádné další kořeny rovnice nemá.

7. Goniometrie

Př. 7.1    Vypočtěte: sin (π/6), cos (-(π/4)),tg π

{Sin[(π/6)],Cos[-(π/4)],Tan[π]}

Př. 7.2    Vypočtěte tg 1000

Myšleno i psáno je samozřejmě 1000 radiánů.

Tan[1000]

Lépe rovnou numericky, zjednodušení není možné.

Tan[1000] //N

Př. 7.3   Umí Mathematica vzorec pro sin 2x?

Sin[2x]

Simplify[Sin[2x]]

Expand[Sin[2x]]

TrigExpand[Sin[2x]]

Pomohl až poslední příkaz. V goniometrii je příkazů pro úpravy výrazů víc. Podívejme se na jejich přehled:

?Trig*

Př. 7.4    Mathematica neupraví automaticky vzorec pro (sin^2)x+(cos^2)x.  Přesvědčte se.

((Cos[x])^2)+((Sin[x])^2)

Musíme takto:

Simplify[((Cos[x])^2)+((Sin[x])^2)]

Př. 7.5   Otestujte vzorec pro cos 2x, cos 3x

TrigExpand[Cos[2x]]

Table[{k,TrigExpand[Cos[k*x]]},{k,2,5}] //TableForm

Nemusíme jen pro "2x", "3x". Možnosti příkazu Table a Mathematicy jsou větší.

Př. 7.6    Sestrojte graf funkce sin x pro x ϵ⟨-π,2π⟩

popis=Table[x,{x,-π,2π,π/4}]

Tyto hodnoty použijeme pro popis osy x.

Plot[Sin[x],{x,-π,2 π},AxesLabel->{"x","y"},AspectRatio->Automatic,PlotStyle->{Thickness[0.005],Hue[0.8`]},Ticks->{popis,Automatic}]

Použili jsme parametry u příkazu Plot. Ticks zajišťuje popis hodnot na osách, ty jsme vygenerovali příkazem Table. Další parametry jsou zřejmé, vypsat všechny dostupné parametry lze následujícím příkazem:

Options[Plot]

Př. 7. 7    Sestrojte graf funkce f: y =||cos(x)|-(1/2)|

Clear[f]

f[x_]:=Abs[Abs[Cos[x]]-(1/2)]

f[x]

f[x] //TraditionalForm

Plot[f[x],{x,-π,2 π},PlotRange->{-1,2},AxesLabel->{"x","y"},AspectRatio->Automatic,PlotStyle->{Hue[0.8]},Ticks->{popis,Automatic}]

Př. 7.8   Sestrojte graf funkce f: y=sin x +|sin x|

Plot[Sin[x]+Abs[Sin[x]],{x,-π,3 π},PlotRange->{-1,3},AxesLabel->{"x","y"},AspectRatio->Automatic,PlotStyle->{Hue[0.8]},Ticks->{popis,Automatic}]

Př. 7.9    Sestrojte grafy funkcí tg x, cotg x do jednoho obrázku

Plot[{Tan[x],Cot[x]},{x,-π,2 π},PlotRange->{-2 π,2 π},Ticks->{popis,Automatic},AspectRatio->1,PlotStyle->{Hue[0.8],Hue[0.4]}]

Př. 7.10-13   Sestrojte grafy goniometrických funkcí a funkcí k nim inverzních vždy do jednoho obrázku

p1=Plot[ArcSin[x],{x,-1,1}];

p2=Plot[Sin[x],{x,-(π/2),(π/2)},PlotStyle->RGBColor[1,0,0]];
px=Plot[x,{x,-(π/2),(π/2)},PlotStyle->Dashing[{0.01}]];

Show[p1,p2,px,PlotRange->{{-(π/2),(π/2)},{-(π/2),(π/2)}},AspectRatio->1,Ticks->{popis,Automatic}]

p1=Plot[ArcCos[x],{x,-1,1}];
p2=Plot[Cos[x],{x,0,π},PlotStyle->RGBColor[1,0,0]];
px=Plot[x,{x,-1,π},PlotStyle->Dashing[{0.01}]];
Show[p1,p2,px,PlotRange->{{-1,π},{-1,π}},AspectRatio->1,Ticks->{popis,Automatic}]

Popis osy x byl definován v př. 7.6

p1=Plot[ArcTan[x],{x,-2 π,2 π}];
p2=Plot[Tan[x],{x,-(π/2)+0.001,(π/2)-0.001},PlotStyle->RGBColor[1,0,0]];
px=Plot[{x,-(π/2),(π/2)},{x,-2 π,2 π},PlotStyle->Dashing[{0.01}]];
Show[p1,p2,px,PlotRange->{{-2 π,2 π},{-2 π,2 π}},AspectRatio->1]

Př. 7.14   Upravte a zjednodušte výraz (1-cos(x)) (cos(x)+1)

(1+Cos[x])(1-Cos[x])

Použijeme postupně Expand a Factor v jejich goniometrické verzi.

TrigExpand[(1+Cos[x])(1-Cos[x])] //TrigFactor

Př. 7.15   Řešte rovnici: cos(2 x)+cos(x) sin(x)==1

Solve[Cos[2x]+Sin[x]*Cos[x]==1,x]

Doporučeno je použití Reduce:

Reduce[Cos[2x]+Sin[x]*Cos[x]==1,x]

A kořeny jsou spočítané, byť pro nás v poněkud neobvyklém tvaru. Přesvědčte se ručním výpočtem o jejich správnosti. Rovnici nejprve upravíme rozkladem cos 2x, 1=((Cos[x])^2)+((Sin[x])^2).Pravou stranu položíme rovnou 0, levou rozložíme na součin (jako Mathematica ☺ )

TrigFactor[Cos[2x]+Sin[x]*Cos[x]-1]

Tedy buď je sin x = 0 => x= kπ pro celá  k
nebo je cos x - 2sin x = 0 =>tg x = (1/2) =>x = arctg (1/2)+kπ pro celá k
Už tedy zbývá jen zjistit, zda  arctg (1/2) = -2 ArcTan[2-(Sqrt[5])], což dle následujícího platí.

{ArcTan [(1/2)] ,-2 ArcTan[2-(Sqrt[5])]} //N

8. Komplexní čísla

K dispozici je v Mathematice komplexní jednotka i. Lze ji psát jako velké I nebo vybrat z palety BasicMathInput, případně zkratkou Esc i i Esc.
Základní příkazy pro práci s komplexními čísly jsou Complex, Re, Im,Abs, Arg, Conjugate.

Př. 8.1   Vypočítejte: 2+i+3(7-i), ((3i+1)/(2+i))

2+I+3(7-I)
((3I+1)/(2+I))

Př. 8.2   Vypočítejte:((5i-1)/(2-((3+i)/(2+i)))),  (((i/(2-i))+(1/i))/(1+(1/(2i+1))))

((5I-1)/(2-((3+I)/(2+I))))
 (((I/(2-I))+(1/I))/(1+(1/(2I+1))))

Př. 8.3   Vypočítejte výraz (((1+i))^n) pro celá n, -3≤n≤4

Table [{n,(((1+I))^n)},{n,-3,4}] //TableForm

Př. 8.4    Vypočítejte (OverBar[2+i])+1-(OverBar[i]), |((4-2i)/(3+i))|

Conjugate[2+I]+1-Conjugate[I] 
Abs[((4-2I)/(3+I))]

Př. 8.5 Převeďte na algebraický tvar:
 z=(Sqrt[2])*(Cos[(105/4)π]+i*Sin[(105/4)π])

(Sqrt[2])*(Cos[(105/4)π]+I*Sin[(105/4)π])

Př. 8.6     Řešte rovnici : (x^3)+(x^2)+x+1=0

Solve[ (x^3)+(x^2)+x+1==0,x]

Př. 8.7  Určete všechny komplexní odmocniny z čísla -4

(Sqrt[-4])

Vidíme, že výsledkem operace odmocnina je v Mathematice jediné číslo. Můžeme ale vyřešit  rovnici:

Solve[(z^2)==-4,z]

A zde už jsou výsledkem obě komplexní odmocniny.

Př. 8.8   Řešte binomickou rovnici v C: (x^4)+1=0

Solve[ (x^4)+1==0,x]

Tento výsledek nás asi mnoho neuspokojuje. Můžeme ho ale nechat automaticky přepsat do algebraického tvaru vyjádřením, ve kterém se vyskytuje příkaz ComplexExpand, opakované  nahrazení:

v=Solve[(x^4)+1==0,x]/.(a_->b_):>(a->ComplexExpand[b])

Nyní už vidíme kořeny rovnice v "téměř" algebraickém tvaru.
Pokusme se dále zobrazit všechny kořeny této rovnice v Gaussově rovině :

koreny=Table[x /.v[[i]],{i,1,Length[v]}]

listik=Table[{Re[koreny[[i]]],Im[koreny[[i]]]},{i,1,Length[v]}]

gr1=ListPlot[listik,AspectRatio->Automatic,PlotStyle->PointSize[0.03]];

Show[gr1,Graphics[{Circle[{0,0},Abs[x /.v[[1]]]]},AspectRatio->Automatic],PlotRange->All]

Re[koren1]
Im[koren1]

Arg[koren1]
Abs[koren1]

Absolutní hodnota všech těchto kořenů je 1 - jedná se o komplexní jednotky. Vytiskněmě si argumenty všech kořenů. Tiskne se vždy číslo kořene, argument a absolutní hodnota kořene.

Table[{n,Arg[x /.v[[n]]],Abs[x /.v[[n]]]},{n,1,Length[v]}]

Př. 8.9    Řešte rovnici v C: (x^7)=128

Solve[(x^7)==128,x]/.(a_->b_):>(a->ComplexExpand[b])

Získali jsme všech 7 kořenů.
Zobrazme je všechny způsobem z minulého příkladu:

v=Solve[(x^7)==128,x]/.(a_->b_):>(a->ComplexExpand[b])
koreny=Table[x /.v[[i]],{i,1,Length[v]}];
listik=Table[{Re[koreny[[i]]],Im[koreny[[i]]]},{i,1,Length[v]}]
gr1=ListPlot[listik,AspectRatio->Automatic,PlotStyle->PointSize[0.03]];
Show[gr1,Graphics[{Circle[{0,0},Abs[x /.v[[1]]]]},AspectRatio->Automatic],PlotRange->All]

Př. 8.10    Řešte rovnici v C:(x^5)=-32

v=Solve[(x^5)==-32,x]/.(a_->b_):>(a->ComplexExpand[b])

Doplníme podle př. 8.8:

Table[{n,Arg[x /.v[[n]]],Abs[x /.v[[n]]]},{n,1,Length[v]}] //N

Př. 8.11    Řešte v C:Abs[z]=1+2i+z

Reduce[Abs[z]==1+2I+z,z]

Př.  8.12  Řešte  v  C  kvadratické rovnice:
5(x^2)-2x+1=0
(7+i)(x^2)-5ix-1=0

Solve[5(x^2)-2x+1==0,x]

Solve[(7+I)(x^2)-5I*x-1==0,x]

Pozn. Pozor - mezi i, x v zápisu druhé rovnice musí být mezera nebo znak násobení.

9. Posloupnosti

Př. 9.1    Zapište prvních 10 členů posloupnosti, sestrojte graf: (Subscript[a, n])=n*(n-1)

posl=Table[n*(n-1),{n,10}]

ListPlot[posl,AxesLabel->{x,y},AxesOrigin->{0,0},PlotStyle->{Hue[0.6],PointSize[0.02]}]

Použili jsme  příkaz Table, kterým jsme generovali členy posloupnosti. Graf je sestrojen příkazem ListPlot, jeho možné parametry jsou uvedeny níže.

Options[ListPlot]

Př. 9.2    Zapište prvních 10 členů posloupnosti, sestrojte graf: (Subscript[a, n])=n*(((-1))^n)

posl=Table[n*(((-1))^n),{n,10}]

grpos=ListPlot[posl,AxesLabel->{"n","(Subscript[a, n])"},AxesOrigin->{0,0},PlotStyle->{Hue[0.6],PointSize[0.02]}]

Můžeme se přesvědčit, že body posloupnosti leží na dvou polopřímkách:

cara1=Graphics[Line[{{0,0},{10,10}}]];

cara2=Graphics[Line[{{0,0},{10,-10}}]];

Show[grpos,cara1,cara2]

Př. 9.3   Vypočtěte limity posloupností:
(Subscript[((5/n)), n=1]^∞) , (Subscript[((((-1))^n)*(1/(3n))), n=1]^∞) , (Subscript[((((n^2)+3n-7)/(2(n^2)-2n-5))), n=1]^∞)

Limit[(5/n),n->∞]
Limit[(((-1))^n)*(1/(3n)),n->∞]
Limit[(((n^2)+3n-7)/(2(n^2)-2n-5)),n->∞]

Můžeme - pro větší názornost- vypsat členy, sestrojit grafy. Např. pro druhou z daných posloupností:

pos2=Table[(((-1))^n)*(1/(3n)),{n,10,1000,10}]

ListPlot[pos2,AxesLabel->{"n","(Subscript[a, n])"},AxesOrigin->{0,0},PlotStyle->{Hue[0.6],PointSize[0.01]}]

Př. 9.4    Napište prvních 30 členů Fibonacciho posloupnosti

Table[Fibonacci[n],{n,30}]

Př. 9.5   Aritmetická posloupnost je dána prvním členem, diferencí: 5,2. Napište vzorec pro n-tý člen.

RSolve[{a[n+1]==a[n]+2,a[1]==5},a[n],n]

10. Kombinatorika

Př. 10.1   Vypočtěte faktoriál čísel 1...25

Table[n!, {n,1,25}]

Přehledněji:

TableForm[Table[{n,n!}, {n,1,25}],TableAlignments->Right]

Př. 10.2    Vypočtěte (({{8}, {3}})), (({{x}, {2}}))

Binomial[8,3]
Binomial[x,2]

Př. 10.3   Vytiskněte prvních 10 řádků Pascalova trojúhelníku.

TableForm[Table[Binomial[n,k],{n,0,10},{k,0,n}],TableAlignments->Right]

nebo přehledněji:

Column[Table[Binomial[k,n],{k,0,15},{n,0,k}],Center]

Př. 10.4    Řešte rovnici v N: (({{n}, {2}}))+(({{x+1}, {2}}))=25

Solve[Binomial[x,2]+Binomial[x+1,2]==25,x]

Vyhovuje kořen n=5.

Př. 10.5   Vypočítejte (((1+(Sqrt[2])))^5)

Expand[(((1+(Sqrt[2])))^5)]

Př. 10.6   Umocněte (((1+i))^7)

(((1+I))^7)

Př. 10.7   Určete, jaký koeficient je u (y^3) v binomickém rozvoji ((((y^2)+(y^(-1))))^9)

Coefficient[((((y^2)+(y^(-1))))^9),(y^3)]

11. Vektory

Oproti klasické matematice jsou vektory v Mathematice uzavřeny do složených závorek.

Př. 11.1  Napište souřadnice vektoru u=AB. A[2,5], B[6,-1]

A={2,5};
B={6,-1};
u=B-A

Př. 11.2   Vypočtěte velikost vektorů (3,4), (1,1,1)

Norm[{3,4}]
Norm[{1,1,1}]

Př. 11.3   Vypočtěte součet, skalární součin vektorů u=(3,2) a v=(5,-1)

u={3,2};
v={5,-1};
u+v
u.v
Dot[u,v]

Dot[u,v] a u.v jsou zápisy pro skalární součin vektorů. Nikoliv však uv nebo u v:

uv
u v

Operace u v totiž vynásobí vektory u, v po souřadnicích.

Př. 11.4   Určete velikost úhlu vektorů u=(6,7) a v=(-1,3)

u={6,7}
v={-1,3}

ArcCos[((Dot[u,v])/(Norm[u]*Norm[v]))] //N

Výsledek je (pochopitelně) v obloukové úhlové míře. Ve stupních:

ArcCos[((Dot[u,v])/(Norm[u]*Norm[v]))] *180/π

ArcCos[((Dot[u,v])/(Norm[u]*Norm[v]))] *180/π //N

Př. 11.5    Vypočítejte vektorový součin vektorů u=(2,3,-5), v=(1,6,3)

u={2,3,-5};
v={1,6,3};
Cross[u,v]

Př. 11.6  Jsou dány body K[4,0,1], L[2,2,5],M[-3,3,-1]. Určete, zda tyto body mohou tvořit vrcholy trojúhelníku. Pokud ano, vypočtěte jeho obsah

K={4,0,1};
L={2,2,5};
M={-3,3,-1};

u=L-K
v=M-K

Vidíme, že body K,L,M tvoří trojúhelník. Obsah:

obsah=(1/2)*Norm[Cross[u,v]]

12. Analytická geometrie

Př. 12.1   Napište rovnici přímky p, určené bodem A a vektorem u, v parametrickém tvaru.

A={4,1};
u={3,1};
p=A+t*u

Př. 12.2   Určete střed úsečky AB. A[2,2], B[8,-3]

A={2,2};
B={8,-3};
S=((A+B)/2)

Př. 12.3   Určete, zda bod A leží na přímce p. A=[3,-1], p:2x+3y-1=0

A={3,-1}
p=2x+3y-1

p /.{x->A[[1]],y->A[[2]]}

Tedy  bod A neleží na přímce p.

Př. 12.4   Bodem A veďte rovnoběžku s přímkou p.A=[3,-1], p:2x+3y-1=0

pk budou koeficienty a, b v obecné rovnici přímky p. Skalární součin pk.A je dosazení souřadnic bodu A do rovnice přímky, rovnice Solve[Dot[A,pk]+c==0,c] hledá c tak, aby 2x+3y+c=0.

pk={2,3};
Solve[Dot[A,pk]+c==0,c]

Řešením je tedy přímka 2x+3y-3=0.

Př. 12.5 Přímka je určena bodem A=[3,0], vektorem v=(1,3). Napište její parametrickou a obecnou rovnici, sestrojte graf

A={3,0}; v={1,3};

primka[t_]:=A+t*v

primka[t]

Sestrojíme  graf na základě parametrické rovnice přímky:

pr=ParametricPlot[primka[t],{t,-2,6},PlotStyle->RGBColor[1,0,0]]

Graf můžeme sestrojit pro větší názornost i bodově pro různé hodnoty t:

bpr=ListPlot[Table[primka[t],{t,-2,4,0.5}],PlotStyle->PointSize[0.02]]

A porovnání obou grafů:

Show[bpr,pr]

Nejjednodušší cesta k obecné rovnici přímky:

n={v[[2]],-v[[1]]};
Dot[n,{x,y}]-Dot[n,A]==0

Př. 12.6   Určete obecnou rovnici roviny dané 3 body: A={2,3,-1};     B={3,5,2};  C={-2,4,4}

bA={2,3,-1};
bB={3,5,2};
bC={-2,4,4};

r1=x+b*y+c*z+d ==0/. {x->bA[[1]],y->bA[[2]],z->bA[[3]]}
r2=x+b*y+c*z+d ==0/. {x->bB[[1]],y->bB[[2]],z->bB[[3]]}
r3=x+b*y+c*z+d ==0/. {x->bC[[1]],y->bC[[2]],z->bC[[3]]}

koef=Solve[{r1,r2,r3},{b,c,d}][[1]]

rovina=x+b*y+c*z+d==0 /.koef

Zobrazme si rovnici roviny obvyklým způsobem:

x+b*y+c*z+d==0 /.koef //TraditionalForm

gr=Solve[rovina,z][[1]]

rov=z/.gr

Plot3D[rov,{x,-5,5},{y,-5,5}]

Př. 12. 7     Napište funkci, která vypočítá  vzdálenost dvou mimoběžek daných bodem a vektorem.

Nechť jsou dány takto: př. p bodem A, vektorem u, př. q bodem B, vektorem v.
Pak lze jejich vzdálenost zapsat jako ((|(OverVector[AB])  .  (u ×v)|)/(|u ×v|)).   Tento vzorec přepíšeme do Mathematicy, ověříme jeho platnost.

d[A_,B_,u_,v_]:=((Abs[Dot[(B-A),Cross[u,v]]])/(Norm[Cross[u,v]]))

A={1,0,0};
u={0,1,0};
B={0,0,1};
v={1,1,0};

d[A,B,u,v]

13. Kuželosečky

Př. 13.1    Sestrojte graf hyperboly (x^2)-((((y+3))^2)/4)=1 a jejích asymptot

hyperbola=(x^2)-((((y+3))^2)/4)==1;

as1=-2 x-3;
as2=2 x-3;
gras=Plot[{as1,as2},{x,-4,4},AspectRatio->Automatic];

grh=ContourPlot[Evaluate[hyperbola],{x,-4,4},{y,-10,10},Axes->True];

Show[gras,grh,PlotRange->All]

Př. 13.2   Opište kružnici trojúhelníku ABC. A[-6,5], B[1,-2], C[4,1]

bA={-6,5};
bB={1,-2};
bC={4,1};

kruznice=(((x-m))^2)+(((y-n))^2)-(r^2);

r1=kruznice==0 /.{x->bA[[1]],y->bA[[2]]}

r2=kruznice==0 /.{x->bB[[1]],y->bB[[2]]}

r3=kruznice==0 /.{x->bC[[1]],y->bC[[2]]}

Solve[{r1,r2,r3},{m,n,r}]

Vyhovuje pochopitelně pouze řešení s kladným poloměrem, tedy S[-1,3],r=(Sqrt[29.])

Př. 13.3    Určete průsečík přímky y=-2x+3 s parabolou y=(x-5)(x+2)

parabola=(x-5)*(x+2);

primka=-2 x+3;
p1=Plot[{parabola,primka},{x,-5,6},PlotStyle->{RGBColor[1,0,0],RGBColor[0,0,1]}]

reseni=Solve[primka==parabola,x]

dosadzax1=reseni[[1]];
dosadzax2=reseni[[2]];

prusecik1={x,primka} /.dosadzax1        (* prusecik   *)
prusecik2={x,primka} /.dosadzax2

A  graficky znázorníme :

ordinala1=Graphics[Line[{{prusecik1[[1]],0},prusecik1}]];

bod1=Graphics[{PointSize[0.02],Point[prusecik1]}];

ordinala2=Graphics[Line[{{prusecik2[[1]],0},prusecik2}]];

bod2=Graphics[{PointSize[0.02],Point[prusecik2]}];

Show[p1,ordinala1,bod1,bod2,ordinala2]

Př. 13.4    Je dána kružnice k:(x^2)+(y^2)+4x-2y = 0, bod M[0,4] vně kružnice. Sestrojte tečny z bodu M ke kružnici k

kr=(x^2)+(y^2)+4x-2y;

Nejprve sestrojíme graf dané kružnice:

gr1=ContourPlot[kr==0,{x,-5,4},{y,-2,5},AspectRatio->Automatic,Axes->True]

M={0,4};

Hledáme dotykové body tečen. 1. rovnice:dotykový bod[x0,y0] leží na tečně. 2. rovnice: dotykový bod leží na kružnici.

r1=x*x0+y*y0+2*(x+x0)-(y+y0)==0 /.{x->M[[1]],y->M[[2]]}
r2=kr==0 /.{x->x0,y->y0}

dotbody=Solve[{r1,r2},{x0,y0}]

Z tohoto vyjádření už snadno "odfiltrujeme"  souřadnice dotykových bodů:

T1={x0,y0} /.dotbody[[1]]
T2={x0,y0} /.dotbody[[2]]

bod1=Graphics[{PointSize[0.03],Point[T1]}];
bod2=Graphics[{PointSize[0.03],Point[T2]}];
bod3=Graphics[{PointSize[0.03],Point[{0,4}]}];

Body a kružnici zobrazíme:

Show[gr1,bod1,bod2,bod3]

Tečny vyjádříme v parametrickém tvaru, pak zobrazíme celý výsledek příkladu.

vt1=T1-M
vt2=T2-M

t1=M+t*vt1
t2=M+t*vt2

grt1=ParametricPlot[t1,{t,-0.5,1.5},PlotStyle->RGBColor[1,0,0]];
grt2=ParametricPlot[t2,{t,-0.5,1.5},PlotStyle->RGBColor[0,0,1]];

Show[gr1,bod1,bod2,bod3,grt1,grt2]

Př. 13.5    Nalezněte střed a poloměr kružnice k: (x^2)-3x+4y+(y^2)=(39/4)

kruz=(x^2)-3x+4y+(y^2)-(39/4);

Odečteme středový tvar, pomocí koeficientů u x, y  spočteme souřadnice středu.

rovnice=kruz-((((x-x0))^2)+(((y-y0))^2)-(r^2))

upravenarovnice=Simplify[rovnice]

r1=Coefficient[upravenarovnice,x]==0

r2=Coefficient[upravenarovnice,y]==0

dosstred=Solve[{r1,r2}][[1]]

Dosazením souřadnic středu kružnice dopočítáme poloměr.

Solve[0==upravenarovnice /. dosstred]

Vyhovuje pochopitelně pouze kladný kořen.

14. Diferenciální počet a jeho aplikace

Př. 14.1   Vypočtěte limity:

Limit[((Sin[x])/x),x->0]

Limit[(x/(Sqrt[(x^2)+1])),x->-∞]

Limit[((Sin[x])/x),x->0]
Limit[(x/(Sqrt[(x^2)+1])),x->-∞]

Př. 14.2    Varovný: vypočtěte limitu funkce y=((Sqrt[2(x^2)])/x) pro x->0

Limit[((Sqrt[2(x^2)])/x),x->0]

Spočtěme "pro jistotu" jednostranné limity: limita zleva ∼Direction->1, zprava Direction->-1

Limit[((Sqrt[2(x^2)])/x),x->0,Direction->1]

Limit[((Sqrt[2(x^2)])/x),x->0,Direction->-1]

Závěr potvrzený i dalšími příklady: Mathematica počítá oboustrannou limitu stejně jako limitu zprava.

Př. 14.3    Derivujte funkci f:y=(x^5)

f[x_]:=(x^5)

D[f[x],x]

Doplníme další derivace až do 7.:

Table[D[f[x],{x,n}],{n,1,7}]

Př. 14.4   Derivujte součet, součin a podíl funkcí

Clear[f,g]

D[f[x]+g[x],x]
D[f[x]*g[x],x]
D[((f[x])/(g[x])),x]

Podíl zobrazíme lépe:

Together[D[((f[x])/(g[x])),x]]

Př. 14.5   Vypočtěte 1. a 2. derivaci funkcí sin x, cos x, tg x a funkcí k nim inverzních.

Použijeme příkaz Map. Map[f,list] aplikuje funkci f na každý prvek listu. Dále použijeme tzv. čistou funkci (pure function) jako argument derivace. Argument # v zápisu D[#,x] & počítá derivaci # podle x. Symbol &  je značka pro konec zápisu čisté funkce.

Map[D[#,x]&,{Sin[x],Cos[x],Tan[x],ArcSin[x],ArcCos[x],ArcTan[x]}]

Příkaz výše vrátil 1. derivaci funkcí. Podobně získáme 2. derivace:

Map[D[#,{x,2}]&,{Sin[x],Cos[x],Tan[x],ArcSin[x],ArcCos[x],ArcTan[x]}]

Mohli jsme, vzhledem k vlastnosti příkazu D, postupovat i jinak: uvedu jen pro 1. derivaci.

D[{Sin[x],Cos[x],Tan[x],ArcSin[x],ArcCos[x],ArcTan[x]},x]

Př. 14.6   Je dána funkce y=(x^2)*Sin[x]+Cos[x]. Víme-li, že derivace f' funkce f je definována jako f'(x)=lim((f(x+h)-f(x))/h) pro h->0, zkonstruujme pro malé h graf derivace z její definice, graf derivace pomocí Mathematicy. Oba grafy by se sobě měly blížit.

f[x_]:=(x^2)*Sin[x]+Cos[x]

Plot[{f'[x],((f[x+0.1]-f[x])/0.1)},{x,-3,3}]

Výsledek bude ještě lepší, zmenšíme-li dále h.

Plot[{f'[x],((f[x+0.01]-f[x])/0.01)},{x,-3,3}]

Př. 14.7   Vypočtěte limitu funkce f:y=(((Sqrt[1+x])-(Sqrt[1-x]))/(((1+x)^(1/3))-((1-x)^(1/3)))) pro x->0

f[x_]:=(((Sqrt[1+x])-(Sqrt[1-x]))/(((1+x)^(1/3))-((1-x)^(1/3))))

Limit[f[x],x->0]

Průběhu funkce v okolí 0 je vidět na grafu funkce f:

Plot[f[x],{x,-1,1}]

Případně ještě podrobněji:

Plot[f[x],{x,-0.1,0.1}]

Př. 14.8   Je dána funkce f:y=3(x^2)-6x*cos x. Sestrojte její graf a tečny ke grafu s dotykovými body, jejichž x-ové souřadnice jsou po řadě -2.7, -1.4, 0.9.

Clear[f];
f[x_]:=3*(x^2)-6*x*Cos[x]

Sestrojíme postupně graf funkce, grafy tečen.

graph1 = Plot[f[x], {x, -3.5, 2}, PlotStyle -> 
    {Thickness[0.01], GrayLevel[0.5]}]
line1 = Plot[f[-2.7] + f'[-2.7]*(x + 2.7), {x, -3.5, -2}];
line2 = Plot[f[-1.4] +f'[-1.4]*(x + 1.4), {x, -2, 0}];
line3 = Plot[f[0.9] + f'[0.9]*(x - 0.9), {x, 0, 2}];

Show[graph1,line1,line2,line3]

Př. 14.9   Napište obecný vzorec pro určení tečny ke grafu dané funkce v daném bodě. Ověřte na funkci y=((x^2)/2)-2, v bodě -3

t[f_,x0_]:=f'[x0]*(x-x0)+f[x0]

Vzorec pro tečnu je napsán, parametry  jsou funkce a bod.

g[x_]:=((x^2)/2)-2

t[g,3]

Plot[{g[x],t[g,3]},{x,-3,6},AspectRatio->Automatic]

Př. 14.10   Nechť f je funkce definovaná a spojitá na intervalu ⟨a,b⟩, nechť má v každém bodu tohoto intervalu vlastní derivaci. Pak existuje cϵ⟨a,b⟩ takové, že f'(c)=((f(b)-f(a))/(b-a)). 
Nalezněte hodnotu c pro potvrzení uvedené věty pro funkci f(x)=(x^2)-3x na intervalu ⟨0,(7/2)⟩.

Clear[f];
f[x_]=(x^2)-3x

f'[x]

Víme, že se jedná o kvadratickou funkci ⇒grafem bude parabola. Nalezněme x-ovou souřadnici vrcholu:

Solve[f'[x]==0,x]

Nalezněme hodnotu čísla c ze zadání úlohy:

Solve[f'[x]==(f[7/2]-f[0])/(7/2-0)]

p1=Plot[f[x],{x,-2,4},PlotStyle->RGBColor[1,0,0]];
p2=Plot[f[x],{x,0,(7/2)},PlotStyle->{RGBColor[1,0,0],Thickness[0.015]}];
p3=ListPlot[{{0,f[0]},{(7/4),f[(7/4)]},{(7/2),f[(7/2)]}},PlotStyle->PointSize[0.04]];
p4=Plot[{f'[(7/4)] (x-(7/4))+f[(7/4)],(((f[(7/2)]-f[0]) x)/((7/2)+0))},{x,-2,4},PlotStyle->{Dashing[{0.01}],Dashing[{0.02}]}];
Show[p1,p2,p3,p4,AspectRatio->Automatic]

Př. 14.11    Jaký nejdelší žebřík může být vodorovně pronešen rohem, v němž se sbíhají 2 navzájem kolmé chodby o šířkách 2m a 3m. Tloušťku žebříku zanedbejte.

Nejprve "vytvoříme" obrázek celé situace, označíme proměnné:

Clear[f];
f[x_]:=x+2

p1=Plot[x+2,{x,0,4},PlotStyle->Thickness[.01],PlotRange->{0,6}];

p2=Graphics[Line[{{1,0},{1,f[1]},{4,f[1]},{4,f[4]},{4,f[4]},{0,f[4]},{0,0},{1,0}}]];

p3=Graphics[{Text["2",{0.5,0.2}],{Text["3",{3.8,4.5}]}}];

p4=Graphics[{Dashing[{0.01,0.01}],Line[{{0,f[0]},{1,f[0]}}]}];

p5=Graphics[{Text["x",{0.9,2.35}],Text["y",{2.5,3.25}]}];

Show[p1,p2,p3,p4,p5,Axes->None]

Z podobnosti trojúhelníků je vidět rovnost (x/2)=(3/y). Tedy y=(6/x).
Napíšeme funkci pro délku žebříku:

Clear[delka]
	delka[x_]=(Sqrt[(2^2)+(x^2)])+(Sqrt[(3^2)+(y^2)])/.y->(6/x)

delka'[x]

Derivaci položíme rovnou 0:

rovder=Solve[delka'[x]==0,x]

To jsou body "podezřelé" z extrému. Vzhledem k zadání úlohy nás nezajímá záporný kořen rovnice.

rozmerx=x /. rovder[[2]]

O tom, že v bodě x=(2^(2/3)) (3^(1/3)) má funkce delka minimum, se přesvědčíme z druhé derivace:

delka''[rozmerx] //N

Kladný výsledek  delka''[rozmerx] ⇒minimum funkce, jak jsme předpokládali.

N[rozmerx]

delka[(2^(2/3)) (3^(1/3))]

delka[(2^(2/3)) (3^(1/3))]//FullSimplify

Raději necháme výsledek vyhodnotit numericky:

delka[(2^(2/3)) (3^(1/3))]//FullSimplify //N

Dostali jsme největší možnou délku žebříku. Sestrojme ještě graf funkce delka:

Plot[delka[x],{x,0,20},PlotRange->{0,20},AspectRatio->Automatic,AxesLabel->{"x","y"}]

15. Integrální počet

Př. 15.1   Vypočtěte primitivní funkce k daným funkcím:

∫(x^2)\[DifferentialD]x
∫Sin[x]\[DifferentialD]x
∫(((x^4)+2(x^2)-7)/x)\[DifferentialD]x

Lze zadat i ve tvaru:

Integrate[(((x^4)+2(x^2)-7)/x),x]

Př. 15.2  Vypočtěte primitivní funkce k daným funkcím:

Seznam={x*Log[x],(x/(Sqrt[1-(x^4)])), (((x^2)+4)/((x^3)+4x))};

Použijeme podobně jako v jiných dříve uvedených příkladech opět příkaz Map na celý seznam zadaných funkcí.

Map[Integrate[#,x]&,Seznam]

Př. 15.3   Vypočtěte integrály:

(∫_0^3)(x^2)\[DifferentialD]x
(∫_1^2)(((x^4)-1)/((x^2)+1))\[DifferentialD]x
(∫_0^1)(Sqrt[Cos[(x^2)]])\[DifferentialD]x

Vidíme, že první dva určité integrály systém Mathematica vypočítal, třetí nevyjádřil. V následujícím  příkladu si ukážeme numerické řešení i tohoto určitého integrálu.

Př. 15.4   Vypočtěte (∫_0^1)(Sqrt[Cos[(x^2)]])dx

(∫_0^1)(Sqrt[Cos[(x^2)]])\[DifferentialD]x //N

Případně:

NIntegrate[(Sqrt[Cos[(x^2)]]),{x,0,1}]

Př.15.5       Nakreslete rovinný obrazec omezený funkcemi f:y=(x^2)-2x+3, g:y=-2(x^2)+4x+3.Vypočítejte jeho obsah.

Nejprve spočítáme souřadnice průsečíků obou grafů funkcí, pak sestrojíme graf obou funkcí s vyznačením hledaného obrazce. Nakonec vypočítáme obsah obrazce.

Solve[(x^2)-2x+3==-2(x^2)+4x+3,x]

g1=Plot[{(x^2)-2x+3,-2(x^2)+4x+3},{x,-2,3}];
g2=Plot[{(x^2)-2x+3,-2(x^2)+4x+3},{x,0,2},Filling->{1->{2}}];
Show[g1,g2]

(∫_0^2)(-2(x^2)+4x+3-((x^2)-2x+3))\[DifferentialD]x

Př. 15.6    Určete hodnotu parametru a ϵ R  tak, aby graf kvadratické funkce y=(ax^2)+x  omezoval s osou x rovinný obrazec s obsahem 24(j^2).

Solve[a*(x^2)+x==0,x]

(∫_0^(-1/a))(a*(x^2)+x)\[DifferentialD]x

Solve[(1/(6 (a^2)))==24,a]

Př. 15.7    Sestrojte graf funkce f: y = 2 + sin x , -(π/2)≤x≤(π/2).  Graf této funkce a osa x omezují rovinný obrazec. Načrtněte těleso vzniklé rotací tohoto obrazce kolem osy x. Vypočítejte jeho objem.

Plot[2+Sin[x],{x,-(π/2),(π/2)},AxesLabel->{"x","y"},Filling->Axis,AxesOrigin->{0,0}]

π*(∫_(-π/2)^(π/2))(((2+Sin[x]))^2)\[DifferentialD]x

Případně, zajímá-li nás numerický výsledek, použijeme:

π*(∫_(-π/2)^(π/2))(((2+Sin[x]))^2)\[DifferentialD]x //N

Celé těleso můžeme zobrazit:

ParametricPlot3D[{x,(2+Sin[x]) Cos[t],(2+Sin[x]) Sin[t]},{x,-(π/2),(π/2)},{t,0,2 π},PlotPoints->40]

Př. 15.8.   Vypočtěte velikost plochy ohraničené grafy křivek f(x)=(x^5)-20(x^3), g(x)=30-(x^5)

Clear[f, g]
f[x_] := x^5 - 20*x^3
g[x_] := 30 - x^5
NSolve[f[x] == g[x], x]

Získali jsme 3 různé reálné (a 2 komplexní) průsečíky, vše je vidět na grafu. Použijeme parametr Filling příkazu Plot:

Plot[{f[x],g[x]},{x,-3.1`,3.3`},PlotRange->All,Filling->{1->{2}}]

Výpočet určitého integrálu provedeme dvojím způsobem:

NIntegrate[Abs[f[x] - g[x]], {x, -3.08, 3.232}]

Integrate[f[x] - g[x], {x, -3.08, -1.206}] + 
  Integrate[g[x] - f[x], {x, -1.206, 3.232}]

16. Aplikované úlohy

Př. 16.1    Narozeninový paradox (Richard von Mises 1939): určete pravděpodobnost, že ve skupině 30 lidí je alespoň jedna dvojice narozená ve stejný den v roce. Přestupný rok neuvažujeme.

Úlohu můžeme řešit klasickou matematikou, jak si ukážeme později, nejprve ji ale zkusíme řešit simulací, což nám Mathematica umožňuje. Použijeme generátor (pseudo)náhodných čísel:

RandomInteger[{1,365}]

Vygenerujeme tímto generátorem 30 náhodných dat narození jako čísel z rozsahu 1..365.

skupina:=RandomInteger[{1,365},30]

skupina

Získaná data můžeme pro lepší prohlížení setřídit.

Sort[skupina]

Pokus opakujeme 10000x, není problém i víckrát. Vznikne list data.

data=Table[skupina,{10000}];

Definujeme funkci s využitím funkcí Mathematicy. Union[sk] vynechá opakované hodnoty, ty nás zajímají.

stejnyden[sk_]:=Length[Union[sk]]<30

A teď už jen spočteme pravděpodobnost jako relativní četnost. Funkce Map aplikuje definovanou fci stejnyden na data, Count spočte, kolikrát se vrátila pravda - alespoň jedna dvojice narozená ve stejný den v roce. Výsledek zobrazíme numericky.

pst=Count[Map[stejnyden,data],True]/10000 //N

A trochu matematiky:

Přesné - matematické řešení:

jinak=1-Binomial[365,30]*30!/Power[365,30] //N

Spočteme ještě pravděpodobnosti pro počet členů skupiny od 1 do 40, výsledky zobrazíme do grafu:

jinaknp[p_]:=1-Binomial[365,p]*p!/Power[365,p]

tabulka=Table[{n,jinaknp[n]},{n,1,40}] //N

ListPlot[tabulka]

Př. 16.2   Najděte společné tečny dvou daných kružnic: (((x-2))^2)+(((y+4))^2)=4 , (((x-6))^2)+(((y-1))^2)=9 . Sestrojte příslušné grafy.

k1=(((x-2))^2)+(((y+4))^2)-4;

k2=(((x-6))^2)+(((y-1))^2)-9;

gk1=ContourPlot[k1==0,{x,-7,12},{y,-6,5},AspectRatio->Automatic,Axes->True];
gk2=ContourPlot[k2==0,{x,-7,12},{y,-6,5}];
Show[gk1,gk2]

Tečny budeme hledat ve tvaru y = kx+q. Průsečíky dostaneme řešením rovnic a, b. Následně v soustavě rovnic vysledek požadujeme, aby průsečíky pro příslušnou kružnici splývaly. Úloha má maximálně 4 řešení. Při řešení se neuvažují tečny rovnoběžné s osou y, to by bylo nutno ošetřit zvlášť.

rce1=k1==0 /.y->k*x+q

rce2=k2==0 /. y->k*x+q

a=Solve[rce1,x]

koren11=x /.a[[1]];
koren12=x /.a[[2]];

b=Solve[rce2,x]

koren21=x /.b[[1]];
koren22=x /. b[[2]];

vysledek=Solve[{koren11==koren12,koren21==koren22},{k,q}]

kt1=k /.vysledek[[1]][[2]];
qt1=q/.vysledek[[1]][[1]];
kt2=k /.vysledek[[2]][[2]];
qt2=q /.vysledek[[2]][[1]];
kt3=k /.vysledek[[3]][[2]];
qt3=q /.vysledek[[3]][[1]];
kt4=k /.vysledek[[4]][[2]];
qt4=q /.vysledek[[4]][[1]];

t1=Plot[kt1 x+qt1,{x,-5,10},PlotStyle->RGBColor[0,1,0]];
t2=Plot[kt2 x+qt2,{x,-5,10},PlotStyle->RGBColor[0,1,0]];
t3=Plot[kt3 x+qt3,{x,-5,10},PlotStyle->RGBColor[0,1,0]];
t4=Plot[kt4 x+qt4,{x,-5,10},PlotStyle->RGBColor[0,1,0]];
Show[gk1,gk2,t1,t2,t3,t4]

Př. 16.3    Je dána parabola f: y=(1/2)(x^2). Zobrazte tělesa, která vzniknou rotací křivky f kolem  obou souřadnicových os.

f[x_]:=(x^2)/2

kolemx=ParametricPlot3D[{x,f[x] Cos[t],f[x] Sin[t]},{t,0,2 π},{x,0,4},BoxRatios->{1,1,1},AxesLabel->{x,y,z}]

kolemy=ParametricPlot3D[{x Sin[t],f[x],x Cos[t]},{t,0,2 π},{x,0,4},BoxRatios->{1,1,1},AxesLabel->{x,y,z}]

Show[kolemx,kolemy]

Př. 16.4     Zobrazte v Mathematice všech 5 Platónských těles.

K řešení úlohy použijeme doplněk Graphics Polyhedra.
    Zde jsou všechny pravidelné mnohostěny:
    čtyřstěn - Tetrahedron,
    krychle - Cube,
    osmistěn - Octahedron,
   dvanáctistěn pětiúhelníkový - Dodecahedron,
   dvacetistěn trojúhelníkový - Icosahedron.
      Stačí pak už jen volat patřičné příkazy, v nápovědě k Mathematice jsou uvedeny další parametry jako např. ořezání těles ap.

Show[PolyhedronData["Tetrahedron"]]

Show[PolyhedronData["Cube"]]

Show[PolyhedronData["Octahedron"]]

Show[PolyhedronData["Dodecahedron"]]

Show[PolyhedronData["Icosahedron"]]

Př. 16.5     Je dána kulová plocha se středem v počátku soustavy souřadnic a poloměrem 1, její bod P[(1/2),(1/2),(1/(Sqrt[2]))]. Sestrojte tečnou rovinu v bodě P, výsledek zobrazte.

P:={(1/2),(1/2),(1/(Sqrt[2]))};r=1;

Vzhledem k tomu, že střed kulové plochy je v počátku soustavy souřadnic, jsou souřadnice bodu P stejné jako souřadnice vektoru (OverVector[SP]). Ten je zároveň normálovým vektorem kulové plochy v bodě dotyku, jeho souřadnice jsou proto koeficienty a, b, c v obecné rovnici tečné roviny tau.

Dot[P,{x,y,z}]/.{ x->P[[1]],y->P[[2]],z->P[[3]]}

Dosazením souřadnic bodu P do obecné rovnice tečné roviny tau vypočteme její poslední koeficient.

tau=Dot[P,{x,y,z}]-1

Solve[tau==0,z]

gr3=Plot3D[(Sqrt[2]) (1-(x/2)-(y/2)),{x,0.2,0.8},{y,0.2,0.8},PlotPoints->2]

Pro větší názornost zobrazíme jen tu polovinu kulové plochy, na níž jsou body s kladnou z-ovou souřadnicí:

g1=ParametricPlot3D[{r Cos[t],r Sin[t] Cos[u],r Sin[t] Sin[u]},{u,0,π},{t,0,π},PlotPoints->{60,30},ColorFunction->"DarkRainbow"]

Pro  větší názornost zobrazíme i normálový vektor kulové plochy v bodě P:

normvektor={(1/2)+(1/2)*t,(1/2)+(1/2)*t,(1/(Sqrt[2]))+(1/(Sqrt[2]))*t}

grvektoru=ParametricPlot3D[{(1/2)+(t/2),(1/2)+(t/2),(1/(Sqrt[2]))+(t/(Sqrt[2])),Thickness[0.015]},{t,0,0.3},ColorFunction->Automatic];

Show[g1,gr3,grvektoru,ViewPoint->{3,-1,0.5}]