Seznámení se systémem Mathematica 6.0

© Jaroslav Reichl, SPŠST Panská, Praha
reichl@panska.cz

Obsah

Prezentace obsahuje tato témata:

Co Mathematica umí?
Jak Mathematica funguje?
Základy práce s Mathematicou
Užitečné klávesové zkratky Mathematicy
Užitečné příkazy
Nápověda Mathematicy
1. úkol
Jak z jednoho výrazu udělat různé varianty?
Definice proměnných
2. úkol
Řešení rovnic
3. úkol
Vykreslování grafu funkce
4. úkol
Proložení funkce naměřenými daty
5. úkol

Co Mathematica umí?

Mathematica umí:

běžné výpočty

zobrazování grafů funkcí

symbolické počítání (úpravy algebraických výrazů, řešení rovnic, derivace, integrály, ...)

animované simulace (grafy goniometrických funkcí, kmitání oscilátorů, ...)

pracovat s programovými kódy v C++

...

Jakýkoliv problém z matematiky, fyziky a dalších technických předmětů dokáže Mathematica vyřešit!

Je jen nutné najít odpovídající příkazy v anglicky psané nápovědě!

Jak Mathematica funguje?

Mathematica je aplikace pracující pod systémem Windows => využívá všech jeho výhod (i nevýhod) => menu File (Save, Print, ...), Edit (Find, ...), ... je velmi podobné jako u ostatních aplikacích. Fungují i klávesové zkratky F1, Ctrl + C a Ctrl + V.

Základem je práce v tzv. NOTEBOOKu - souboru, do něhož se píší vlastní příkazy, poznámky, ... (Při uložení dostává automaticky příponu *.NB.)

Základním objektem notebooku je BUŇKA, do níž se píší příkazy; buňka může obsahovat jeden nebo více příkazů. Kvůli přehlednosti a zamezení chybám ve výpočtu je dobré do jedné buňky dávat příklazy, které zpracovávají určitý problém (např. vyřeší kvadratickou rovnici, vypíše hodnoty kořenů a v závislosti na kořenech nakreslí graf příslušné funkce). Zpočátku (než získá člověk určitou zručnost) je dobré každý příkaz psát do jedné buňky a ty potom spojit (zejména u rozsáhlejších projektů).

Požadavek na výpočet dané buňky se musí předat JÁDRU systému (tzv. KERNEL) - pomocí kláves Shift + Enter nebo NumEnter.

Pokud se vyskytne problém, není nutné restartovat celou Mathematicu - stačí restartovat KERNEL příkazem Evaluation - Quit Kernel - Local. Tím ovšem Mathematica "zapomene" všechny předchozí výpočty, byť výsledky, grafy, ... stále vidíme na obrazovce. Znovuzapnutí KERNEL se provede dalším stiskem kláves Shift + Enter nebo NumEnter.

Základy práce s Mathematicou

matematické výrazy lze psát buď do řádku a oddělovat závorkami nebo "matematicky"

(7/3 + 2/5-11/8)/(3/5+11/4)
(((7/3)+(2/5)-(11/8))/((3/5)+(11/4)))

znaky =, == a :=:
	= se používá ve smyslu přiřazení, dosazení (a = 3 + 2, a = 2* a + 1, ...)
	== se používá v zápisu rovnic, podmínek, ... ; je to "rovná se" v tom smyslu, v jakém se běžně používá (Solve[2*x + 3 == 1, x], If[diskriminat == 0, Print["Rovnice má dvojnásobný kořen."], Print["Rovnice nemá dvojnásobný kořen."]], ...)
	:= tzv. odložené přiřazení (odložená definice)
Po zadání výrazu, který chceme v Mathematice upravit nebo vyčíslit, se znak = NEPÍŠE!!!

dosazovací operátor /. - slouží k dosazení výrazu do jiného výrazu (viz práce s výrazy)

testovací operátor /; - za ním následuje test, který Mathematica provede před vyčíslením výrazu, který je před tímto operátorem (viz definice proměnných)

Mathematica používá tři druhy závorek:
	kulaté ( ) slouží k uzávorkování matematických výrazů a vyznačení preferencí při jejich výpočtech
	hranaté [ ] - píší se do nich argumenty a parametry jak předefinovaných funkcí, tak funkcí definovaných uživatelem (Abs[3*x + 5], Cos[2*x], Log[a, x], ...)
		Poznámka: Při nastavené české klávesnici je lze psát pomocí Alt + 91 a Alt + 93.
	složené { } - slouží ke "sloučení" více objektů ve vstupních parametrech funkcí 
