Witam Państwa na wykładzie dotyczącym narzędzi ...users.uj.edu.pl/~golak/NOF18-19/NOF_1.pdf ·...

22
Witam Państwa na wykładzie dotyczącym narzędzi obliczeniowych fizyki ! Nazywam się Jacek Golak Pracuję w Zespole Zakładów Fizyki Jądrowej Instytutu Fizyki UJ i jestem kierownikiem Zakładu Teorii Układów Jądrowych. Moja dziedzina to zdecydowanie teoretyczna fizyka jądrowa Numer pokoju: B2-32 e-mail: [email protected] strona WWW: http://users.uj.edu.pl/~golak/zestawyNOF.html Wśród wielu codziennie używanych przez fizyków programów i środowisk programistycznych Mathematica® firmy Wolfram staje się coraz bardziej popularna.

Transcript of Witam Państwa na wykładzie dotyczącym narzędzi ...users.uj.edu.pl/~golak/NOF18-19/NOF_1.pdf ·...

Witam Państwa na wykładzie

dotyczącym narzędzi

obliczeniowych fizyki !Nazywam się Jacek Golak

Pracuję w Zespole Zakładów Fizyki Jądrowej Instytutu Fizyki UJ

i jestem kierownikiem Zakładu Teorii Układów Jądrowych.

Moja dziedzina to zdecydowanie teoretyczna fizyka jądrowa

Numer pokoju: B2-32

e-mail: [email protected]

strona WWW: http://users.uj.edu.pl/~golak/zestawyNOF.html

Wśród wielu codziennie używanych przez fizyków programów i środowisk

programistycznych Mathematica® firmy Wolfram staje się coraz bardziej

popularna.

Czym jest Mathematica® ?Strona producenta - firmy Wolfram: https://www.wolfram.com/mathematica/

Przedstawiciel firmy Wolfram w Polsce - firma Gambit: http://www.mathematica.pl

2 NOF_1.nb

"Program Mathematica firmy Wolfram Research, Inc. to wszechstronne środowisko

realizacji obliczeń matematycznych, składu dokumentu technicznego i tworzenia

aplikacji.

Mathematica to między innymi obliczenia symboliczne, szybkie obliczenia numeryczne,

dowolna dokładność obliczeń, wygodny interfejs użytkownika, wieloplatformowość,

możliwość równoległych obliczeń, bogate możliwości wizualizacji 2D i 3D oraz język

programowania Wolfram Language"

NOF_1.nb 3

Jak zdobyć licencjęhttp://www.fais.uj.edu.pl/dla-studentow/studia-z-mathematica

Wybrana literaturaLITERATURA DO WYKŁADU I ĆWICZEŃ

(0) Ponieważ wykład będzie w dużej mierze oparty o program Mathematica,

więc polecam wykłady prowadzone wcześniej na naszym wydziale

Na stronie

http://www.fais.uj.edu.pl/dla-studentow/studia-z-mathematica

mają się znaleźć odnośniki do wykładów i ćwiczeń prowadzonych przy pomocy

programu Mathematica na naszym Wydziale

(1) Ponadto wskazany jest dowolny podręcznik wprowadzający w tajniki tego programu.

Na przykład sam podręcznik tego produktu:

(a) Stephen Wolfram,

The Mathematica Book, Wolfram Media, wiele wydań

(b) zestaw poradników

http://www.wolfram.com/learningcenter/tutorialcollection/

(c) bardzo wiele materiału w internecie, skrypty do wykładów, porady

dla początkujących itp.

(2) Klasyczny podręcznik do programowania (ogólnie rozumianego):

Donald E. Knuth,

The art of computer programming,

Addison-Wesley, bardzo wiele wydań

(3) Jak programować w (ANSI) C pokazują m.in. trzy klasyczne pozycje

(a) Brian W. Kernighan, Dennis M. Ritchie,

Język ANSI C. Programowanie (tłumaczenie z angielskiego),

Helion, 2010, wydanie II

4 NOF_1.nb

(b) K. N. King,

C Programming (A Modern Approach), 2nd Edition,

W. N. Norton, 2008

(c) S. Oualline, Jezyk C. Programowanie (tłumaczenie z angielskiego),

Helion, 2003

(4) Jak to się robi w nowszym Fortranie można nauczyć się,

korzystając ze skryptu umieszczonego na stronie instytutowej:

Krzysztof Rościszewski i Romuald Wit

