Praktikum iz Opće fizike 3
Korištenje programskog paketa
Mathematica
Petar Stipanović
Uvod• numerički (2*2=4) i simbolički kalkulator (a*a=a2)
• razlikuje mala i velika slova
• rani list – bilježnica (notebook, *.nb) sastoji se od niza ćelija koje su
označene uglatim zagradama na desnoj strani bilježnice
• ćelija (cell)
tekstualna (komentari)
input ćelija (naredbe, počima sa In[n]:=, n je redni br. naredbe)
output (rezultat, počima sa Out[n]:=)
• osnovne matematičke konstante
(Pi) e(E) (Infinity) i(I) /180 (Degree)
• naredba neće ispisivati rezultat ako nakon unosa naredbe dodamo
znak ;
• upisana naredba izvršava se pritiskom tipki: Shift + Enter ili
numerički Enter
• Enter bez Shift označava samo prelazak u novi red ćelije
2
Vrijednosti• %n poziva rješenje naredbe u n. liniji
• Matematika uvijek ispisuje egzaktni numerički rezulat ako takav
postoji ( npr. 1/3+1/3 2/3 )
• N[izraz,n] vraća numeričku vrijednost izraza u zagradama
zaokruženu na n decimala
• ?izraz ispisuje informacije o upisanom izrazu
• Remove[var] briše iz memorije varijablu var
• Upotreba zagrada je strogo definirana:
() za grupiranje elemenata u algebarskim izrazima
( npr. 2+3*(x-a)/(x+a) )
[] za unos argumenata funkcije
( npr. Log[E] )
{} za definiranje listi
( npr. a={1, 2, 3, 4} )
[[]] za specificiranje elementa listi
( npr. a[[2]] )
(*komenatar*) 3
Operatori
• = operator pridruživanja
• izraz /. var -> vrijednost operator zamjene vraća izraz u kojem
je var zamijenjen sa vrijednost
Relacijski
< manje od
> veće od
<= jednako ili manje od
>= jednako ili veće od
== jednako
!= različito od
Aritmetički
+ zbrajanje
- oduzimanje
* množenje
/ dijeljenje
^ potenciranje
! faktorijel
Logički
&& i
|| ili
! ne
4
Definiranje liste• Nizovi brojeva
• Definiranje pomoću izraza i iteratora:
Table [ izraz, iterator ]
{i, N} i =1, 2, 3, ..., N
{i, min, max} i = min, min+1, ..., max-1, max
{i, min, max, korak} i= min, min+korak, ..., max
ako je u definiciji iteratora korištena varijabla i, izraz mora biti dan u
varijabli i
• Definiranje nabrajanjem elemenata liste:
ime_liste = { element1, element2, ..., elementN }
a = Table[1/i, {i,5}]
{1,1/2,1/3,1/4,1/5}
b = {5, 7, 8, 9}
{5, 7, 8, 9}5
Vektori
• Vektor definiramo listom V = { a, b, c}
• Operacije s vektorima:
V.W skalarni umnožak vektora V i W
V[[i]] vraća i-ti element vektora V
Norm[V] vraća duljinu vektora V
Normalize[V] vraća jedinični vektor u smjeru vektora V
CrossProduct[V,W] vraća vektorski umnožak vektora V i W
• Neke su funkcije definirane u paketima koji se ne učitavaju odmah
pri pokretanju Mathematice pa ih je potrebno učitati pozivanjem
Needs[“ime_paketa’”]. Kako bi koristili CrossProduct potrebno je
pozvati Needs["VectorAnalysis`"]
Normalize[V]
V = {1, 2, 3}
{1, 2, 3}
W = {1, 0, 5}
{1, 0, 5}
V.W
16
Needs["VectorAnalysis`"]
CrossProduct[V,W ]
{15,-6,-3}
6
Matrice
• Matricu definiramo listom M = { { a,b,c}, { d,e,f} }
čiji su elementi redci, odnosno liste koje sadrža elemente redaka
• Operacije s matricama:
A[[M]] vraća M. redak matrice A
A[[M,N]] vraća element u M. retku i N. stupcu matrice A
MatrixForm[A] ispisuje matricu A u matričnom obliku
Transpose[A] transponiran matricu A
Det[A] vraća determinantu matrice A
Inverse[A] vraća inverznu matricu matrice A
Eigensystem[A] vraća vlastite vrijednosti i vektore matrice A u
obliku liste { lista vlastitih vrijednosti, { liste vlastitih vektora} }
MatrixPower[A, n] vraća An
A.B vraća umnožak matrica A i B
7
Funkcije• Log[x] vraća prirodni logaritam broja x
• Log[b,x] vraća logaritam u bazi b za broj x
• Log10[x] vraća logaritam u bazi 10 za broj x
• Exp[x] vraća ex
• Sqrt[x] vraća drugi korijen broja x
• Sin[x] , Cos[x] , Tan[x] vraćaju vrijednosti
trigonometrijskih funkcija kuta x izraženog u radijanima
• ArcSin[x] , ArcCos[x] , ArcTan[x] vraćaju vrijednosti ciklometrijskih
funkcija za broj x
• Sinh[x] , Cosh[x] , Tanh[x] vraćaju vrijednosti hiperboličkih
funkcija za broj x
• ArcSinh[x] , ArcCosh[x] , ArcTanh[x] vraćaju vrijednosti inverznih
hiperboličkih funkcija za broj x
• StandardDeviation[lista] vraća standardnu devijaciju elemenata
• Mean[lista] vraća srednju vrijednost elemenata liste
• Definiranje funkcija f[x_]:= izraz u varijabli x
f[x_]:=2x^2+3x+58
Simboličko računanje• Expand[izraz] računa razvoj izraza
• Simplify[izraz] pojednostavljuje izraz
• D[izraz,x] derivira izraz po varijabli x
• f’[x] derivira funkciju f po varijabli x
• Expand[izraz] računa razvoj izraza
• Sum[red, {k,a,b} ] suma reda za k od a do b
• Series[izraz, {x,a,b} ] razvija u red po x u intervalu <a,b>
• Limit[f[x], x->broj] limes funkcije f(x) kada x teži prema broju
f[x_]:=(x+3)^3-2(x+3)^2D[f[x],x]-4 (3+x)+3 (3+x)2
f‘[x]-4 (3+x)+3 (3+x)2
Expand[f[x]]9+15 x+7 x2+x3
Simplify[f[x](1+x) (3+x)2
9
Jednadžbe
• Sustave polinomijalinih jednadžbi rješavamo pozivom funkcije
Solve[ {jednadžbe odvojene zarezom}, {nepoznanice} ]
ili ako želimo numeričke vrijednosti
NSolve[ {jednadžbe odvojene zarezom}, {nepoznanice} ]
• Za numeričko rješavanje jednadžbi koristimo funkciju:
FindRoot[ jednadžba, {varijabla, toča u čijoj okolini tražimo rj.} ]
Solve[ { 2*x+3*y==5, 3*x-2*y==2}, {x,y}]{ {x 16/13, y 11/13} } NSolve[ { 2*x+3*y==5, 3*x-2*y==2}, {x,y}]{ {x 1.23077, y 0.846154} }
FindRoot[2*ArcTan[x]==x^2,{x,0}] {x 0.}FindRoot[2*ArcTan[x]==x^2,{x,1}] {x 1.37177}
10
Integrali
• Integral simbolički računamo naredbom
Integrate [ f(x), x ]
• Integral računamo numerički naredbom
NIntegrate [ f(x), {x, a, b} ]
Integrate[Cos[0.5*x], x]2. Sin[0.5 x]Integrate[5/x, x]5 Log[x]
NIntegrate[5/x, {x,1,2}] 3.46574NIntegrate[x, {x,0,Sqrt[8]}] 4.
11
Diferencijalne jednadžbe
• Diferencijalne jednadžbe rješavamo simbolički naredbom
DSolve [ { diferencijalna jednadžba, rubni uvjet1, rubni uvjet2, ...},
funkcija, varijabla ]
Primjer rješavanja diferencijalne jednadžbe koja opisuje gibanje
tijela na opruzi ( y’’+y=0, y’’(0)=0, y(0)=5 )
• Numerički računamo rješenja diferencijanih jednadžbi naredbom
NDSolve [ { diferencijalna jednadžba, rubni uvjet1, rubni uvjet2, ...},
funkcija, { varijabla, min, max } ]
DSolve[ { y''[x]+y[x]==0, y'[0] ==0, y[0] ==5 }, y, x ]{{y Function[{x},5 Cos[x]]}}
NDSolve[{y''[x]+y[x]==0,y'[0]==0,y[0]==5},y,{x,0,2*Pi}]{{y InterpolatingFunction[{{0.,6.28319}},<>]}}y[Pi] /. %{-5.}Plot[ y[x] /. %, {x, 0, 2*Pi } ] 12
Crtanje funkcija
• Osnovna naredba za crtanje 2D grafova
Plot [ { lista funkcija }, { x, xmin, xmax }, opc1->{{za f1},{za f2}...},... ]
• Detaljan pregled opcija moguće je dobiti naredbom Options[Plot]
PlotStyle -> { lista opcija linije }
AbsoluteThickness[broj] postavlja debljinu linije
Hue[broj] broj između 0 i 1 određuje boju iz gradijenta
crvena, žuta, zelena, plava, ljubičasta
RGB[r,g,b] broj r,g,b između 0 i 1 određuje nijanse
redom crvene zelene i plave
Dashing[duljina crtice, razmaka] isprekidana linija
AxesLabel -> { “Oznaka_x_osi”, “Oznaka_y_osi” } imena osi
Plot[ {x^2, x^2-2}, {x, -2, 2}, PlotStyle-> { {AbsoluteThickness[2],Hue[.8],Dashing[{.02,.02}]},
{AbsoluteThickness[9],Hue[.5],Dashing[{.1,.05}]} },AxesLabel-> {"x/mm", "f(x)/N"} ]
13
Crtanje diskretnih točaka • Elemente liste podaci={{x1,y1},{x2,y2},{x3,y3},...} crtamo naredbom
ListPlot [podaci, opcije]
• Podatke pohranjene u tekstualnoj datoteci u stupcima možemo učitati u
listu naredbom
ReadList ["datoteka", tip podataka, opcije]
lokacija Number RecordLists->True pretvara redke
String iz datoteke u podliste
• Crtanje točaka iz datoteke C:\POF3\vj_0\Tab_1.txt
SetDirectory["C:\\POF3\vj_0"]
Remove[podaci]
podaci=ReadList[ "Tab_1.txt", Number, RecordLists->True ]
ListPlot[podaci,PlotStyle->{PointSize[0.02],Hue[0.7]}]
Podatke u
stupcima najbolje
je odvojiti znakom
Tab
14
Prilagodba funkcije podacima • Prilagodba na linearnu kombinaciju funkcija vrši se metodom najmanjih
kvadrata pozivom naredbe Fit [ podaci, {lista funkcija}, varijabla ]
Pr.1: Fit [podaci, {1,x}, x] za linearnu kombinaciju f [x_ ]=a*1+b*x
Pr.2: Fit [podaci, {x+2,x}, x] za linearnu kombinaciju f [x_ ]=a*(x+2)+b*x
• Prilagodba numeričkim podacima parametraski dane funkcije
FindFit [ podaci, funkcija, {lista parametara}, varijabla ]
Pr.3: Fit [podaci, a+b x, {a,b}, x] za linearnu funkciju f [x_ ]=a+b*x
• Prilagodbu funkcije podacima koji nisu linearni obavlja naredba
NonlinearFit [ podaci, funkcija, varijabla, {lista parametara} ]
Pr.4: NonlinearFit [podaci, a x^2+b x+c, x, {a,b,c} ] fit na funkciju f [x_ ]=ax2+bx+c
• Kako NonlinearFit nije dio paketa koji se učitava pri pokretanju
Mathematice potrebno je prije pozivanja učitati paket u kojem je
definirana, odnosno upisati naredbu <<Statistics `NonlinearFit`
• Obratite pozornost na oblik navodnika u gornjoj neredbi
(upisujemo ih sa Alt Gr + 7) 15
Prikaz različitih grafova• Za prikaz različitih grafova koristimo naredbu
Show [ naredbe za crtanje 1. tipa grafa, 2. tipa grafa, … ]
Pr.1: Fit [podaci, {1,x}, x] za linearnu kombinaciju f [x_ ]=a*1+b*x
Pr.2: Fit [podaci, {x+2,x}, x] za linearnu kombinaciju f [x_ ]=a*(x+2)+b*x
SetDirectory["C:\\POF3\vj_0"] C:\POF3\vj_0Remove[podaci] {-5.}podaci=ReadList["Tab_1.txt",Number,RecordLists->True] {{0.1,4.2},{0.2,5.9},{0.3,8.1},{0.4,9.9},{0.5,11.8},{0.6,14.3}}Fit[podaci,{1,x},x]2.03333 +20. xg[x_]:=20. x+2.03333;Show[ Plot[ g[x],
{x,0,0.8}, PlotStyle -> { AbsoluteThickness[2], Hue[0.1] } ,AxesLabel -> {"x_data/x_mj" , "y_data/y_mj" } ],
ListPlot[ podaci, PlotStyle->{ PointSize[.02], Hue[.7]} ] ]
16
Spremanje grafova• Prethodno upisana naredba iscrtava graf u bilježnici Mathematice
• Nacrtani graf možemo pohraniti u datoteku (bit će pohranjena u
prethodno pozvanom direktoriju) korištenje sljedeće naredbe
Export["ime.ekstenzija", izraz koji snimamo, "ekstenzija"]
• Spremljene grafove vrlo jednostavno umetnemo u MS word file
( Insert Picture Odaberemo pohranjeni graf )
Export["Graf_1.png", %24, "png"]Graf_1.png(*Pohranjuje rezultat naredbe u 24. ulaznoj ćeliji u datoteku Graf_1.png unutar prethodno pozvanog direktorija C:\\POF3\vj_0u png formatu*)
17
Spremanje listi i naredbi• Upisane liste možemo pohraniti u datoteku (bit će pohranjena u
prethodno pozvanom direktoriju) korištenje sljedeće naredbe
Export["dokument", izraz, "ekstenzija" ]
• Kako bi lakše eksportira podatke u word file, liste možemo pohraniti u
excell datoteci korištenje sljedeće naredbe
Export[ "ime.xls", ime liste ili broj linije u kojoj se lista nalazi, " xls" ]
• Cijelu bilježnicu možemo sačuvati: (File Save As), a naredbe unutar
bilježnice možemo mijenjati i izvršiti promijenjene sa
• Naredbe upisane u Mathematici jednostavno je kopirati u word:
Lijevom tipkom miša klikamo po ćeliji sve dok se ne označi cijela naredba
Desnom tipkom miša kliknemo na označeni dio Copy
Desnom tipkom miša kliknemo unutar word datoteke Paste
Export["Lista_1.xls", %28, "xls"]Lista_1.xls(* Pohranjuje rezultat liste definirane u 28. ulaznoj ćeliji u datoteku Lista_1.xls unutar prethodno pozvanog direktorija C:\\POF3\vj_0\ u xls formatu *)
18