Mathematica jako kalkulator:
- Dodawanie
In[1]:= 2+2
Out[1]= 4
- Mnożenie
In[2]:= 3*6
Out[2]= 18
- Odejmowanie
In[3]:= 3-7
Out[3]= -4
- Dzielenie (Uwaga, tu jest kilka problemów)
In[4]:= 3/7
Out[4]= 3/7
Czyli dostaliśmy ułamek… (Pamiętajmy: obliczenia symboliczne!) Ale jak napiszemy tak:
In[5]:= 3./7
Out[5]= 0.428571
albo
In[6]:= 3/7.
Out[6]= 0.428571
To już dostajemy ułamek dziesiętny…
Inne obliczenia
Pierwiastek
In[7]:= Sqrt[7]
Out[7]= Sqrt[7]
Po pierwsze zwracam uwagę na nawiasy kwadratowe używane do wskazywania parametrów funkcji. Po drugie — przyjęto, że wszystkie nazwy funkcji zaczynają się od wielkiej litery. Po trzecie — znowu właściwie Mathematica nic nie zrobiła. To dodajmy kropkę po 7:
In[8]:= Sqrt[7.]
Out[8]= 2.64575
zadziałało… Inna metoda wymuszenie obliczeń polega na użyciu specjalnej funkcji o nazwie N[]
, na przykład:
In[9]:= N[Sqrt[11]]
Out[9]= 3.31662
Jeżeli chcemy dokonać obliczeń z określoną precyzją, możemy zrobić to tak:
In[10]:= N[3/11,19]
Out[10]= 0.2727272727272727273
Można korzystać ze stałych, na przykład E albo Pi
In[11]:= N[Pi,50]
Out[11]= 3.1415926535897932384626433832795028841971693993751
In[12]:= N[E,20]
Out[12]= 2.7182818284590452354
Podczas obliczeń można korzystać ze zmiennych:
In[13]:= zz=Sqrt[2]+Sqrt[3]-Sqrt[5+2 Sqrt[6]];
(Zwracam uwagę na średnik na końcu; użycie go wyłącza opcję potwierdzanie tego co Mathematica wylicza…)
In[14]:= N[zz,3]
During evaluation of In[14]:= N::meprec: Internal precision limit $MaxExtraPrecision = 50.` reached while evaluating Sqrt[2]+Sqrt[3]-Sqrt[5+2 Sqrt[6]].
Out[14]= 0.*10^-53
Jeżeli pojawia się taki komunikat, oznacza to, że wynik obliczenia w przybliżeniu równa się zero Dostępnych jest wiele funkcji — nie sposób wymienić tu wszystkich — odsyłam do Helpa…
Możliwe są również bardziej skomplikowane obliczenia:
In[15]:= Sum[i,{i,1,10}]
Out[15]= 55
Powyższe równoważne jest
In[16]:= 1+2+3+4+5+6+7+8+9+10
Out[16]= 55
albo zapisowi uproszczonemu
In[17]:= Sum[i, {i,10}]
Out[17]= 55
Mniej więcej wiadomo co to będzie:
In[18]:= Sum[i*j, {i,1,10}, {j,1,10}]
Out[18]= 3025
(podwójna suma…)
W podobny sposób działa polecenie Product
, zatem nikogo nie dziwi wynik:
In[19]:= 10! - Product[i, {i,1,10}]
Out[19]= 0
In[20]:= Sum[1/i, {i,1, Infinity}]
During evaluation of In[20]:= Sum::div: Sum does not converge.
Out[20]= \!\(
\*UnderoverscriptBox[\(\[Sum]\), \(i = 1\), \(\[Infinity]\)]
\*FractionBox[\(1\), \(i\)]\)
Powyższe nie jest specjalnie dobrym przykładem ponieważ taka suma nie ma granicy, ale to:
In[21]:= Sum[1/(i^2), {i,1,Infinity}]
Out[21]= \[Pi]^2/6
tego to chyba kalkulator w komórce nie policzy, prawda? Można też użyć Mathematici do rozwiązywania równań. Najprostszy wariant wygląda tak:
In[22]:= Solve[3x+9==0,x]
Out[22]= {{x->-3}}
Nieco bardziej skomplikowane jest to
In[23]:= Solve[(x-Pi)(x-2)==0, x]
Out[23]= {{x->2},{x->\[Pi]}}
Polecenie Solve
rozwiązuje równanie dokładnie (przynajmniej stara się). Polecenie NSolve
rozwiązuje równanie metodami numerycznymi:
In[24]:= NSolve[(x-Pi)(x-2)==0, x]
Out[24]= {{x->2.},{x->3.14159}}
W przypadku użycia polecenia Solve
możliwe jest rozwiązanie równania o postaci:
In[25]:= Solve[(x-3)(x-2)== Pi]
Out[25]= {{x->1/2 (5-Sqrt[1+4 \[Pi]])},{x->1/2 (5+Sqrt[1+4 \[Pi]])}}
albo o postaci
In[26]:= Solve[(x-3)(x-2)== a,x]
Out[26]= {{x->1/2 (5-Sqrt[1+4 a])},{x->1/2 (5+Sqrt[1+4 a])}}
In[27]:= NSolve[(x-3)(x-2)== Pi]
Out[27]= {{x->0.658372},{x->4.34163}}
Najprostsze obliczenia symboliczne
Najciekawsze jednak możliwości zaczynają się, gdy zechcemy dokonywać obliczeń symbolicznych. Polecenie Expand
„wylicza" sumy, iloczyny i dodatnie potęgi w wyrażeniu:
In[28]:= Expand[(a + b)^3]
Out[28]= a^3+3 a^2 b+3 a b^2+b^3
Polecenie Factor
faktoryzuje (upraszcza?) złożone formuły — wielomiany
In[29]:= Factor[x^5+x^4+x+1]
Out[29]= (1+x) (1+x^4)
Polecenie Simplify
upraszcza skomplikowane wyrażenia…
In[30]:= Simplify[x^2+2 x+1]
Out[30]= (1+x)^2
ale też:
In[31]:= Factor[x^2+2 x+1]
Out[31]= (1+x)^2
za to
In[32]:= Simplify[1-x^2]
Out[32]= 1-x^2
nie robi nic, ale już
In[33]:= Factor[1-x^2]
Out[33]= -((-1+x) (1+x))
tak, że nie jest to całkiem proste. Inny przykład
In[34]:= Simplify[x^2 > 3, x>2]
Out[34]= True
Specjalne polecenie /.
pozwala zastąpić zmienną przez wyrażenie, na przykład:
In[35]:= x+2 /. x -> a
Out[35]= 2+a
In[36]:= x+2 /. x ->b-1
Out[36]= 1+b
Całki, pochodne…
In[37]:= Dt[Sin[x],x]
Out[37]= Cos[x]
proste, prawda? A druga pochodna to będzie jakoś tak…
In[38]:= Dt[Sin[x], {x,2}]
Out[38]= -Sin[x]
Sprawdźmy…
In[39]:= Dt[%%, x]
Out[39]= -Sin[x]
Zwracam uwagę, na znak %%
. Mathematica przyjmuje taką konwencję, że pojedynczy znak %
oznacza wynik poprzedniego działania, podwójny — tego przedostatniego, kolejne znaki %
pozwalają odwołać się do jeszcze wcześniejszych wyrażeń…
In[40]:= Dt[Cos[x],x]
Out[40]= -Sin[x]
Gdy chcemy liczyć pochodne cząstkowe używamy polecenia D
; czasami trudno jest zauważyć różnicę:
In[41]:= D[Sin[x],x]
Out[41]= Cos[x]
Całka to Integrate
In[42]:= Integrate[Sin[x],x]
Out[42]= -Cos[x]
To była całka nieoznaczona, całka oznaczona to coś takiego:
In[43]:= Integrate[x,{x,a,b}]
Out[43]= -(a^2/2)+b^2/2
In[44]:= Integrate[x, {x,0,t}]
Out[44]= t^2/2
Może być zapisane także inaczej
In[45]:= \!\(
\*SubsuperscriptBox[\(\[Integral]\), \(0\), \(t\)]\(x \[DifferentialD]x\)\)
Out[45]= t^2/2
w tym celu można posłużyć się „klawiaturą" wyświetlaną z boku przez Mathematice… albo innymi magicznymi zaklęciami. Całka to \ [ Integral ]1 (pisane BEZ odstępów!. Aby uzyskać [Pi] wystarczy napisać \ [ Pi ] [Sum] to \ [Sum ]
Wykresy
Możliwość tworzenia wykresów to kolejna mocna strona Mathematici. Najprostszy wykres tworzymy pisząc coś takiego:
In[46]:= Plot[Sin[x],{x,-10,10}]
Out[46]=
Gdy chcemy wyrysować dwie funkcje (lub więcej) postępujemy tak:
In[47]:= Plot[{Sin[x],Sin[x]^2},{x,0,10}]
Out[47]=
Jeżeli chcemy modyfikować wygląd wykresu, musimy zmieniać parametry (opcje). Niektóre funkcje mają ich całkiem sporo
In[48]:= Plot[{Sin[x],Sin[x]^2},{x,0,10},Axes->False,Background->RGBColor[1,1,0],GridLines->Automatic]
Out[48]=
Jeżeli chcemy uzyskać listę dostępnych opcji polecenia możemy napisać Options[Plot]
In[49]:= Options[Plot]
Out[49]= {AlignmentPoint->Center,AspectRatio->1/GoldenRatio,Axes->True,AxesLabel->None,AxesOrigin->Automatic,AxesStyle->{},Background->None,BaselinePosition->Automatic,BaseStyle->{},ClippingStyle->None,ColorFunction->Automatic,ColorFunctionScaling->True,ColorOutput->Automatic,ContentSelectable->Automatic,CoordinatesToolOptions->Automatic,DisplayFunction:>$DisplayFunction,Epilog->{},Evaluated->Automatic,EvaluationMonitor->None,Exclusions->Automatic,ExclusionsStyle->None,Filling->None,FillingStyle->Automatic,FormatType:>TraditionalForm,Frame->False,FrameLabel->None,FrameStyle->{},FrameTicks->Automatic,FrameTicksStyle->{},GridLines->None,GridLinesStyle->{},ImageMargins->0.,ImagePadding->All,ImageSize->Automatic,ImageSizeRaw->Automatic,LabelingSize->Automatic,LabelStyle->{},MaxRecursion->Automatic,Mesh->None,MeshFunctions->{#1&},MeshShading->None,MeshStyle->Automatic,Method->Automatic,PerformanceGoal:>$PerformanceGoal,PlotHighlighting->Automatic,PlotLabel->None,PlotLabels->None,PlotLayout->Automatic,PlotLegends->None,PlotPoints->Automatic,PlotRange->{Full,Automatic},PlotRangeClipping->True,PlotRangePadding->Automatic,PlotRegion->Automatic,PlotStyle->Automatic,PlotTheme:>$PlotTheme,PreserveImageOptions->Automatic,Prolog->{},RegionFunction->(True&),RotateLabel->True,ScalingFunctions->None,TargetUnits->Automatic,Ticks->Automatic,TicksStyle->{},WorkingPrecision->MachinePrecision}
Dopuszczalne wartości opcji znajdziemy w Helpie… Wykresy funkcji dwu zmiennych uzyskujemy za pomocą polecenia Plot3D
In[50]:= Plot3D[Sin[x y],{x,-4,4},{y,-4,4},Mesh->False,ViewPoint->{1.675`,1.796`,3.238`},PlotPoints->50]
Wpisujemy to tak: backslash nawias kwadratowy otwierający Integral nawias kwadratowy zamykający. Podobnie z innymi symbolami. ↩︎