Nauka Fortranu F90/95 przez przykłady dla początkujących,

Skrypt internetowy (wersja z 31 III 2008)

http://www2.if.uj.edu.pl/pl/edukacja/tutoriale/f95skrypt.pdf

(5) Poleciłbym, zwłaszcza mając na uwadze tzw. "projekty zaliczeniowe",

kilka innych pozycji, które pokazują, jak wykorzystać komputer w fizyce:

(a) D. M. Bourg,

Fizyka dla programistów gier,

Helion, 2003.

(b) M. Motyka,

Symulacje komputerowe w fizyce,

Helion, 2002.

(c) Tao Pang,

Metody obliczeniowe w fizyce: fizyka i komputery,

Wydawnictwo Naukowe PWN, Warszawa, 2001.

(d) W. Kinzel, G. Reents,

Physics by Computer: Programming Physical Problems

Using Mathematica and C,

Springer-Verlag, New York, 1997.

(e) G. Baumann, Mathematica in Theoretical Physics:

Selected Examples from Classical Mechanics to Fractals,

TELOS, The Electronic Library of Science, Springer-Verlag, New York, 1992.

(f) A. Romano, R. Lancellotta, A. Marasco, Continuum Mechanics

using Mathematica, Birkhaeuser, Boston, 2006.

(g) Stephen Lynch,

Dynamical Systems with Applications using Mathematica,

Birkhaeuser, Boston, 2007.

(h) Nino Boccara, Essentials of Mathematica with Applications

NOF_1.nb 5

to Mathematics and Physics, Springer, 2007.

(i) Patrick T. Tam, A Physicist's Guide to Mathematica,

Academic Press, 1997.

(j) M.L. Abell, J.P. Braselton, Differential Equations with Mathematica,

Elsevier, 2004.

(6) Wspaniałym źródłem przykładów, jest

"WOLFRAM DEMONSTRATIONS PROJECT", gdzie pokazane są zastosowania środowiska Mathe-

matica w bardzo wielu dziedzinach wiedzy. Dla nas najważniejsze są te dotyczące fizyki.

http://demonstrations.wolfram.com/

Kalkulator2 - 4

-2

2 + 2 (* wyrazenie jest liczone po nacisnieciu Shift+Enter *)

4

1 17 + 5 37

122

629

1 9 - 2 * 5 -9 + 3 76^4

-2 969 233 664

1 935 668 386089

sina

sina

a

a

co⋯

Cossinus

Sin2 + 2 - 17 3 + 12 * 4 * 9^1 3 2 -pierwiastek kwadratowy

Sqrt[2]

CosSin5

3-48 × 32/3

2 - 2

(* tu pojawi sie potegowanie ^ oraz znane funkcje matematyczne *)

6 NOF_1.nb

Nco⋯

Cossinus

Sin2 + 2 - 17 3 + 12 * 4 * 9^1 3 2 -pierwiastek kwadratowy

Sqrt[2], 100

0.72262359173663847729313882858505249802721954622982533331933715251696828732824550892

81418517161379825

2^34 234

8 589 934 592

117

przybliżenie numeryczne

N[%]

7.34182 × 107

2^45 789

35 184 372 088832

789

przybliżenie numeryczne

N35 184 372 088832

789

4.45936 × 1010

(* Mamy do dyspozycji stale matematyczne *)

pi

Pi (* liczba pi *)

π

N[pi

Pi, 200] (* jesli chcemy poznac wartosc

numeryczna pi z niemal dowolna dokladnoscia *)

3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862

803482534211706798214808651328230664709384460955058223172535940812848111745028410270

19385211055596446229489549303820

liczba Eulera

E (* podstawa logarytmu naturalnego *)

N[liczba Eulera

E, 200] (* wartosc numeryczna e z bardzo duza dokladnoscia *)

2.71828182845904523536028747135266249775724709369995957496696762772407663035354759457

138217852516642742746639193200305992181741359662904357290033429526059563073813232862

79434907632338298807531952510190

100! (* silnia *)

93 326 215 443944 152 681 699 238856 266 700 490 715 968264 381 621 468 592 963895 217 599 993 229

915 608 941463 976 156 518 286 253697 920 827 223 758 251185 210 916 864 000 000000 000 000 000

000 000

NOF_1.nb 7

silnia

Factorial[100] (* to samo w innym zapisie *)

93 326 215 443944 152 681 699 238856 266 700 490 715 968264 381 621 468 592 963895 217 599 993 229

