Lekcja 1


Mathematica jako kalkulator:

1. Dodawanie

2 + 2

4

2.  Mnożenie

3 * 6

18

3. Odejmowanie

3 - 7

- 4

4. Dzielenie (Uwaga, tu jest kilka problemow)

3 / 7

3 7

Czyli dostaliśmy ulamek... Ale jak napiszemy tak:

3. / 7

0.42857142857142855

albo

3 / 7.

0.42857142857142855

To już dostajemy ułamek dziesiętny...

Inne obliczenia

Pierwiastek

Sqrt [ 7 ]

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 kropke po 7:

Sqrt [ 7. ]

2.6457513110645907

zadziałało... Inna metoda wymuszenie obliczeń polega na użyciu specjalnej funkcji o nazwie N[], na przykład:

N [ Sqrt [ 11 ] ]

3.3166247903554

Jeżeli chcemy dokonać obliczeń z okresloną precyzją, możemy zrobić to tak:

N [ 3 / 11 , 19 ]

0.2727272727272727272

Można korzystać ze stałych, na przykład E albo Pi

N [ Pi , 50 ]

3.1415926535897932384626433832795028841971693993751

N [ E , 20 ]

2.7182818284590452353

Podczas obliczeń można korzystać ze zmiennych:

zz = 2 + 3 - 5 + 2 6 ;

(Zwracam uwagę na średnik na końcu; użycie go wyłącza opcję potwierdzanie tego co Mathematica wylicza...)

N [ zz , 3 ]

N :: meprec : Internal precision limit $MaxExtraPrecision = ⁠ 50. ⁠ reached while evaluating ⁠ 2 + 3 - 5 + 2 6 ⁠. "Internal precision limit $MaxExtraPrecision = \[NoBreak]\\!\\(50.`\\)\[NoBreak] reached while evaluating \[NoBreak]\\!\\(\\@2 + \\@3 - \\@\\(5 + \\(\\(2\\\\ \\@6\\)\\)\\)\\)\[NoBreak]. \\!\\(\\*ButtonBox[\\\"\[RightSkeleton]\\\", ButtonStyle->\\\"Link\\\", ButtonFrame->None, ButtonData:>\\\"paclet:ref/N\\\", ButtonNote -> \\\"N::meprec\\\"]\\)"

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:

Sum [ i , { i , 1 , 10 } ]

55

Powyższe równoważne jest

1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10

55

albo zapisowi uproszczonemu

Sum [ i , { i , 10 } ]

55

Mniej wiecej wiadomo co to będzie:

Sum [ i * j , { i , 1 , 10 } , { j , 1 , 10 } ]

3025

(podwójna suma…)

W podobny sposób działa polecenie Product, zatrem nikogo nie dziwi wynik:

10 ! - Product [ i , { i , 1 , 10 } ]

0

Sum [ 1 / i , { i , 1 , Infinity } ]

Sum :: div : Sum does not converge. "Sum does not converge. \\!\\(\\*ButtonBox[\\\"\[RightSkeleton]\\\", ButtonStyle->\\\"Link\\\", ButtonFrame->None, ButtonData:>\\\"paclet:ref/message/Sum/div\\\", ButtonNote -> \\\"Sum::div\\\"]\\)"

i = 1 1 i

Powyższe nie jest specjalnie dobrym przykładem poniewaz taka suma nie ma granicy, ale to:

Sum [ 1 / ( i ^ 2 ) , { i , 1 , Infinity } ]

π 2 6

tego to chyba kalkulator w komórce nie policzy, prawda?

Można też użyć Mathematici do rozwiązywania równan. Najprostszy wariant wygląda tak:

Solve [ 3 x + 9 0 , x ]

{ { x - 3 } }

Nieco bardziej skomplikowane jest to

Solve [ ( x - Pi ) ( x - 2 ) 0 , x ]

{ { x 2 } , { x π } }

Polecenie Solve rozwiazuje rownanie dokładnie (przynajmniej stara sie). Polecenie NSolve rozwiazuje równanie metodami numerycznymi:

NSolve [ ( x - Pi ) ( x - 2 ) 0 , x ]

{ { x 2. } , { x 3.141592653589793 } }

Wprzypadku użycia polecenia Solve możliwe jest rozwiązanie równania o postaci:

Solve [ ( x - 3 ) ( x - 2 ) Pi ]

{ { x 1 2 ( 5 - 1 + 4 π ) } , { x 1 2 ( 5 + 1 + 4 π ) } }

albo o postaci

Solve [ ( x - 3 ) ( x - 2 ) a , x ]

{ { x 1 2 ( 5 - 1 + 4 a ) } , { x 1 2 ( 5 + 1 + 4 a ) } }

NSolve [ ( x - 3 ) ( x - 2 ) Pi ]

