Opakování z minula

1) Nakreslete graf funkce tg(x) pro -4π ≤ x ≤ 4π. 

2) Nakreslete graf fce f(x,y) = (x^2) + 2xy + 2(y^2) pro -4 ≤ x ≤ 4, -6 ≤ y ≤ 4

3) Řešte soustavu lineárních rovnic

2(Subscript[x, 1]) + 3(Subscript[x, 2]) + 4.2(Subscript[x, 3]) == 5
3(Subscript[x, 1]) + 15.2(Subscript[x, 2]) + 8.7(Subscript[x, 3]) == 80.1
4(Subscript[x, 1]) + 8.9(Subscript[x, 2]) + 17.2(Subscript[x, 3]) == 11

4) Nalezněte kořeny kvadratické rovnice

5(x^2) + 4x -27 ==0

Listy (seznamy)

Nadefinujme následující listy (seznamy):

basaPiv={Gambrinus, Plzen, Staropramen}
basaPiv2={Bernard, Svijany, Rohozec}
hromadaPiv={basaPiv, basaPiv, basaPiv2, Starobrno, Radegast}
skladPiv={hromadaPiv,basaPiv2}

Přístup k prvkům seznamu (indexace)

K jednotlivým položkám listu lze přistupovat pomocí [[]] (po programátorsku: indexy polí se píšou do dvojitých hranatých závorek)

basaPiv[[2]]

hromadaPiv[[3]]

hromadaPiv[[3,2]]

skladPiv[[1]]

skladPiv[[1,2,3]]

Funkce operující nad listy

?Flatten

Flatten[skladPiv]

Funkce generující listy

?Range

Range[3,30]
Range[3,30,6]

?Table

Table[(x^2),{x,0,10}]

Proměnné - rozšířené možnosti

Hodnotou proměnné může být nejenom číslo, ale prakticky jakýkoliv výraz či řetězec. Například:

x=5
budova=NTK

Proměnné lze proto využít například pro pojmenování složitých výrazů, například rovnic. Soustavu lineárních rovnic

2(Subscript[x, 1]) + 3(Subscript[x, 2]) + 4.2(Subscript[x, 3]) == 5
3(Subscript[x, 1]) + 15.2(Subscript[x, 2]) + 8.7(Subscript[x, 3]) == 80.1
4(Subscript[x, 1]) + 8.9(Subscript[x, 2]) + 17.2(Subscript[x, 3]) == 11

lze proto řešit buď takto:

Solve[{2(Subscript[x, 1])+3(Subscript[x, 2])+4.2(Subscript[x, 3]) ==5,3(Subscript[x, 1])+15.2(Subscript[x, 2])+8.7(Subscript[x, 3]) ==80.1,4(Subscript[x, 1])+8.9(Subscript[x, 2])+17.2(Subscript[x, 3]) ==11}]

nebo takto :

rce1 = 2(Subscript[x, 1]) + 3(Subscript[x, 2]) + 4.2(Subscript[x, 3]) == 5;
rce2 = 3(Subscript[x, 1]) + 15.2(Subscript[x, 2]) + 8.7(Subscript[x, 3]) == 80.1;
rce3 = 4(Subscript[x, 1]) + 8.9(Subscript[x, 2]) + 17.2(Subscript[x, 3]) == 11;
Solve[{rce1,rce2, rce3}]

Pravidla

ClearAll[x,y,z]

Pravidla
def={x->2, y-> 1, z->4}
moje = {x-> 5}
{x, y, z}/.moje
({x, y, z}/.moje)/.def

"->"  se napíše tak, že zadáte - následované > a pak pokračujete v psaní

Aplikace pravidel pomocí /.

{x, y, z}/.moje
({x, y, z}/.moje)/.def

Uživatelem definované funkce

Pro definování se používá dvojznak :=

mojeFce[x_] := (x^3)+2(x^2)+5x-27

Formální parametry jsou na levé straně označeny podtržítkem (x_, xx_, y_), na pravé straně podtržítko nemají. Uživatelem definovanou funkci lze následně použít jako jakoukoliv jinou funkci. 