(Plot[Sin[x], {x, 0, 2*π}], ...)
		Poznámka: Při nastavené české klávesnici je lze psát pomocí Alt + 123 a Alt + 125.

funkce, které má Mathematica předdefinované, se píší tak, že první písmeno každého slova, z něhož je název funkce složen, je velké: Sin[x], ArcSin[x], TrigExpand[Sin[2*x]], ...

funkce, které si bude definovat sám uživatel je proto vhodné psát malými písmeny, aby nedošlo k záměně

Mathematica počítá přesně (symbolicky); umí ale také počítat přibližně

Sqrt[2]
(Sqrt[2])
Sqrt[2.]
(Sqrt[2.])
(Sqrt[2])//N
N[(Sqrt[2])]
N[(Sqrt[2]),10]

názvy funkcí není nutné umět zpaměti - stačí znát první (prvních několik) písmen a použít klávesovou zkratku Ctrl + K - Mathematica nabídne seznam všech funkcí, které začínají zadanými písmeny

využít poslední spočítaný výsledek lze pomocí znaku %, předposlední pak pomocí znaku %%; lze využít i %[cislo_vystupu]

5*4 + 10
%*3
%% - 30

Pozor!!! Při výpočtech s použitím znaku % může dojít k chybám!!! Používat raději v rámci jedné buňky a nebo se používání vyhnout!!!

do NOTEBOOKU si lze dělat i poznámky - ty nejjednodušší se vytvoří pomocí (* ... *)

1+3 (*Příklad na sčítání dvou čísel*)

některé chyby, které by mohly vést ke špatným výsledkům
	nepoužívat zbytečně mezery - kde je to nutné, tam si je Mathematica dodá sama
	součin lze psát buď pomocí symbolu * nebo pomocí mezery; NEPIŠTE SOUČIN BEZ OPERÁTORU!!!
	dodržovat psaní velkých písmen (hlavně v názvech funkcí)

Některé vytvořené NOTEBOOKy mohou být datově značně velké (zejména obsahují-li obrázky, grafy, ...). Proto je vhodné (např. při posílání NOTEBOOKu mailem) výstupy, které spočítala Mathematica, vymazat. To lze provést příkazem Cell - Delete All Output. V NOTEBOOKu zůstane jen text a soubor se tím zmenší.
Pozor!!! Operace je nevratná! Všechny vymazané výstupy lze vrátit zpět postupným přepočíváním všech buněk.

Užitečné klávesové zkratky Mathematicy

Ctrl + K - zobrazí nabídku funkcí, které začínají napsanými písmeny

F1 - zobrazí nápovědu k funkci (slovu), v němž je právě kurzor; není-li kurzor na žádné předdefinované funkci, zobrazí se úvodní stránka nápovědy

Ctrl + / - zobrazí symbol pro zápis zlomku

Ctrl + 2 - zobrazí symbol pro zápis druhé odmocniny

Ctrl + 6 - zobrazí symbol pro zápis mocnin

EscpEsc - zobrazí symbol π

EsceeEsc - zobrazí symbol e (Eulerovo číslo)

EsciiEsc - zobrazí symbol i (imaginární jednotka)

EscinfEsc - zobrazí symbol ∞

EscdegEsc - zobrazí symbol °

EscintEsc - zobrazí symbol ∫

EscddEsc - zobrazí symbol d, který se využívá po označení totálního diferenciálu (resp. proměnné, podle které se integruje)