915 608 941463 976 156 518 286 253697 920 827 223 758 251185 210 916 864 000 000000 000 000 000

000 000

(* Mathematica podaje DOKLADNY WYNIK, jesli to tylko mozliwe *)

si⋯

Sinpi

Pi 6

1

2

co⋯

Cospi

Pi 4

1

2

tangens

Tan[14] (* tangens *)

Tan[14]

przybliżenie numeryczne

N[%]

7.24461

a =

pierwiastek kwad⋯

Sqrt1 200 +

pierwiastek kwadratowy

Sqrt3 101^5 si⋯

Sinpi

Pi 8

3

101+

1

10 2

5

Cscπ

8

(* przypisalismy zmiennej a pewną wartość

i możemy to wykorzystać w dalszych obliczeniach *)

b = 13 * a - 234 * a^6

133

101+

1

10 2

5

Cscπ

8 - 234

3

101+

1

10 2

30

Cscπ

86

(* Ile to wlasciwie wynosi ? *)

przybliżenie numeryczne

N[b]

0.0288162

przybliżenie numeryczne

N[b, 40] (* Mathematica moze podac bardzo dokładna wartosc numeryczna ! *)

0.02881621841029829137943395805937521052223

Pamiętajmy: mała kropka, duża różnica!

8 NOF_1.nb

sinus

Sin[2]

Sin[2]

sinus

Sin[2.]

0.909297

sinus

Sin[2, 5] (* kolor czerwony oznacza nieprawidłową komendę ! *)

Sin: Sin called with 2 arguments; 1 argument is expected.

Sin[2, 5]

Podstawowa zasada: nazwy komend programu Mathematica (N, Plot, ...) oraz wbu-

dowanych funkcji (sinus, cosinus, tangens, cotangens, ...) zaczynają się od dużych

liter; ich argument (lub argumenty) są zawarte w nawiasach KWADRATOWYCH !

Mathematica zna różne funkcje specjalne i pozwala nimi swobodnie operować.

BARDZO WAZNE DLA FIZYKA !

funkcja Gamma

Gamma[5]

24

funkcja Gamma

Gamma7 3

Gamma7

3

Nfunkcja Gamma

Gamma7

3

1.19064

uprość pełniej

FullSimplifyfunkcja Gamma

Gamma[n] ⩵ n - 1!,należy do

Element[n,zbiór liczb całkowitych

Integers] && n > 0

True

funkcja J Bessela

BesselJ[1, 3]

BesselJ[1, 3]

N[funkcja J Bessela

BesselJ[1, 3]]

0.339059

funkcja P Legendre'a

LegendreP[12, x]

1

1024231 - 18 018 x2 + 225225 x4 - 1 021020 x6 + 2 078505 x8 - 1 939938 x10 + 676039 x12

NOF_1.nb 9

funkcja P Legendre'a

LegendreP[12, 8, x]

654 729 075

8-1 + x2

41 - 42 x2 + 161 x4

harmoniczna funkcja sferyczna Y

SphericalHarmonicY[12, -10, theta, phi]

1

20485 ⅇ-10 ⅈ phi

88 179

π-1 + 23 Cos[theta]2 Sin[theta]10

Uwaga na nazwy funkcji, które składają się z kilku słów (arcus sinus, arcus tangens,

arcus tangens hiperboliczny, ...)

arcus sinus

ArcSin1 2

π

6

?? Arc*