Například:

Plot[mojeFce[r],{r,-3,3}]

Diferenciální rovnice, DSolve, NDsolve

(*převzato od Ing. M. Skrbka*)

1) Zadání: Vyřešte pohyb ideální pružiny v čase. Pružina: m=1kg, k=1, počáteční výchylka 1m. Okamžitá výchylka y, čas t. Rovnice popisující pružinu: y’’[t]+y[t]==0. Počáteční podmínky: y’[0]==0, y[0]==1.
Řešení:

(* Pružina: m=1kg, k=1, ideální pružina, DSolve *)
ClearAll["Global`*"]
v=DSolve[{y''[t]+y[t]==0,y'[0]==0, y[0]==1}, y[t],t]
vv=y[t] /. v;
Plot[vv, {t,0,20}]

2) Zadání: Vyřešte pohyb reálné pružiny (s tlumením) v čase. Pružina: m=1kg, k=1, počáteční výchylka 1m. Okamžitá výchylka y, čas t. Rovnice popisující pružinu: y’’[t]+0.5*y’[t]+y[t]==0. Počáteční podmínky: y’[0]==0, y[0]==1.

3,4) Viz předchozí, ale použijte numerické řešení pomocí funkce NDSolve.

Příklad 1a

1) Zadefinujte funkci f takovou, že f(x)=sinh((x^2)) a vytiskněte graf této funkce v argumentu  x=(Sqrt[t+1]) pro -1≤t≤1, (libovolně) popište osy a křivka nechť je silná a červená.

2) Vyřešte soustavu rovnic, výsledek dosaďte do výrazu vyr.  Hodnotu výrazu vyr po dosazení zobrazte jako desetinné číslo.

uloha={1(Subscript[x, 2])+2 (Subscript[x, 3])+(Subscript[x, 1])==3,5 (Subscript[x, 1])-3 (Subscript[x, 2])+2 (Subscript[x, 3])==-4,-21 (Subscript[x, 1])+15 (Subscript[x, 3])==3};
vyr=(Sqrt[(Subscript[x, 1])])+(Subscript[x, 2]^2)+(Subscript[x, 3]^2);

3) Vyřešte soustavu difrovnic pro soustavu počátečních podmínek, pro 0<t<40; vytiskněte graf x1[t] a x2[t] a pomocí příkazu ParametricPlot také graf x2[x1].

soustavaRovnic={x1'[t]+x2[t]==((-3)/10)*x1[t],x1[t]-x2'[t]==1};
soustavaPodminek={x1[0]==(1/2),x2[0]==0};

Příklad 1b

1) Zadefinujte funkci y takovou, že y(x)=cosh((x^2)) a vytiskněte graf této funkce v argumentu  x=(Sqrt[t+2]) pro 0≤t≤2, (libovolně) popište osy a křivka nechť je silná a modrá.

2) Vyřešte soustavu rovnic. Dále pak dosaďte jen druhé řešení (hodnota (Subscript[x, 2]) je přibližně 1.57) do výrazu vyr.

uloha={1((Subscript[x, 2])^2)+2 (Subscript[x, 3])+(Subscript[x, 1])==3,5 (Subscript[x, 1])-3 (Subscript[x, 2])+2 (Subscript[x, 3])==-4,-21 (Subscript[x, 1])+15 (Subscript[x, 3])==3};
vyr=(Subscript[x, 1])+(Subscript[x, 2]^2)+(Subscript[x, 3]^2);

3) Vyřešte soustavu difrovnic pro soustavu počátečních podmínek, pro 0 < t < 50; vytiskněte graf f[t] a g[t] a pomocí příkazu ParametricPlot také graf g[f].

soustavaRovnic={3f'[t]+2g[t]==((-E)/10)*f[t],5f[t]-g'[t]==0};
soustavaPodminek={f[0]==0,g[0]==1};

Příklad 1c

