2. Elementarna i viša  matematika na Mathematici

2.1 Algebarske manipulacije

Moć paketa za simboličku matematiku, poput Mathematice, leži u sposobnosti manipulacije simboličkim izrazima. Kao prvo, svakom izrazu možemo radi lakšeg snalaženja pridijeliti ime.

izraz1 = (((b + a))^3)

Kod davanja imena mogu se upotrebljavati i grčka slova, indeksi itd. kako bi se postigla sličnost sa standardnom matematičkom notacijom \(TraditionalForm\`\((β\_1, \ \(ℱ\&^\), \ …)\)\), ali takva imena su čest izvor grešaka i ne preporučaju se početnicima.

Mathematica ne provodi skoro nikakve operacije na izrazima dok je eksplicitno ne instruiramo. Recimo da želimo raspisati ("ekspandirati") izraz1 koristeći binomni teorem

Expand[izraz1]

To bi mogli i na ruke. Međutim:

izraz2 = (((a + 2  b + 3  c))^3) (((x + y))^3)

Expand[izraz2]

Ukoliko ne želimo vidjeti ispis rezultata neke komande, stavimo na kraj ";".

izraz3 = Expand[(izraz2^3)];

Length[izraz3]

Komanda Short ispisuje samo početak i kraj izraza te naznačuje broj ispuštenih članova pa tako možemo dobiti neku ideju o rezultatu bez da zakrčimo ekran:

Short[izraz3]

Inverzna operacija ekspanziji je faktorizacija:

Factor[izraz3]

Ovo faktorizira cijeli izraz u najmanji broj faktora. Faktoriziranje konkretne varijable tj. prikazivanje izraza u obliku polinoma u toj varijabli:

Collect[izraz2,  y]

Traženje koeficijenta uz određeni izraz:

Coefficient[izraz2, (y^2)]

Stavljanje na zajednički nazivnik:

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

Jedna od najčešće korištenih funkcija je Simplify  koja obično daje najjednostavniji mogući zapis izraza

Simplify[%]

Zadatak: Uzmite izraz3=(a + b)((c + d x)x+f (x^2))  i natjerajte Mathematicu da ga prikaže u slijedeća tri oblika:
(a) (a + b) c x + (a + b) (d + f) (x^2)
(b)  a c x + b c x + a d (x^2) + b d (x^2) + a f (x^2) + 
        b f (x^2)
(c)  (a+b) x (c+d x+f x)

Funkcija Simplify zna i trigonometrijske identitete

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

(1/Cot)[b] // Simplify

Zadatak: Uvjerite se da vrijedi identitet
\(\(\(\ \)\(\(\(cos\^3\) x\  + \ \(sin\^3\) x\)\/\(cosx\  + \ sin\ x\) = 1 - cos\ x\ sin\ x\)\)\)

2.2 Jednadžbe

U Mathematici kao znak jednakosti u jednadžbama stoji "==",  jer je uobičajeni znak "=" , kako smo gore već vidjeli, rezerviran za pridjeljivanje vrijednosti simbolima (imenima). Rješavanje jednadžbi se izvodi ugrađenom funkcijom Solve:

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

Valja primijetiti:
1. Prilikom poziva funkcije Solve treba eksplicitno naznačiti po kojoj varijabli se traži rješavanje.
2. Mathematica je pronašla oba rješenja kvadratne jednadžbe.
3. Rezultat je ispisan u obliku liste {...}takozvanih transfromacijskih pravila ("transformation rules"). Ta se pravila mogu onda primijeniti na proizvoljni izraz pomoću simbola /.  koji znači "primijeni na prethodni izraz transformacijska pravila koja slijede":

x + a  /. rjes

Tako provjeru dobivenih rješenja možemo napraviti primjenom transformacijskih pravila  na zadanu jednadžbu

2  (x^2) - 1 == 0  /.  rjes

(Uvrštavanjem rješenja u jednadžbu dobije se jednadžba poput 0==0 koji je uvijek zadovoljena pa odgovara logičkoj istini i Mathematica je automatski transformira u logičku Booleovu konstantu True.)

Transformacija izraza pomoću simbola /. je vrlo korisna operacija. Više riječi o njoj će biti u odjeljku 3.5, a sada ćemo samo pokazati njenu najčešću upotrebu: pridjeljivanje vrijednosti simbolima u nekom izrazu:

(((a + b - c))^4)  // Expand

% /. b -> c

% /.  a -> 2

Funkcija Solve može rješavati i sustave jednadžbi, ako se kao argumenti zadaju liste jednadžbi odnosno varijabli:

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

Zadatak: Riješite sustav jednadžbi:
(x^4) + (a^4) = 1
(x^2) + (a^2) = 1
Koliko ima rješenja?

Funkcija Solve nastoji naći simboličko rješenje, no to je ponekad nemoguće. Npr. jednadžbe viših stupnjeva uopće ne moraju imati sva rješenja u zatvorenom obliku.

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

x=1 je trivijalno rješenje, ali ostalih pet rješenja Mathematica ne može napisati u zatvorenom obliku već ih zapisuje na poseban način u koji sad nećemo ulaziti. U takvim slučajevima možemo pribjeći numeričkom rješavanju koje radi  funkcija NSolve:

NSolve[9  (x^6) + 4  (x^4) + 3  (x^3) + x - 17 == 0,  x]

(Često simboličke funkcije u Mathematici imaju svoj numerički pandan koji ima isto ime do na početno slovo N: Integrate ↔ NIntegrate, Sum ↔ NSum, ... )

S transcendentalnim jednadžbama situacija je nešto teža. Naime, i Solve i NSolve su predviđene samo za rješavanje polinomnih jednadžbi.

NSolve[2 ArcTan[x] == (x^2),  x]

Funkcija kojom zaista numerički rješavamo jednadžbe je FindRoot

?FindRoot

Vidimo da FindRoot traži da mu zadamo početnu točku od koje kreće tražiti nultočku nekom od numeričkih metoda poput Newtonove.

FindRoot[2 ArcTan[x] == (x^2),  {x, 0}]

FindRoot[2 ArcTan[x] == (x^2),  {x, 1}]

Pronašli smo dva rješenja. Daljnji pokušaji daju uvijek jedno od ova dva:

FindRoot[2 ArcTan[x] == (x^2),  {x, 5}]

FindRoot[2 ArcTan[x] == (x^2),  {x, 1000}]

FindRoot[2 ArcTan[x] == (x^2),  {x, -5}]

Ovo zadnje rješenje je zapravo 0 jer Mathematica, ako joj se ne kaže drugačije, radi numeriku s preciznošću od otprilike (10^(-15)).

Options[FindRoot]

$MachinePrecision

Ove varijable s "$" na početku su tzv. environment  varijable koje definiraju okolinu rada Mathematice.

$Version

Važna varijabla je $Path koja specificira direktorije po kojima će Mathematica tražiti datoteke koje želimo učitati.

$Path

FindRoot[2 ArcTan[x] == (x^2),  {x, -5},  
      WorkingPrecision -> 50]

Vidimo da se s povećanjem radne preciznosti rješenje još više približilo nuli. Funkcija Chop stavlja u egzaktnu nulu sve brojeve koji su joj bliži od (10^(-10)) i korisna je za povećanje preglednosti računa.

Chop[%]

Možemo se uvjeriti da su ova gore dva rješenja zaista jedina, tako da skiciramo grafove funkcija 2 arctg(x) i (x^2) i vidimo da se sijeku na samo dva mjesta. Koristimo funkciju Plot o kojoj će kasnije biti više riječi.

Plot[{2  ArcTan[x], (x^2)},  {x, -5, 5}]

Domaći zadatak 2-1:

Riješite jednadžbu:
tg (x) - (x/10) = 0

Domaći zadatak 2-2:

Nađite (kompleksno!) rješenje jednadžbe:
sin (x) = 2
i provjerite uvrštavanjem. Pokušajte pronaći još neko rješenje

Domaći zadatak 2-3:

Riješite nejednadžbu:
(x^2) + x - 12 < 0

Domaći zadatak 2-4:

Pronađite pozicije minimuma i maksimuma Besselove funkcije (Subscript[J, 1])(x) koji su najbliži točki x=0.

2.3 Matematička analiza

Mathematica sadrži sve standardne operacije koje se uče u matematičkoj analizi, poput limesa, nizova, redova i diferencijalnog računa. Limesi se izvrijednjavaju funkcijom Limit

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

Razvoj neke funkcije po nekoj varijabli oko neke točke do nekog reda radi Series:

Series[Sin[x], {x, 0, 5}]

Zadatak: Odredite prva četiri člana u razvoju funkcije  arctg(x) oko točke x=∞.

Domaći zadatak 2-5

Kolika je relativna pogreška koju radimo ako za izvrijednjavanje arctg(5) koristimo četveročlani red dobiven u gornjem zadatku? Da li bi greška bila manja da smo upotrebljavali četveročlani red oko x=0?

Deriviranje se radi funkcijom D:

D[(E^(2  x)) Cos[3  x], x]

Višestruko deriviranje:

D[(E^(2  x)) Cos[3  x], {x, 4}]

Deriviranje (nepoznate) opće funkcije f(x), korištenjem Leibnitzovog lančanog pravila:

D[(x^2) f[x], x]

Simboličko neodređeno integriranje:

Integrate[
      2 (E^(2 x)) Cos[3 x] - 
        3 (E^(2 x)) Sin[3 x], x]

Primijetite da se konstanta integracije podrazumijeva bez navođenja. Alternativno, postoji i zapis koji grafički bolje izgleda:

∫x Log[x] \[DifferentialD]x

Simboličko rješavanje određenih integrala:

Integrate[x Log[x],  {x, 0, 1}]

Neki integrali su preteški ili se naprosto ne daju prikazati u zatvorenoj formi pa Mathematica, kao i uvijek kad nešto ne zna izračunati, vraća zadani izraz:

Integrate[ArcTan[BesselJ[1, x]], {x, 0, 1}]

Tada nam ostaje numerička integracija pomoću NIntegrate

NIntegrate[ArcTan[BesselJ[1, x]], {x, 0, 1}]

Zadatak: Izračunajte neodređeni integral
∫(((x^2) + 3)/((x^5) + (x^4) - x - 1)) dx
i onda provjerite dobiveni rezultat deriviranjem i algebarskim manipulacijama.

Zadatak: Izračunajte određene integrale
((∫_0)^1) sin (sin (x)) dx            ((∫_0)^π) sin (sin (x)) dx
simbolički i numerički.

Domaći zadatak 2-6: Izračunajte dvostruki određeni integral
((∫_0)^1) 
          dx ((∫_0)^(1 - x))dy (x + 
                  y) (Sqrt[x (y^3)])

Domaći zadatak 2-7: Izračunajte 
∫dx (∫dy (x + 
                    y) (Sqrt[x (y^3)])) 
i onda provjerite dobiveni rezultat deriviranjem i algebarskim manipulacijama.

2.4 Linearna algebra

Vektori su u Mathematici reprezentirani kao liste

vec1 = {1, 1, 2}
vec2 = {2, 2, 4}

Skalarni produkt vektora se dobije točkom "." (ili funkcijom Dot),

vec1 . vec2

a vektorski produkt funkcijom Cross

Cross[vec1, vec2]

Matrice su liste odgovarajućih red-vektora

mat = {{1, 2, 1}, {4, 3, 3}, {9, 1, 7}}

Za prirodniji ispis koristimo funkciju MatrixForm

MatrixForm[%]

Za upis matrice možemo koristiti i izbornik Input->Create Table/Matrix/Pallete

mat=(({{1, 2, 1}, {4, 3, 3}, {9, 1, 7}}))

S matricama i vektorima možemo raditi sve ono na što smo navikli. Važno je samo znati da se množenje izvodi točkom "." (koja označava nekomutativno množenje), a ne zvjezdicom "*" ili razmakom kao kod običnog množenja koje je komutativno. Zaboravljanje točke je najčešći uzrok pogrešaka kod rada s matricama.

Množenje matrica (uočite točku!):

mat . mat

MatrixForm[%]

Množenje matrice i vektora (uočite točku!):

mat . vec1

Inverz matrice:

Inverse[mat]

Provjera

mat  %  // MatrixForm

Primijetite da smo upotrijebili postfiksni oblik funkcije MatrixForm.

Moguće je i mijenjati pojedine elemente matrice. Sjetite se da se element liste dobiva pomoću dvostrukih uglatih zagrada. (Njihov elegantan zapis se postiže sekvencama Esc-[[-Esc  i  Esc-]]-Esc

mat[[1, 1]] = 0

mat  // MatrixForm

Zadatak: Odredite svojstvene vrijednosti (eigenvalues) i svojstvene vektore (eigenvectors) matrice
(({{2.3`, 4.5`}, {6.7`, -1.2`}}))
i provjerite za jedan od tih vektora da je zaista svojstveni eksplicitnim množenjem.

Domaći zadatak 2-8:

(1)Koristeći funkcije Table i Random kreirajte 3x3 matricu sa slučajnim realnim brojevima između 0 i 10. (2)Zamijenite središnji element matrice simbolom x.  (3)Invertirajte novonastalu matricu te je (4)pomnožite s neinvertiranom i provjerite da je rezultat jedinična matrica.

Domaći zadatak 2-9:

Kakvo množenje matrica dobivamo ako izostavimo točku u A.B?

2.5 Crtanje grafova

2D

Glavna komanda za dvodimenzionalno crtanje je Plot.

Plot[Sin[x], {x, 0, 2  π}]

Poput većine Mathematica komandi i Plot ima svoje opcije pomoću kojih možemo podešavati njegovo ponašanje. Evo ih zajedno s njihovim defaultnim vrijednostima:

Options[Plot]

Za detaljno značenje pojedinih opcija pogledajte dokumentaciju. One najzanimljivije su:

({{PlotRange, Dio koordinatne ravnine koji se crta}, {Axes, Da li crtamo osi?}, {Frame, Da li crtamo okvir?}, {AxesLabel, Oznake na osima}, {DisplayFunction, Kamo crtamo? ({{ekran, $DisplayFunction}, {datoteka, Function[Display[<ime datoteke>,#]]}, {nigdje, Identity}})}})

Plot[Sin[x], {x, 0, 2  π}, 
      AxesLabel -> {"x", "sin(x)"}, 
      PlotRange -> {{0, 2}, {0, 1.5}}, Frame -> True]

Redosljed kojim specificiramo opcije je nebitan.

Slijedeći primjer bi trebao rezultirati datotekom sinus.gif  u radnom direktoriju. (Za popis mogućih grafičkih formata vidi u manualu funkciju Export.)

Plot[Sin[x], {x, 0, 2  π}, 
      DisplayFunction -> 
        Function[Display["sinus.gif", #, "GIF"]]]

Zadatak: Pronađite ovu datoteku na hard disku, prikažite je na ekranu pa onda izbrišite. (Radni direktorij možete pronaći izdavanjem komande Directory[]).

Za specificiranje svojstava samih grafova funkcija koristi se opcija PlotStyle prema donjem primjeru koji pokazuje i kako  na istoj slici istovremeno prikazati više grafova.

Plot[{Sin[x], Cos[x]}, {x, 0, 2  π}, 
      PlotStyle -> {{Thickness[0.01], 
            RGBColor[1, 0, 0]}, {Thickness[0.02], 
            RGBColor[0, 0, 1]}}]

Važno je primijetiti kako output Plot komande nije sam graf već tzv. grafički (Graphics) objekt. Graf na ekranu je samo usputni rezultat proizvodnje tog grafičkog objekta. Zato "%" ne daje ono što bismo naivno očekivali:

%

Za ponovno prikazivanje tog objekta možemo koristiti funkciju Show, koja omogućava i modificiranje opcija grafa.

Show[%%, AspectRatio -> 1.5]

Zadatak: Nacrtajte graf funkcije ln(x) između x=0.5 i x=1.5 bez ikakvih oznaka, okvira i osi, dakle samo liniju.

Domaći zadatak 2-9:

Koristeći funkciju ParametricPlot nacrtajte kružnicu (na ekranu treba izgledati baš kao kružnica, a ne kao elipsa).

3D

Glavna komanda za trodimenzionalno crtanje je Plot3D.

Plot3D[(x^4) + (y^4), {x, -2, 2}, {y, -2, 2}]

Za promjenu kuta gledanja koristimo opciju ViewPoint, čiju vrijednost možemo odrediti pomoću dijaloga Input->3D ViewPoint Selector ...

Show[%, ViewPoint -> {2.375,  -2.232,  0.910}]

Plot3D  ima većinu opcija kao i Plot plus još dosta novih

Show[%%,  Boxed -> False, 
      AxesLabel -> {"x-os", "y-os", "z-os"}, 
      Lighting -> False]

Osim velikog broja ugrađenih ("built-in") funkcija, s Mathematicom dolazi i određen broj paketa s dodatnim funkcijama. One su isto dokumentirane u Help-u (vidi tamo odjeljak "Add-ons & Links"), ali je za njihovu upotrebu prvo potrebno učitati odgovarajući paket. Npr. paket Graphics`Shapes`  definira neke zanimljive plohe

<<Graphics`Shapes`

Show[Graphics3D[MoebiusStrip[2, 0.6, 30]]]

Još više dodatnih paketa se može skinuti s  http://library.wolfram.com/infocenter/MathSource/

2.6 Grafički prikaz i fitanje podataka

Često je potrebno neke podatke dobivene npr. mjerenjima grafički prikazati i približno opisati nekom funkcijom (tzv. fitanje). Prvo je potrebno učitati podatke u Mathematica listu oblika

{{(Subscript[x, 1]), (Subscript[y, 1])}, {(Subscript[x, 2]), (Subscript[y, 2])},  ... }

Neka u radnom direktoriju bude poddirektorij files s datotekom fit1.dat  s podacima složenim u dva stupca. Izravan ispis datoteke je moguć ovako (na MS Windows platformi je možda nužno zamijeniti "/" -> "\")

!! "files/fit1.dat"

Funkcija ReadList omogućuje učitavanje ovih podataka izravno u Mathematica listu

podaci1 = ReadList["files/fit1.dat", {Number, Number}]

Za grafički prikaz možemo koristiti funkcije ListPlot i ScatterPlot3D.

ListPlot[podaci1, PlotStyle -> {PointSize[0.02]}]

(Default veličina točaka je obično presitna za ugodno gledanje.)

Fitanje se izvodi funkcijom

Fit[<lista s podacima>, <lista funkcija kojima fitamo>, <lista varijabli>]

koja izvodi fitanje metodom najmanjih kvadrata na linearnu kombinaciju specificiranih funkcija. Npr. linearni fit ovih podataka na funkciju  f(x)=a x+b   je

Fit[podaci1, {1, x}, {x}]

Grafičku provjeru kvalitete fita možemo provesti zajedničkim iscrtavanjem ovog pravca i podataka. (Primjetite kako cut'n'paste gornjeg rezultata u donju input čeliju pokazuje da Mathematica interno reprezentira brojeve preciznije nego što ih ispisuje.)

Show[
      Plot[0.020159523556311256` + 
          0.5130561168421428` x, {x, 0, 5}], 
      ListPlot[podaci1, PlotStyle -> {PointSize[0.02]}]]

Vidimo da kao nusprodukt imamo dva neželjena grafa. To spriječimo korištenjem opcije DisplayFunction kojom isključimo njihovo iscrtavanje.

Show[
      Plot[0.020159523556311256` + 
          0.5130561168421428` x, {x, 0, 5}, 
        DisplayFunction -> Identity], 
      ListPlot[podaci1, PlotStyle -> {PointSize[0.02]}, 
        DisplayFunction -> Identity], 
      DisplayFunction -> $DisplayFunction]

Zadatak: Podatke iz datoteke fit2.dat nafitajte na polinom trećeg reda, te na f(x)=a sin(x) te nacrtajte sve na jednom grafu. Neka sinusna funkcija bude u boji radi lakšeg snalaženja.

Fit radi s linearnom kombinacijom zadanih funkcija. Jedno moguće poboljšanje je korištenje funkcije FindFit (pojavljuje se tek u Mathematici 5.0) koja može raditi nelinearni fit.

podaci2 = ReadList["files/fit2.dat", {Number, Number}]

FindFit[podaci2, a Sin[b x], {a, b}, {x}]

Show[
      Plot[0.04731370851715653` + 1.4100207533957259` x - 
          0.6617882175300662` (x^2) + 0.06817318237314943` (x^3), {x, 0, 5}, 
        DisplayFunction -> Identity], 
      Plot[0.9174221173298753` Sin[x], {x, 0, 5}, 
        DisplayFunction -> Identity, 
        PlotStyle -> {RGBColor[1, 0, 0]}], 
      Plot[0.917041 Sin[0.980775  x], {x, 0, 5}, 
        DisplayFunction -> Identity, 
        PlotStyle -> {RGBColor[0, 0, 1]}], 