{ { x 0.6583722814885216 } , { x 4.341627718511479 } }

Najprostsze obliczenia symboliczne

Najciekawsze jednak możliwosci zaczynaja się, gdy zechcemy dokonywać obliczeń symbolicznych. Polecenie Expand „wylicza” sumy, iloczyny i dodatnie potegi w wyrazeniu:

Expand [ ( a + b ) ^ 3 ]

a 3 + 3 a 2 b + 3 a b 2 + b 3

Polecenie Factor faktoryzuje (upraszcza?) złożone formuły — wielomiany

Factor [ x 5 + x 4 + x + 1 ]

( 1 + x ) ( 1 + x 4 )

Polecenie Simplify upraszcza skomplikowane wyrażenia...

Simplify [ x 2 + 2 x + 1 ]

( 1 + x ) 2

ale też:

Factor [ x 2 + 2 x + 1 ]

( 1 + x ) 2

za to

Simplify [ 1 - x ^ 2 ]

1 - x 2

nie robi nic, ale za to

Factor [ 1 - x ^ 2 ]

- ( - 1 + x ) ( 1 + x )

tak, że nie jest to całkiem proste. Inny przykład

Simplify [ x ^ 2 > 3 , x > 2 ]

True

Specjalne polecenie /. pozwala zastąpić zmienną przez wyrazenie, na przykład:

x + 2 /. x a

2 + a

x + 2 /. x b - 1

1 + b

Całki, pochodne...

Dt [ Sin [ x ] , x ]

Cos [ x ]

proste, prawda? A druga pochodna to będzie jakoś tak...

Dt [ Sin [ x ] , { x , 2 } ]

- Sin [ x ]

Sprawdźmy...

Dt [ %% , x ]

- Sin [ x ]

Zwracam uwagę, na znak %%. Mathematica przyjmuje taką konwencję, że pojedynczy znak % oznacza wynik poprzeniego działania, podwójny — tego przedostatniego, kolejne znaki % pozwalają odwołać się do jeszcze wcześniejszych wyrażeń…

Dt [ Cos [ x ] , x ]

- Sin [ x ]

Gdy chcemy liczyć pochodne cząstkowe używamy polecenia D; czasami trudno jest zauwazyć różnicę:

D [ Sin [ x ] , x ]

Cos [ x ]

Calka to Integrate

Integrate [ Sin [ x ] , x ]

- Cos [ x ]

To była całka nieoznaczona, całka oznaczona to coś takiego:

Integrate [ x , { x , a , b } ]

- a 2 2 + b 2 2

Integrate [ x , { x , 0 , t } ]

t 2 2

Może być zapisane także inaczej

0 t x x

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 ] (pisane BEZ odstepów!. Aby uzyskac π wystarczy napisac \ [ Pi ] ∑ to \ [Sum ]

Wykresy

Możliwość tworzenia wykresów to kolejna mocna strona Mathematici. Najprostszy wykres tworzymy pisząc coś takiego:

Plot [ Sin [ x ] , { x , - 10 , 10 } ]

przyklad1_1

Gdy chcemy wyrysowac dwie funkcje (lub wiecej) postepujemy tak:

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

przyklad1_2

Jeżeli chcemy modyfikować wygląd wykresu, musimy zmieniać parametry (opcje). Niektóre funkcjie mają ich całkiem sporo

Plot [ { Sin [ x ] , Sin [ x ] 2 } , { x , 0 , 10 } , Axes False , Background RGBColor [ 1 , 1 , 0 ] , GridLines Automatic ]

przyklad1_3

Jeżeli chcemy uzyskać listę dostępnych opcji polecenia możemy napisać Options[Plot]

Options [ Plot ]

{ 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 , LabelStyle { } , MaxRecursion Automatic , Mesh None , MeshFunctions { #1 & } , MeshShading None , MeshStyle Automatic , Method Automatic , PerformanceGoal $PerformanceGoal , PlotLabel None , PlotLegends None , PlotPoints Automatic , PlotRange { Full , Automatic } , PlotRangeClipping True , PlotRangePadding Automatic , PlotRegion Automatic , PlotStyle Automatic , PlotTheme $PlotTheme , PreserveImageOptions Automatic , Prolog { } , RegionFunction ( True & ) , RotateLabel True , TargetUnits Automatic , Ticks Automatic , TicksStyle { } , WorkingPrecision MachinePrecision }

Dopuszczalne wartości opcji znajdziemy w Helpie...

Wykresy funkcji dwu zmiennych uzyskujemy za pomocą polecenia Plot3D

Plot3D [ Sin [ x y ] , { x , - 4 , 4 } , { y , - 4 , 4 } , Mesh False , ViewPoint { 1.675 , 1.796 , 3.238 } , PlotPoints 50 ]

przyklad1_4