1) Zadefinujte funkci f takovou, že f(x)=cos((x^(3/2))) a  vytiskněte graf této funkce v argumentu  x=(((ln[t]))^2) pro 1≤t≤5, (libovolně) popište osy a křivka nechť je zelená (green).

2) Vyřešte soustavu rovnic, výsledek dosaďte do výrazu vyraz.

soustava={-15x+6z==0,8.2x+7y-3z==-9,8x-2y+z==1};
vyraz=2(x^3)+3y-6(z^2);

3) Vyřešte soustavu dif rovnic pro soustavu počátečních podmínek, pro 0<t<5; vytiskněte graf x1[t] a x2[t] a pomocí příkazu ParametricPlot také graf x2[x1].

soustavaRovnic={x1'[t]+x2[t]==((-3)/10)*x1[t],x1[t]-x2'[t]==1*x2[t]};
soustavaPodminek={x1[0]==-(1/2),x2[0]==0};

Příklad 1d

1) Zadefinujte funkci y takovou, že y(x)=arctg((x^(3/2))) a  vytiskněte graf této funkce v argumentu  x=cosh[t]  pro -5≤t≤5, (libovolně) popište osy a křivka nechť je žlutá (yellow).

2) Vyřešte soustavu rovnic, výsledek dosaďte do výrazu vyraz.

soustava={-15x+3y==0,8x+5y-10z==10,5x-y+z==1};
vyraz=(Sqrt[x])+2y-6(z^2);

3) Vyřešte soustavu difrovnic pro soustavu počátečních podmínek, pro 0 < t < 50; vytiskněte graf f[t] a g[t] a pomocí příkazu ParametricPlot také graf g[f].

soustavaRovnic={f'[t]+g[t]==((-1)/2)*f[t],f[t]-g'[t]==1};
soustavaPodminek={f[0]==0,g[0]==1};

Příklad 2

1) Zadefinujte funkci f takovou, že f(x)=sin((x^2))+1/(sin(x)+2) a vytiskněte derivaci této funkce v argumentu  x=(Sqrt[(t^2)+1]) pro 0≤t≤10, tedy y=f((Sqrt[(t^2)+1])), (libovolně) popište osy a křivka nechť je silná a červená.

2) Vyřešte rovnici, druhý z výsledků dosaďte do výrazu "vyraz".

rce=3*(x^2)+4*x+6==0
vyraz=(Sqrt[x])

3) Vyřešte soustavu difrovnic pro soustavu počátečních podmínek, pro 0<t<100; Vytiskněte řešení x1(t), x2(t) do jednoho grafu. Pomocí ParametricPlot vytiskněte parametrický graf x1(x2). Popište osy.

soustavaRovnic={x1'[t]-x2[t]==((-Pi)/30)*x1[t]+15,x1[t]+x2'[t]==0.5*Sin[t]};
soustavaPodminek={x1[0]==5,x2[0]==-1};
nezndif={x1[t],x2[t]};

Příklad 3

1) Zadefinujte funkci f takovou, že f(ω,σ,t) =sin(ωt)(e^(-((t^2)/(2(σ^2))))) a vytiskněte graf této funkce v argumentu  x pro -5≤x≤5, ω=2πx a σ=1.5, (libovolně) popište osy a křivka nechť je červená.

2) Vyřešte soustavu rovnic, výsledek dosaďte do výrazu vyr.

uloha={-(Subscript[x, 2])+3 (Subscript[x, 1])==3,-6 (Subscript[x, 1])+17 (Subscript[x, 2])+2 (Subscript[x, 3])==14,-21 (Subscript[x, 1])+15 (Subscript[x, 3])==3};
vyr=(Subscript[x, 1])+(Subscript[x, 2])-(Subscript[x, 3]);

3) Vyřešte soustavu difrovnic pro soustavu počátečních podmínek, pro 0<t<9π/2; vytiskněte graf x1[t] a x2[t] a popište osy.

soustavaRovnic={x1'[t]==-x2[t]-0.5*x1[t],x2'[t]==x1[t]};
soustavaPodminek={x1[0]==1,x2[0]==0}