ListPlot[
        podaci2, PlotStyle -> {PointSize[0.02]}, 
        DisplayFunction -> Identity], 
      DisplayFunction -> $DisplayFunction]

Koji je fit najbolji? Trebala bi pažljiva analiza koju ćemo ostaviti za neki kasniji zadatak.

Domaći zadatak 2-10:

Pronađite neka svoja mjerenja koja ste napravili na Fizičkom praktikumu i načinite fitanje nekom razumnom funkcijom. Nacrtajte grafički prikaz i stavite na njega legendu.

2.7 Diferencijalne jednadžbe

Osnovna funkcija koja traži analitička rješenja običnih diferencijalnih jednadžbi je DSolve. Riješimo pomoću nje jednadžbu gušenog harmoničkog oscilatora

(((d^2) y)/(dt^2)) + 2 (dy/dt) + 4  y = 
      0

DSolve[y''[t] + 2  y'[t] + 4  y[t] == 0, y[t], 
      t]

Primijetite da smo dobili opće rješenje s dvije nepoznate konstante C[1] i C[2] koje treba odrediti iz početnih uvjeta. Ukoliko želimo partikularno rješenje za neke konkretne početne uvjete, zadamo te uvjete kao dodatne jednadžbe:

sol = 
      DSolve[{y''[t] + 2  y'[t] + 4  y[t] == 
            0, y'[0] ==  1, y[0] == 1}, y[t], t]

Plot[Evaluate[y[t] /. sol], {t, 0, 5}]

Gornji graf bi dobili i bez upotrebe funkcije Evaluate, ali to bi opcenito bilo sporije jer bi se zamjena simbola y[t] sa rjesenjem sol odvijala prilikom izvrijednjavanja svake tocke grafa, dok Evaluate osigurava da se to odvija samo jednom, prije samog crtanja.

Neke jednadžbe se ne mogu riješiti analitički, pa moramo pribjeći numeričkom integriranju funkcijom NDSolve. Npr. na kolegiju Diferencijalne jednadžbe i dinamički sustavi numerički se analizira tzv. Van der Polova jednadžba.

VdP = {x''[t] - (1 - x[t]^2) x'[t] + x[t] == 
            0};
pocuvjeti = {x'[0] == 1, x[0] == 1};

sol = NDSolve[Join[VdP, pocuvjeti], x[t], {t, 0, 15}]

Rezultirajući objekt je specijalni oblik funkcije, InterpolatingFunction, koji nije analitički, ali je možemo izvrijedniti u nekoj konkretnoj točki ili nacrtati.

Plot[Evaluate[x[t] /. sol], {t, 0, 15}]

InterpolatingFunction objekt možemo i derivirati

derx = D[Evaluate[x[t] /. sol], t]

Plot[derx, {t, 0, 15}]

NDSolve može riješiti i neke jednostavnije parcijalne diferencijalne jednadžbe.

Zadatak: Pomoću ParametricPlot nacrtajte graf derivacije gornjeg rješenja Van der Polove jednadžbe x'(t) u ovisnosti o rješenju x(t)  (tzv. fazni dijagram).

Zadatak: Neka na česticu u ravnini djeluje sila (Overscript[F,  ->]) =8 x (y^3) (Overscript[i,  ->]) + 12 (x^2) (y^2) (Overscript[j,  ->]) . Odgovarajući potencijal je U (x, y) = -4 (x^2) (y^3).  Provjerite da vrijedi (Overscript[F,  ->])  = -∇U. Funkcija gradijent postoji kao Grad u standardnom dodatnom paketu  Calculus`VectorAnalysis` . Nacrtajte potencijal U(x,y) i pomoću Plot3D i pomoću ContourPlot. Nadalje, rješavajući Newtonovu diferencijalnu jednadžbu gibanja (to ce sada biti sistem od dvije jednazbe, jedna za x-, a druga za y-komponentu), pronađite putanju čestice. Nacrtajte tu putanju, a onda je pokušajte superponirati na gornje dijagrame potencijala. Igrajte se malo s početnim uvjetima i uvjerite se da je sve OK. Izvrijednite ukupnu energiju za razna vremena i uvjerite se da je sustav zaista konzervativan tj. da je energija konstantna.