System`

ArcCos ArcCoth ArcCurvature ArcSech ArcSinh

ArcCosh ArcCsc ArcLength ArcSin ArcTan

ArcCot ArcCsch ArcSec

ArcSinDistributio-

n ArcTanh

arcus tangens

ArcTan[1]

π

4

arcus tangens hiperboliczny

ArcTanh99 100

ArcTanh99

100

Dlatego najlepiej jest używać nazw zmiennych i nazw funkcji pisanych małymi literami.

Nie radzę próbować instrukcji typu:

C=123.7;

D=13*Pi;

E=-1;

I=5;

10 NOF_1.nb

Rysowanie wykresów 2Dwyk⋯

Plot[sinus

Sin[x] +

cosinus

Cos[4 * x], {x, 0, 2 *

pi

Pi}]

1 2 3 4 5 6

-1

1

2

wykres

Plot1 1 - x^2, {x, -3, 3}

-3 -2 -1 1 2 3

-4

-2

2

4

wykres

Plot[{x^3,cosinus

Cos[x^4]}, {x, -2, 2}]

-2 -1 1 2

-4

-2

2

4

NOF_1.nb 11

wykres

Plotx 100,funkcja J Bessela

BesselJ[10, x], {x, 5, 25}

10 15 20 25

-0.2

-0.1

0.1

0.2

0.3

wykres trójwymiarowy

Plot3D[x^2 - y^2, {x, 0, 2}, {y, -1, 4}]

Listy(* uporzadkwany zbior elementow, w zasadzie dowolnych *)

{1, 2, 3, x,sinus

Sin[p], {y, z}, "napis"}

{1, 2, 3, x, Sin[p], {y, z}, napis}

(* zmienna ma wartosc, ktora jest lista *)

dziwnalista = {1, x,sinus

Sin[beta], {p, q}, {11, 12, z}}

{1, x, Sin[beta], {p, q}, {11, 12, z}}

12 NOF_1.nb

dziwnalista[[1]] (* pierwszy element listy; koniecznie podwojne nawiasy ! *)

1

(* to samo inaczej *)

część

Part[dziwnalista, 1]

1

dziwnalista[[2]]

x

dziwnalista[[4]] (* ten element sam jest lista ... *)

{p, q}

dziwnalista[[4]][[1]] (* ... i mozna zapytac, jaki jest jego pierwszy element *)

p

(* lista, ktorej elementami sa wykresy *)

{

wyk⋯

Plot[pierwiastek kwadratowy

Sqrt[x], {x, 0, 2}],wyk⋯

Plot[sinus

Sin[5 * x], {x, 0,pi

Pi}],wykres

Plot[x^2, {x, -2, 2}]}

0.5 1.0 1.5 2.0

0.2

0.4

0.6

0.8

1.0

1.2

1.4

,0.5 1.0 1.5 2.0 2.5 3.0

-1.0

-0.5

0.5

1.0

,

-2 -1 1 2

1

2

3

4

Niektóre komendy z definicji dają listy

tabela

Table[n^3, {n, 1, 7}]

{1, 8, 27, 64, 125, 216, 343}

(* teraz dostaniemy liste rysunkow *)

tabela

Table[wykres

Plot[x^n, {x, -2, 2}], {n, 3, 5, 1}]

-2 -1 1 2

-5

5

,

-2 -1 1 2

5

10

15

,-2 -1 1 2

-15

-10

-5

5

10

15

(* prosta lista kolejnych liczb naturalnych od 1 do 10 *)

zakres

Range[10]

{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

(* lista liczb naturalnych od 2 do 10 *)

NOF_1.nb 13

zakres

Range[2, 10]

{2, 3, 4, 5, 6, 7, 8, 9, 10}

(* lista liczb naturalnych od 2 do 10, ale z krokiem 5 *)

zakres

Range[2, 10, 5]

{2, 7}

? Range

Range[imax] generates the list {1, 2,…, imax}.Range[imin, imax] generates the list {imin,…, imax}.

Range[imin, imax, di] uses step di.

?? Range

Range[imax] generates the list {1, 2,…, imax}.Range[imin, imax] generates the list {imin,…, imax}.

Range[imin, imax, di] uses step di.

Attributes[Range] = Listable, Protected

zakres znaków

CharacterRange["A", "Z"]

{A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z}

zakres znaków

CharacterRange["α", "ω"]

{α, β, γ, δ, ε, ζ, η, θ, ι, κ, λ, μ, ν, ξ, ο, π, ρ, ς, σ, τ, υ, φ, χ, ψ, ω}

Z listami można robić różne rzeczy.

Na razie tylko kilka prostych przykładów dla list z liczbami :

l1 = {2, 4, 1, 17, -3, 8, 95, -34, 0}

{2, 4, 1, 17, -3, 8, 95, -34, 0}

l2 =

sortuj

Sort[l1]

{-34, -3, 0, 1, 2, 4, 8, 17, 95}

l3 =

odwróć kolejność

Reverse[l2]

{95, 17, 8, 4, 2, 1, 0, -3, -34}

długość

Length[l3]

9

oblicz sumę

Total[l1]

90

14 NOF_1.nb

średnia arytmetyczna

Mean[l1]

10

maksimum

Max[l1]

95

minimum

Min[l1]

-34

(* Bardzo wazne: mozna zadzialac funkcja na CALA LISTE ! *)

l1^2

{4, 16, 1, 289, 9, 64, 9025, 1156, 0}

sinus

Sin[l1]

{Sin[2], Sin[4], Sin[1], Sin[17], -Sin[3], Sin[8], Sin[95], -Sin[34], 0}

N[cosinus

Cos[l1]]

{-0.416147, -0.653644, 0.540302, -0.275163, -0.989992, -0.1455, 0.730174, -0.84857, 1.}

(* Rozwiazania rownan wystepuja w postaci list !

Odpowiednia skladnia pozwala na wyluskanie wyniku *)

sol =

rozwiąż równanie

Solve[x^2 ⩵ 4, x]

{{x → -2}, {x → 2}}

sol[[1]]

{x → -2}

sol[[2]]

{x → 2}

pełna forma

FullForm[sol]

List[List[Rule[x, -2]], List[Rule[x, 2]]]

(* Jak wydostac wartosc -2, by uzyc ja na przyklad w dalszych rachunkach ? *)

sol[[1]][[1]][[2]]

-2

(* tego mozna juz uzywac jak zwyklej artosci liczbowej i przypisac ja zmiennej *)

x11 = sol[[1]][[1]][[2]]

-2

NOF_1.nb 15

x12 = sol[[2]][[1]][[2]]

2

(* Inny sposob wykorzystuje ogolny zapis PODSTAWIENIA *)

x21 = x /. sol[[1]]

-2

x22 = x /. sol[[2]]

2

=, czy ==, czy może === ?q = 90; (* jeden znak "=" przypisanie zmiennej wartosci *)

1 2 ⩵

si⋯

Sinpi

Pi 6 (* dwa znaki "=" sprawdzenie rownosci liczb lub wyrazen *)

True

rozwiąż równanie

Solve[x^2 + 3 * x + 6 ⩵ 0, x] (* dwa znaki "=" konieczne przy rownaniach *)

x →1

2-3 - ⅈ 15 , x →

1

2-3 + ⅈ 15

x =

tangens

Tan[c];

y =

sinus

Sin[c]

cosinus

Cos[c];

x === y (* sprawdzenie identycznosci wyrazen *)

True

Uzyskiwanie pomocyWiele komend posiada opcje, niekiedy bardzo wiele opcji

16 NOF_1.nb

wyk⋯

Plot[pierwiastek kwadratowy

Sqrt[x], {x, 0, 3},oznaczenia osi

AxesLabel → {"x", "y"},styl grafiki

PlotStyle →

zielony

Green]

0.5 1.0 1.5 2.0 2.5 3.0x

0.5

1.0

1.5

y

opcje

Options[wykres

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, PlotLabels → 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, ScalingFunctions → None, TargetUnits → Automatic,

Ticks → Automatic, TicksStyle → {}, WorkingPrecision → MachinePrecision

? N

N[expr] gives the numerical value of expr.

N[expr, n] attempts to give a result with n-digit precision.

(* krotka informacja *)

? Plot

Plot[ f , {x, xmin, xmax}] generates a plot of f as a function of x from xmin to xmax.Plot[{ f1, f2,…}, {x, xmin, xmax}] plots several functions fi.Plot[{…, w[ fi],…},…] plots fi with features defined by the symbolic wrapper w.

Plot[…, {x} ∈ reg] takes the variable x to be in the geometric region reg.

(* bardziej rozbudowana *)

NOF_1.nb 17

?? Plot

Plot[ f , {x, xmin, xmax}] generates a plot of f as a function of x from xmin to xmax.Plot[{ f1, f2,…}, {x, xmin, xmax}] plots several functions fi.Plot[{…, w[ fi],…},…] plots fi with features defined by the symbolic wrapper w.

Plot[…, {x} ∈ reg] takes the variable x to be in the geometric region reg.

Attributes[Plot] = {HoldAll, Protected, ReadProtected}

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, PlotLabels → 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, ScalingFunctions → None, TargetUnits → Automatic,

Ticks → Automatic, TicksStyle → {}, WorkingPrecision → MachinePrecision

(* pomoc na temat wszystkich funkcji lub polecen zaczynajacych sie odwykres

Plot *)

? Plot*

System`