EscpwEsc - zobrazí symbol { používáný při definice funkce různými předpisy na různých intervalech (Pozor! Nejedná se o "složenou závorku"!)

Následující klávesové zkratky jsou obecně platné a v případě práce s českou klávesnicí mohou značně urychlit zápis výrazů:

Alt + 39 - zobrazí ' (tzv. apostrof), který se využívá k Mathematice k označení derivace

Alt + 60 - zobrazí <

Alt + 62 - zobrazí >

Alt + 91 - zobrazí [

Alt + 93 - zobrazí ]

Alt + 123 - zobrazí {

Alt + 125 - zobrazí }

Užitečné příkazy Mathematicy

; (za příkazem) - nezobrazí výstup daného příkazu ve výstupní buňce

ClearAll["Global`*"] - vymaže všechny globálně definované proměnné

Expand[vyraz] - umocní daný výraz

Factor[polynom] - vyjádří zadaný polynom jako součin několika činitelů

If[podminka, akce_pri_splneni_podminky, akce_pri_nesplneni_podminky] - umožňuje programový kód větvit (např. odlišit výpis řešení kvadratické rovnice v závislosti na jejím diskriminantu)

Plot[funkce[x], {x, (Subscript[x, min]), (Subscript[x, max])}] - vykreslí graf funkce na intervalu <(Subscript[x, min]); (Subscript[x, max])>; má další možnosti vykreslení nastavitelné pomocí parametrů příkazu

Simplify[vyraz] - zjednoduší zadaný výraz

Solve[leva_strana_rovnice==prava_strana_rovnice, neznama] - řeší lineární a polynomické rovnice maximálně 4. stupně
Poznámka: V zápisu rovnice jsou skutečně dva znaky = za sebou - není to přepis! Znak = je znak dosazovací, pro rovnost se používá znak ==.

Table[vyraz[i], {i, (Subscript[i, min]), (Subscript[i, max]), krok}] - vypíše tabulku "výrazů" podle zadaných parametrů

Nápověda Mathematicy

nápovědu lze zobrazit klávesou F1; podle toho, kde se aktuálně nachází kurzor, se zobrazí:
	nápověda k předdefinované funkci systému Mathematica
	úvodní stránka nápovědy, z níž je možné pomocí interaktivních odkazů přejít k nápovědě k libovolné funkci, příkazu, ...

nápověda ke všem příkazům je strukturovaná a obsahuje:
	název funkce nebo příkazu
	syntaxi zápisu - u řady funkcí je více možností zápisu
	More information - detailnější popis funkce (jak je definovaná, s jakými dalšími funkcemi souvisí, jaké má parametry, ...); tuto volbu je nutné kliknutím otevřít
	Examples - nejběžnější příklady použití dané funkce; jednotlivé příklady lze jednak měnit a pomocí kláves Shift + Enter nebo NumEnter přepočítat přímo v okně nápovědy (bez jakýchkoliv obav, že se tím nápověda pokazí) nebo je z nápovědy vykopírovat do svého NOTEBOOKu
	See also - interaktivní odkazy na funkce a příkazy, které souvisí se zobrazenou funkcí (doplňky, inverzní, ...)
	Tutorials - anglicky psané návody na práci s danou funkcí či příkazem
	More about - dodatečné informace a komentáře
	Related links - odkazy na internetové stránky firmy Wolfram

1. úkol: Začneme jednoduše ... :-)

Zapište správně do svých notebooků následující matematické výrazy a zjednodušte je:

((1+((2*b)/(a-b)))/(a-b*((b-a)/(a-b))))
(((32*((21+(Sqrt[121]))^(1/5)))^(1/6))/((Sqrt[(Sqrt[20*(Sqrt[25])])-1])+3))

Zjednodušte výraz (Sqrt[8])+(Sqrt[50])-(Sqrt[18]). Kromě symbolického zápisu udejte též jeho přibližnou číselnou hodnotu zaokrouhlenou na 2 desetinná místa.

Řešení

(Sqrt[8])+(Sqrt[50])-(Sqrt[18])
N[%,3]
Print[%%," ≐ ",%]

Zjistěte funkční hodnoty goniometrických funkcí sinus, kosinus, tangens a kotangens pro (30^∘) a (90^∘).

Řešení

Sin[30 Degree]
Cos[30 Degree]
Tan[30 Degree]
Cot[30 Degree]
Sin[90 Degree]
Cos[90 Degree]
Tan[90 Degree]
Cot[90 Degree]

Jak z jednoho výrazu udělat různé varianty?

