Vjezbe 1. Uvod u Mathematicu

Osnovne operacije

Radna datoteka naziva se notebook. Moze sluziti kao kalkulator :

2*3

Neka osnovna pravila :
  - naredbe se pokrece s Shift+Enter ili “malo” enter
  - imena funkcija uvijek pocinju velikim slovima, ako ime sadrži vise rijeci svaka pocinje velikim slovom
  - argumenti funkcija se odjeljuju uglatim zagradama [...];  (...) sluze za grupiranje izraza, {...} za liste, [[...]] za indeksiranje elemenata liste 
  - komentari se mogu staviti unutar (*...*)

Primjeri:

Pi
N[Pi,20]

2^10
(2^10) (* Ctrl+6 *)
1/5
(1/5) (*Ctrl+/ *)
(*Za ljepsi unos koristiti Palettes*)

Alternativni nacini pozivanja funkcije na argumentu :

N[Pi]
Pi//N
N@Pi

Zaustavjanje ispisa:

4*5;
x=4*5
x=4*5;

Pristupanje prethodnom rezultatu :

3*4

%/2

%/2

%%/2

%%%%/2

Out[14]

Help

Help je iznimno opsiran i detaljan - Documentation Center. Najlakse mu je pristupiti s F1.

?Plot

Izrazi i definicije funkcija

Clear[x] (*brise vrijednost varijable x*)

x*(x+1)*(x+2)

Expand[x*(x+1)*(x+2)]

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

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

Definiranje varijabli i funkcija opcenito moze biti trenutno ( = ) i odgodeno ( := )

a=RandomReal[];
b:=RandomReal[];

Table[a,{5}]
Table[b,{5}]

Funkcije je preporucljivo uvijek definirati odgodeno; argumenti se navode s _

f[x_]:=x^2+5

f[2]

g[x_,y_]:=x+y+3;

g[2,4]

Moguce je definirati i viselinijske funkcije, ali za tu svrhu bolje je koristiti module. Moduli omogucavaju i lokalno definiranje varijabli.

f[a_,b_,c_]:=Module[{aa,bb},
aa=a+b;
bb=aa+c]

f[1,2,3]

Simbolu je moguce dodijeliti vrijednost i s /. + ->

x^2+x^3 /.x->2

Liste

Kreiranje i prikazivanje listi

list={1,2,3,4,5}

Range[10]

Range[4,8]

Range[0,30,3]

Range[0.5,5.4,0.75]

Table[2^k,{k,1,10,2}]
Table[2^k,{k,1,10}]
Table[2^k,{k,10}]

Table[2,{5}]

Table[2*i,{i,{5,2,7}}]

Table[{i,j},{i,1,5},{j,2,4}]

Table[i+j,{i,1,5},{j,2,4}]//MatrixForm
Table[i+j,{i,1,5},{j,2,4}]//TableForm

Operacije na listama

x=Range[10]

x[[4]]
x[[{2,3}]]
x[[{2,3,8}]]
x[[3;;8]]

Length[x]

y={{1,2},{3,4},{5,6}};
Dimensions[y]

y[[2]]
y[[3,2]]
y[[3]][[2]]

x=Range[1,10,2]
y=Range[5,14,2]
Union[x,y]
Join[x,y]
Intersection[x,y]
Min[x]
Sort[x,Greater]

Vektorske i matricne operacije

vek={2,2};
mat={{1,2},{3,4}};

vek-2vek

mat.vek

vek.vek

MatrixPower[mat,4]
Det[mat]
Transpose[mat]//MatrixForm

Logicki operatori i petlje

x=2;
y=3;

x<y
x==y
x≠y
x<y && 4<5

If[x>y, 1,0]

If[x>y, x=x+2;,y=y+2;]
x
y

Do[x=x+1,{20}]
x

Clear[i]

For[i=1,i≤5, i++, Print[2*i]]

Clear[x];
g[x_]:=x^2;
Nest[g,x,5]
NestList[g,x,5]

Grafika

data=RandomReal[{-5,5},100];

ListPlot[data]

ListLinePlot[data]

f[x_]:=x^2+1;
Plot[f[x],{x,-3,3}]

Clear[x];
Plot[f[x],{x,-3,3},AxesLabel->{x,x^2},AxesOrigin->{0,0},PlotRange->{0,15},PlotStyle->{Red,Thick,Dashed}]

Plot3D[Sin[x+y^2],{x,-3,3},{y,-2,2}]

Sve ove funkcije koriste tzv. primitvne oblike - točke, linije ...

Graphics[{Thick,Green,Rectangle[{0,-1},{2,1}]}]

Graphics[{Thick,Green,Rectangle[{0,-1},{2,1}],Blue,Circle[{2,0}]}]

Nacrtati nekoliko grafova na jednoj slici najlakse je funkcijom Show

sl1=Plot[Sin[x^2]/x,{x,0,10}]
sl2=Plot[Cos[x^2]/x,{x,1,10}, PlotStyle->Red]
Show[{sl1,sl2},Axes->False]

Integracija s Wolfram Alpha

Od verzije 8 pretraživanje po Wolfram Alpha je integrirano u Mathematicu. Jednostavno se poziva s dva znaka = i ključnim riječima nakon toga. 
U sljedećem primjeru klikom možemo doći do povijesnih podataka, a zatim na + i FComputable data dobiti listu za manipulaciju u Mathematici.

WolframAlpha["osijek weather",{{"WeatherCharts:WeatherData",1},"ComputableData"},PodStates->{"WeatherCharts:WeatherData__Past 5 years"}];

Osim toga, naredbu u Mathematici možemo pokušati upisati i slobodnim jezikom ako prije toga napišemo =.

Optimizacijske procedure

U Mathematici postoji niz procedura za optimizaciju, lokalnu i globalnu, koje mogu biti simboličke i numeričke.

Simbolička optimizacija

f[x_]:=2x^2-3x+5
Plot[f[x],{x,-3,3},AxesOrigin->{0,0}]

Minimize[f[x],x]
Minimize[{f[x],x≤ 0},x]

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

Clear[a,b,c,x,y]
Minimize[a x^2+b x+c, x]

f[x_,y_]:=(x y-3)^2+1;
slfun=Plot3D[f[x,y],{x,-5,5},{y,-5,5}]
min=Minimize[f[x,y],{x,y}]
(*pristupanje vrijednostima:*)
{x,y}/.min[[2]]

sltocka=ListPointPlot3D[{{x,y,min[[1]]}/.min[[2]]},PlotStyle->{PointSize[Large],Pink}];
Show[{slfun,sltocka}]

Numerička optimizacija

NMinimize uvijek pokušava naći globalni minimum, dok FindMinimum traži lokalni minimum iz zadane početne točke ili je automatski bira.

f[x_]:=(0.5x^3-5x-2)^2+3x^2
Plot[f[x],{x,-4,4}]

Minimize[f[x],x]

NMinimize[f[x],x,Method-> {"NelderMead"}]
NMinimize[f[x],x,Method-> {"SimulatedAnnealing"}]
NMinimize[f[x],x,Method-> {"DifferentialEvolution"}]
NMinimize[f[x],x,Method-> {"RandomSearch"}]

FindMinimum[f[x],x]

FindMinimum[f[x],{x,2}]

Nekad NMinimize neće naći globalni minimum

f[x_]:=-x Sin[x]+3 Cos[x]+x/1000
Plot[f[x],{x,-20,20}]
NMinimize[f[x],x]

f[x_]:=Abs[2(x-10)+(x-10)*Sin[x]];
Plot[f[x],{x,-100,100}]
Plot[f[x],{x,-5,20}]
NMinimize[f[x],x]