Plot PlotLabel PlotPoints PlotRegion

Plot3D PlotLabels PlotRange PlotStyle

Plot3Matrix PlotLayout PlotRangeClipping PlotTheme

PlotDivision PlotLegends

PlotRangeClipPlanes-

Style

PlotJoined PlotMarkers PlotRangePadding

Nasze własne funkcjePuszczamy wodze fantazji i definiujemy NOWĄ funkcję

f[x_] :=ta⋯

Tan[si⋯

Sin[cosinus

Cos[x]]] (* to nie jest jedyny sposob, ale na razie wystarczy;

wiecej informacji o tzw. natychmiastowej i opoznionej

defincji funkcji mozna znalezc na mojej stronie w notebooku

natychmiastowa_i_opozniona_definicja_funkcji.nb

*)

18 NOF_1.nb

wykres

Plot[f[x], {x, 0,pi

Pi}]

0.5 1.0 1.5 2.0 2.5 3.0

-1.0

-0.5

0.5

1.0

f[1]

Tan[Sin[Cos[1]]]

przybliżenie numeryczne

N[f[1], 20]

0.56514343133040975986

(* Jeszcze jeden wazny przyklad: funkcje mozna zdefiniowac KAWALKAMI *)

w[x_] :=funkcja odcinkowa