dosazovací příkaz: výraz[x]/.x->výraz
Poznámka: Symbol -> lze psát jako - a > (při nastavené české klávesnici lze znak > psát pomocí Alt + 62.

((1+((2*b)/(a-b)))/(a-b*((b-a)/(a-b))))/.a->-2
((1+((2*b)/(a-b)))/(a-b*((b-a)/(a-b))))/.{a->25,b->1}
((1+((2*b)/(a-b)))/(a-b*((b-a)/(a-b))))/.a->2*b

tabulka: Table[vyraz[i], {i, (Subscript[i, min]), (Subscript[i, max]), krok}]
Poznámka: Pro znalce programování jde vlastně o for - cyklus s definovaným krokem.

Table[((1+((2*b)/(a-b)))/(a-b*((b-a)/(a-b)))),{a,1,10,2}]

Definice proměnných

Mathematica umožňuje definovat proměnné těmito způsoby:
	okamžité přiřazení
	odložené přiřazení

okamžité přiřazení - používá se znak = (např. x = 3; x = x + 3; ...); po přepočítání BUŇKY se do proměnné dosadí daná hodnota, Mathematica si už ale "nepamatuje", jak danou proměnnou vytvořila (podle jakého předpisu) - "pamatuje" si jen její hodnotu

odložené přiřazení - používá se znak := (např. x := 0 je-li proměnná i sudá; x := 1 je-li proměnná i lichá; ...); po přepočítání BUŇKY Mathematica neposkytne žádný výstup, protože konkrétní výstup závisí na dalších proměnných, Mathematica si v tomto případě "pamatuje", jak danou proměnnou vytvořit (podle jakého předpisu, co dosadit, ...)

následující příklad pomůže objasnit rozdíl mezi uvedenými typy přiřazení

ClearAll["Global`*"];
a=Random[] (*Do proměnné a se dosadí náhodné číslo z intervalu (0; 1).*)
b:=Random[] (*O proměnné b si Mathematica zapamatuje, že jí má vytvořit jako náhodné číslo z intervalu (0; 1).*)
Table[a,{5}]
Table[b,{5}]

ClearAll["Global`*"];
j=10
a:=Print[j," je cislo liche cislo"]/;Mod[j,2]==1 (*Definice pro lichá čísla j.*)
a:=Print[j," je cislo sude cislo"]/;Mod[j,2]==0 (*Definice pro sudá čísla j.*)
a

analogicky lze definovat i funkce

2. úkol: Úprava výrazů

Napište správně výraz ((sin(x+y)-cos(x-y)+sin(x-2*y))/(sin(x))) a upravte jej. Zjednodušte výraz pro případ, že a) y=x, b) y=-x, c) y=0, d) x=(π/3) a y=(π/4)

Řešení

ClearAll["Global`*"];
vyraz:=((Sin[x+y]-Cos[x-y]+Sin[x-y])/(Sin[x]))
vyraz/.y->x
vyraz/.y->-x
vyraz/.y->0
vyraz/.{x->(π/3),y->(π/4)}

Napište 20 různých zadání písemné práce z matematiky na téma rozklad algebraického výrazu na součin, tj. aplikace výrazů (((A±B))^2), (((A±B))^3), (A^2)-(B^2) a (A^3)±(B^3)

Řešení

Table[Print["Napište jako součin: ",Expand[(x+q)(x-p)(x+p)]],{p,{-2,-1,1,2,3}},{q,2,5}]
Print[Style["ŘEŠENÍ:",24,Red,Bold]]
Table[Print["Napište jako součin: ",Expand[(x+q)(x-p)(x+p)]," = ",(x+q)(x-p)(x+p)],{p,{-2,-1,1,2,3}},{q,2,5}]

Řešení rovnic

Mathematica umí řešit rovnice pomocí několika příkazů:

Solve[leva_strana_rovnice==prava_strana_rovnice, neznama] - řeší lineární a polynomické rovnice maximálně 4. stupně; u nepolynomiálních rovnic nebo rovnic vyšších stupňů nemusí najít (všechna) řešení
Poznámka: V zápisu rovnice jsou skutečně dva znaky = za sebou - není to přepis! Znak = je znak dosazovací, pro rovnost se používá znak ==.

NSolve[leva_strana_rovnice==prava_strana_rovnice, neznama] - numerická varianta předchozího; používá stejnou metodu řešení, ale tím, že řeší rovnice numericky, je "úspěšnější" než Solve

FindRoot[leva_strana_rovnice==prava_strana_rovnice, {x, (Subscript[x, 0])}] - najde numericky JEDINÉ řešení zadané rovnice (pomocí Newtonovy metody tečen), které je nejblíže startovacímu bodu (Subscript[x, 0])

U "problematických rovnic" je vhodné nalezená řešení ověřit pomocí vykreslení grafů funkcí, které odpovídají levé a pravé straně zadané rovnice. Stejně tak "startovací bod" u příkazu FindRoot je vhodné najít pomocí grafického znázornění.

3. úkol: Řešení rovnic

Řešte rovnici ((x+2)/3)-((x-3)/2)+1=x+3 s reálnou neznámou x.

Řešení

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

Řešte rovnici x((x+3)/2)-x((x-2)/4)-2=((x^2)/4) s reálnou neznámou x a proveďte zkoušku.

Řešení

ClearAll["Global`*"];
rovnice=x((x+3)/2)-x((x-2)/4)-2==((x^2)/4);
reseni=Solve[rovnice,x];
reseni=x/.reseni[[1]]
rovnice/.x->reseni

Řešte rovnici (x^2)+4x+12=0 a) v reálných číslech, b) v komplexních číslech.

Řešení

ClearAll["Global`*"];
rovnice=(x^2)+4x+12==0;
reseni=Solve[rovnice,x];
reseni1=x/.reseni[[1]];
reseni2=x/.reseni[[2]];
If[Im[reseni1]==Im[reseni2],Print["Rovnice ",rovnice//
TraditionalForm," má řešení v reálných číslech a to kořeny ",reseni1," a ",reseni2,"."],Print["Rovnice ",rovnice//TraditionalForm," má řešení v komplexních číslech a to kořeny ",reseni1," a ",reseni2,"."]]

Řešte rovnici 3x + a(2 - x) = 3a + 2, kde x∈ℝ je neznámá a a∈ℝ je parametr.

Řešení

ClearAll["Global`*"];
rovnice=3x+a(2-x)==3a+2;
reseni=Solve[rovnice,x];
reseni=x/.reseni[[1]];
Print["Řešení rovnice ",rovnice," je x = ",reseni,"."]

Automobil, který se pohyboval s počáteční rychlostí o velikosti 36 km.(h^(-1)), začal svůj pohyb zrychlovat. Za jednu minutu zrychleného pohybu tak urazil dráhu 1,5 km. Určete velikost jeho zrychlení. Odporové a třecí síly zanedbejte.

Řešení

ClearAll["Global`*"];
draha=s==v0*t+0.5*a*(t^2);
zrychleni=Solve[draha,a];
zrychleni=a/.zrychleni[[1]];
zrychleni=zrychleni/.{v0->36 (kmh^(-1)),t->1 min,s->1.5 km};
zrychleni=zrychleni/.{(kmh^(-1))->(1/3.6),min->60,km->1000};
Print["Automobil se pohyboval se zrychlením o velikosti ",zrychleni," m.(s^(-2))."]

Vykreslování grafu funkce

Zobrazení grafu funkce je užitečné v řadě případů:
	průběh funkce
	řešení nepolynomiálních rovnic
	fyzikální a jiné závislosti veličin
	...

Plot[funkce[x], {x, (Subscript[x, min]), (Subscript[x, max])}] - vykreslí graf funkce na intervalu <(Subscript[x, min]); (Subscript[x, max])>; tento příkaz má další parametry, které lze nastavovat; graf se zobrazí jako obrázek, který lze přes schránku (clipboard) zkopírovat do dalších programů (PhotoShop, Malování, ...)

při vykreslování uživatelsky definovaných funkcí je dobré tyto funkce předem definovat - lépe se s nimi pak pracuje (zobrazení grafu, výpočet derivace, intervalů monotonnosti, ...)

nazevfunkce[promenna_]=predpisfunkce(promenna)

Tento způsob zápisu je důležitý - zejména "podtržítko" za názvem proměnné!!!

někdy je vhodné definovat funkci, která má na různých intervalech různé předpisy - např.:

funkce[x_]:=(Piecewise[{{-1, x<-1}, {x, -1≤x≤1}, {1, x>1}}])
Pozor!!! Znak {, který vystupuje v definici funkce není znak { (tj. nejedná se o "složenou závorku")! Jedná se oznak, který lze psát klávesovou zkratkou EscpwEsc.

Takto definovanou funkci lze např. i derivovat - Mathematica jí zderivuje na každé části zvlášť.

4. úkol: Grafy funkcí

Nakreslete graf funkce f: y =sin x na intervalu <-((3π)/2); 2π>.

Řešení

Plot[Sin[x],{x,-((3π)/2),2π}]

Nakreslete graf funkce f: y=(Sqrt[x-3]) na intervalu <0; 10>.

Řešení

Plot[(Sqrt[x-3]),{x,0,10}]

Nakreslete graf funkce f: y=(e^(-(x^2))) na intervalu <-10; 10>.

Řešení

Plot[(E^(-(x^2))),{x,-10,10},PlotRange->All]

Nakreslete do jednoho obrázku grafy funkcí f: y = cos x, g: y = cos 2x a h: y = cos x + 2. Funkce nakreslete na intervalu <-((5π)/2); 3π>.

Řešení

Plot[{Cos[x],Cos[2*x],Cos[x]+2},{x,-((5π)/2),3π}]

Nakreslete do jednoho obrázku grafy funkcí f: y = cos (x/4), g: y = cos (x/3), h: y = cos (x/2), i: y = cos x, j: y = cos 2x, k: y = cos 3x a l: y = cos 4x. Funkce nakreslete na intervalu <-2π; 2π>.

Řešení I.

Plot[Table[Sin[k*x],{k,{(1/4),(1/3),(1/2),1,2,3,4}}],{x,-((3π)/2),2π}]

Řešení II.

ClearAll["Global`*"];
funkce=Table[Sin[k*x],{k,{(1/4),(1/3),(1/2),1,2,3,4}}];
Plot[Evaluate[funkce],{x,-((3π)/2),2π}]

Nakreslete graf funkce f: y =  x + 2, který bude nakreslen červeně čárkovaně. Funkci nakreslete na intervalu <-5; 7>.

Řešení

ClearAll["Global`*"];
f[x_]:=x+2;
Plot[f[x],{x,-5,7},PlotStyle->{{RGBColor[1,0,0],Dashing[{0.02,0.025}]}}]

Nakreslete do jednoho obrázku grafy funkcí f: y = -cos x, který bude nakreslen červeně, a g: y = (x^2)-1, který bude nakreslen modře a silnější čarou. Funkce nakreslete na intervalu <-(π/2); π>.

Řešení

ClearAll["Global`*"];
f[x_]:=-Cos[x];
g[x_]:=(x^2)-1;
Plot[{f[x],g[x]},{x,-(π/2),π},PlotStyle->{{RGBColor[1,0,0],Thickness[0.002]},{RGBColor[0,0,1],Thickness[0.008]}}]

Nakreslete do jednoho obrázku grafy funkcí f: y = ln x a g: y = log x. V grafu vyznačte pouze názvy os, ale ne jejich dělení.

Řešení

ClearAll["Global`*"];
f[x_]:=Log[x];
g[x_]:=Log[10,x];
Plot[{f[x],g[x]},{x,0,10},PlotStyle->{RGBColor[1,0,0],RGBColor[0,0,1]},Ticks->None,AxesLabel->{"x","y"}]

Nakreslete graf funkce f: y = (x^2)+4x+5. V grafu vyznačte pouze názvy os, ale ne jejich dělení. Vyznačte souřadnice minima funkce.

Řešení

ClearAll["Global`*"];
f[x_]:=(x^2)+4 x+5;
derivace[x_]=f'[x];
minimum=Solve[f'[x]==0,x];
minimum=x/.minimum[[1]];
ymin=f[minimum];
graf1=Plot[f[x],{x,-5,1},Ticks->{{minimum},{ymin}},AxesLabel->{"x","y"}];
cary=Graphics[{RGBColor[1,0,0],Thickness[0.005],AbsoluteDashing[{1,5}],Line[{{0,ymin},{minimum,ymin},{minimum,0}}]}];
bodminima=Graphics[{RGBColor[1,0,0],PointSize[0.02],Point[{minimum,ymin}]}];
Show[graf1,cary,bodminima]

Nakreslete graf závislosti okamžité polohy na čase hmotného bodu, který kmitá harmonicky s frekvencí 5 Hz s nulovou počáteční fází a amplitudou výchylky 10 cm. Nakreslete alespoň jednu periodu jeho kmitání.

Řešení

ClearAll["Global`*"];
frekvence:=5;
amplituda:=10;
fi0:=0
vychylka[t_]:=amplituda*Sin[2*π*frekvence*t+fi0];
Plot[vychylka[t],{t,0,(1/frekvence)},AxesLabel->{"(t/s)","(y/cm)"}]

Nakreslete graf závislosti okamžité polohy na čase hmotného bodu, který kmitá harmonicky s frekvencí 0,1 Hz s počáteční fází (π/3) a amplitudou výchylky 5 cm. Nakreslete alespoň dvě periody jeho kmitání. Do téhož obrázku zakreslete i graf závislosti velikosti rychlosti (resp. zrychlení) na čase. Grafy navzájem odlište barvou, tloušťkou a typem čáry.

Řešení

ClearAll["Global`*"];
frekvence:=(1/10);
amplituda:=5;
fi0:=(π/3);
vychylka[t_]=amplituda*Sin[2*π*frekvence*t+fi0];
rychlost[t_]=D[vychylka[t],t];
zrychleni[t_]=D[rychlost[t],t];graf1=Plot[Tooltip[vychylka[t],"Výchylka"],{t,0,(2/frekvence)},AxesLabel->{"(t/s)","(y/cm), (v/(cm . (s^(-1)))), (a/(cm . (s^(-2))))"},PlotStyle->{{RGBColor[1,0,0],Thickness[0.002],Dashing[{0.02,0.025}]}}];
graf2=Plot[Tooltip[rychlost[t],"Rychlost"],{t,0,(2/frekvence)},AxesLabel->{"(t/s)","(y/cm), (v/(cm . (s^(-1)))), (a/(cm . (s^(-2))))"},PlotStyle->{{RGBColor[0,1,0],Thickness[0.002],Dashing[{0.01,0.015}]}}];
graf3=Plot[Tooltip[zrychleni[t],"Zrychlení"],{t,0,(2/frekvence)},AxesLabel->{"(t/s)","(y/cm), (v/(cm . (s^(-1)))), (a/(cm . (s^(-2))))"},PlotStyle->{{RGBColor[1,0,1],Thickness[0.002],Dashing[{0.03,0.035}]}}];
Show[graf1,graf2,graf3]

Proložení funkce naměřenými daty

Ve fyzice a dalších technických předmětech je často užitečné umět proložit reálně naměřenými daty křivku - ať při laboratorních pracech, experimentech nebo při "objevování" fyzikálních zákonů.

Fit[data, funkce, proměnná] - najde funkci, která nejlépe aproximuje naměřená data; funkce bude takového typu (lineární, kvadratická, sinus, ...), který určí uživatel, a bude vypsána v určené proměnné

naměřená data je vhodné definovat předem, abychom s nimi mohli lépe pracovat:
mojedata = {{(Subscript[x, 1]), f((Subscript[x, 1]))}, {(Subscript[x, 2]), f((Subscript[x, 2]))}, ..., {(Subscript[x, n]), f((Subscript[x, n]))}}

ListPlot[data] - vykreslí naměřená data

5. úkol: Proložení funkce naměřenými daty

Při měření odporu vodiče pomocí proudu procházejícím vodičem a napětí měřeném mezi konci vodiče v zapojení podle uvedeného schématu byla naměřena série dat: proud v miliampérech a napětí ve voltech. Zakreslete data do grafu, proložte je příslušnou závislostí a určete hodnotu odporu vodiče.

data = {{100, 5.2}, {150, 7.1}, {200, 11.1}, {250, 12.8}, {300, 14.5}, {350, 
   18.1}, {400, 19. 8}, {450, 22.5}, {500, 26. 5}, {550, 29. 8}}

Řešení

ClearAll["Global`*"];
data={{100,5.2},{150,7.1},{200,11.1},{250,12.8},{300,14.5},{350,18.1},{400,19.8},{450,22.5},{500,26.5},{550,29.8}};
data=Table[{data[[i]][[1]]*0.001,data[[i]][[2]]},{i,Length[data]}];
body=ListPlot[data,PlotStyle->Directive[PointSize[0.02],RGBColor[1,0,0]]];
U[i_]=Fit[data,{1,i},i];
graf=Plot[U[i],{i,0,.6},AxesLabel->{"(I/A)","(U/V)"}];
Show[graf,body]
Print["Odpor vodiče je ",U'[1.]," Ω."]