Piecewise[{{x^2, x < 0}, {x, x >= 0}}] (* uwaga na skladnie *)

wykres

Plot[w[x], {x, -2, 2}]

-2 -1 1 2

1

2

3

4

w[0]

0

NOF_1.nb 19

Operator %v = 24 * 5 / 6!

1

6

w = % + 11 (* % zastepuje ostatni uzyskany wynik

niekoniecznie musi to byc ten z poprzedniej komorki! *)

67

6

t1 = %% * 6 (* %% teraz przedostatnio uzyskany wynik *)

1

t2 = %%% * 6

1

(* wynik z komorki numer 62 *)

t3 = %62 * 6

{6 Null}

Nadawanie wartości zmiennym i ich

odwoływanieW jednej komórce można podać wiele komend

a1 = 23

a2 = 3

a3 = 7

23

3

7

Jeśli nie chcemy outputu (na przykład przy instrukcjach przypisania), wtedy dajemy

średniki

b1 = 23; b2 = 3; b3 = 7; b4 = -9.0; b5 = 76; b6 = 0;

wyczyść

Clear[b1 ] ; (* wartosc b1 stanie sie z powrotem nieokreslona *)

20 NOF_1.nb

b1

b1

b2 =.; (* to dziala tak samo. UWAGA na

zmiane koloru nazwy b2 z czarnej na niebieski *)

wyczyść

Clear[b3, b4, b5] (* to wyczysci trzy zmienne naraz *)

(* ponizsza instrukcja wyczysci WSZYSTKIE PRZYPISANE WARTOSCI i DEFINICJE *)

wyczyść wszystko

ClearAll["Global`*"]

a1

a1

f

f

Inne s1 =

sumowanie

Sum[n^2, {n, 1, 10}]

385

(* latwo uzyc opcjiwstaw

Insert →

wejście

Input from above i potem zmienic , by uzyskac ... *)

s2 =

sumowanie

Sum[n^5, {n, 1, 10}]

220 825

(* podobnie mozna wykorzystac output z poprzedniej komorki *)

sumowanie

Sum[ii^3, {ii, 1, n}]

1

4n2 1 + n2

g[n_] :=1

4n2 1 + n2 (* uzylem opcji

wstaw

Insert → Output from above *)

(*

wstaw

Insert → Picture → From file *)

;

NOF_1.nb 21

zmniejsz ostrość

Blur , 5

Jak unikać podstawowych błędów(1) Nawiasy ( ) są używane wyłącznie dla zaznaczenia kolejności operacji. Nie należy

używać { } oraz [ ] w wyrażeniach matematycznych !

(2) Polecenia programu Mathematica oraz wbudowane funkcje mają nazwy zaczyna-

jące się z dużej litery !

(3) Nawiasy kwadratowe są używane dla argumentów poleceń i funkcji !

(4) Nawiasy { } są używane wyłącznie w listach !

(5) Przy definiowaniu własnych funkcji (na razie) trzymać się wzoru: f[x_]:= x^5

(6) Równania (i porównywania) wymagają dwóch znaków ==

Należy zwracać uwagę na kolory !Kolor czerwony oznacza zwykle błędną składnię !

Kolor niebieski zmiennej oznacza, że nie nadano jej żadnej wartości, co może mieć

wpływ na dalsze wykorzystanie tej zmiennej !

22 NOF_1.nb