18
1. Wst p i Przegl d W 21 stuleciu komutery dramatycznie zmieniaj wszystkie aspekty naszego ycia. Matematyka jest tak e w ród nich, i to zarówno sposób jej uprawiania jak i rodzaj problemów które nas interesuj . Mo liwo robienia oblicze o wiele bardziej skomplikowanych ni to by o wyobra alne bez pomocy komputerów otworzy a dawniej nie osi galne rejony bada dla ka dego wyposa onego w komputer, odpowiednie oprogramowanie i troch wiedzy matematycznej. Doprowadzi o to do powstania pot nych programów dostosowanych do wszelkich aspektów matematyki obliczeniowej: symbolicznych manipu- lacji, oblicze numerycznych i wizualizacji (w cznie z interaktywn ). Jednym z czo owych programów tego typu jest Mathematica firmy Wolfram Research. Oczywi cie Mathematica jest nie tylko doskona ym narz dziem do badania i studiowania nowych dzia ów matematyki obliczeniowej ale tak e mo e by bardzo pomocna w tradycyjnych. Celem tego wst pnego rozdzia u jest zademonstrowanie niektórych mo liwo ci tego niezwyk ego programu. Dla tego celu u yli my szereg przyk adów, z których nie które s dzie em autorów tego tekstu, niektóre s zaporzyczone z oficjalnej dokumentacji Mathematiki a niektóre zebrany z ró nych swobodnie dost pnych róde na internecie. Podstawowe informacje o Mathematice G ówna stona na webie G ówna storna z aktualn informacj , po ytecznymi programami, dodatkami, centrum edukacji i dokumentacj jest www.wolfram.com. St d mo na tak e pobra darmowy CDF-Player, tysi ce demonstracji z kodem ród owym i edukacyjne filmy. Mathematica jest jednym z najpot niejszych i najbardziej zaawansowanych systemów do symbol- icznych i numerycznych oblicze i wizualizacji. Ale jest tak e czym wi cej. W pierwszym okresie istnienia Mathematiki Wolfram Research opisywa j jako “system do matematyki komputerowej”ale niej zosta o to zmienione na “ jedyna platforma deweloperska w pe nie integurj ca obliczenia w ca kowitych przep ywach pracy” (“ the only development platform fully integrating computation into complete work-flows” ). Innymi s owy, w wizji Wolfram Research Mathematica ma by uniwersalnym narz dziem programistycznym w którym wszelkiego rodzaju obliczenia (tak e symboliczne) s inte- graln cze ci systemu. Na przyk ad, Mathematica jest bardzo zaawansowanym narz dziem do sk adu do druku, które tworzy dokumenty matematyczne o jako ci porównywalnej z LaT E X, ale równocze nie, te dokumenty mog zawiera ywe” formu y matematyczne i “ yw ” grafik , w których zmiana peramterów czy innych danych powoduje automatyczne przelicznie i regeneracj wizualnego obiektu. Dokumenty zawieraj ce ywe, interaktywne oblicznia mog by wys ane do innej osoby: wspó pracownika, studenta lub profe- sora - nie koniecznie posiadaj ceo program Mathematica lub umiej tno jego obs ugiwania, który mo e zmieni parametry i wykonwya w asne obliczenia. W pewnym sensie jeszcze dalej id cym rozwini ciem tej idei jest dzia aj cy na Webie program Wolfram|Alpha, którego “motorem” jest Mathemat- ica. Pod wzgl dem ca o ci umiej tno ci Mathematica nie ma dzi porównywalnego rywala. Je li jednak ograniczymy si tylko to oblicze pewnego typu, np. algebry symbolicznej czy numeryki to istniej inne programy (np. Maple, MatLab itd) o podobnych mo liwo ciach. Jako program matematyczny, Mathemat- ica jest programem dla celów ogólnych. Ma wysoko rozwini te umiej tno ci robienia zarówno symbol- icznych jak i numerycznych oblicze . Ma bardzo du o wyspecializowanych funkcji z ró nych dziedzin matemayki (np. algebry wielomianowej, teorii grafów, ró na niczkowych, teorii prawdopodobienstwa itp.), matematyki stosowanej (np. statystyki i matematyki finansowej) i innych dziedzin (np. cyfrowe przetwarzanie obrazów, cyfrowe przetwarzanie sygna ów itp.). W niektórych dziedzinach (szeczególnie w matematyce “czystej” ) istniej programy “wyspecializowane” (np. MAGMA, Singular, Macauley2) które potrafi wykonywa niektóre oblicznia które w Mathematice nie s zaimplementowane i wymagaj

1. Wstep i Przeglad.nb

Embed Size (px)

Citation preview

Page 1: 1. Wstep i Przeglad.nb

1. Wst p i Przegl d

W 21 stuleciu komutery dramatycznie zmieniaj wszystkie aspekty naszego ycia. Matematyka jest

tak e w ród nich, i to zarówno sposób jej uprawiania jak i rodzaj problemów które nas interesuj .

Mo liwo robienia oblicze o wiele bardziej skomplikowanych ni to by o wyobra alne bez pomocy

komputerów otworzy a dawniej nie osi galne rejony bada dla ka dego wyposa onego w komputer,

odpowiednie oprogramowanie i troch wiedzy matematycznej. Doprowadzi o to do powstania pot nych

programów dostosowanych do wszelkich aspektów matematyki obliczeniowej: symbolicznych manipu-

lacji, oblicze numerycznych i wizualizacji (w cznie z interaktywn ). Jednym z czo owych programów

tego typu jest Mathematica firmy Wolfram Research. Oczywi cie Mathematica jest nie tylko doskona ym

narz dziem do badania i studiowania nowych dzia ów matematyki obliczeniowej ale tak e mo e by

bardzo pomocna w tradycyjnych. Celem tego wst pnego rozdzia u jest zademonstrowanie niektórych

mo liwo ci tego niezwyk ego programu. Dla tego celu u yli my szereg przyk adów, z których nie które

s dzie em autorów tego tekstu, niektóre s zaporzyczone z oficjalnej dokumentacji Mathematiki a

niektóre zebrany z ró nych swobodnie dost pnych róde na internecie.

Podstawowe informacje o Mathematice

� G ówna stona na webie

G ówna storna z aktualn informacj , po ytecznymi programami, dodatkami, centrum edukacji

i dokumentacj jest www.wolfram.com. St d mo na tak e pobra darmowy CDF-Player, tysi ce

demonstracji z kodem ród owym i edukacyjne filmy.

Mathematica jest jednym z najpot niejszych i najbardziej zaawansowanych systemów do symbol-

icznych i numerycznych oblicze i wizualizacji. Ale jest tak e czym wi cej. W pierwszym okresie

istnienia Mathematiki Wolfram Research opisywa j jako “system do matematyki komputerowej” ale

pó niej zosta o to zmienione na “jedyna platforma deweloperska w pe nie integurj ca obliczenia w

ca kowitych przep ywach pracy” (“the only development platform fully integrating computation into

complete work-flows”). Innymi s owy, w wizji Wolfram Research Mathematica ma by uniwersalnym

narz dziem programistycznym w którym wszelkiego rodzaju obliczenia (tak e symboliczne) s inte-

graln cze ci systemu.

Na przyk ad, Mathematica jest bardzo zaawansowanym narz dziem do sk adu do druku, które tworzy

dokumenty matematyczne o jako ci porównywalnej z LaTEX, ale równocze nie, te dokumenty mog

zawiera “ywe” formu y matematyczne i “yw ” grafik , w których zmiana peramterów czy innych

danych powoduje automatyczne przelicznie i regeneracj wizualnego obiektu. Dokumenty zawieraj ce

ywe, interaktywne oblicznia mog by wys ane do innej osoby: wspó pracownika, studenta lub profe-

sora - nie koniecznie posiadaj ceo program Mathematica lub umiej tno jego obs ugiwania, który

mo e zmieni parametry i wykonwya w asne obliczenia. W pewnym sensie jeszcze dalej id cym

rozwini ciem tej idei jest dzia aj cy na Webie program Wolfram|Alpha, którego “motorem” jest Mathemat-

ica.

Pod wzgl dem ca o ci umiej tno ci Mathematica nie ma dzi porównywalnego rywala. Je li jednak

ograniczymy si tylko to oblicze pewnego typu, np. algebry symbolicznej czy numeryki to istniej inne

programy (np. Maple, MatLab itd) o podobnych mo liwo ciach. Jako program matematyczny, Mathemat-

ica jest programem dla celów ogólnych. Ma wysoko rozwini te umiej tno ci robienia zarówno symbol-

icznych jak i numerycznych oblicze . Ma bardzo du o wyspecializowanych funkcji z ró nych dziedzin

matemayki (np. algebry wielomianowej, teorii grafów, ró na ró niczkowych, teorii prawdopodobienstwa

itp.), matematyki stosowanej (np. statystyki i matematyki finansowej) i innych dziedzin (np. cyfrowe

przetwarzanie obrazów, cyfrowe przetwarzanie sygna ów itp.). W niektórych dziedzinach (szeczególnie

w matematyce “czystej”) istniej programy “wyspecializowane” (np. MAGMA, Singular, Macauley2) które

potrafi wykonywa niektóre oblicznia które w Mathematice nie s zaimplementowane i wymagaj

w asnego programowania (co prawie zawsze oznacza e b d dzia a znacznie wolniej).

Page 2: 1. Wstep i Przeglad.nb

Pod wzgl dem ca o ci umiej tno ci Mathematica nie ma dzi porównywalnego rywala. Je li jednak

ograniczymy si tylko to oblicze pewnego typu, np. algebry symbolicznej czy numeryki to istniej inne

programy (np. Maple, MatLab itd) o podobnych mo liwo ciach. Jako program matematyczny, Mathemat-

ica jest programem dla celów ogólnych. Ma wysoko rozwini te umiej tno ci robienia zarówno symbol-

icznych jak i numerycznych oblicze . Ma bardzo du o wyspecializowanych funkcji z ró nych dziedzin

matemayki (np. algebry wielomianowej, teorii grafów, ró na ró niczkowych, teorii prawdopodobienstwa

itp.), matematyki stosowanej (np. statystyki i matematyki finansowej) i innych dziedzin (np. cyfrowe

przetwarzanie obrazów, cyfrowe przetwarzanie sygna ów itp.). W niektórych dziedzinach (szeczególnie

w matematyce “czystej”) istniej programy “wyspecializowane” (np. MAGMA, Singular, Macauley2) które

potrafi wykonywa niektóre oblicznia które w Mathematice nie s zaimplementowane i wymagaj

w asnego programowania (co prawie zawsze oznacza e b d dzia a znacznie wolniej).

Oficjalnym dystrybutorem Mathematiki w polsce jest firma Gambit <http://www.mathematica.pl>.

� Portal Wolfram Research i zwi zane z nim projekty

Wolfram Research ma wiele stron internetowych zwi zanych z Mathematik i spokrewnionymi projek-

tami.

ã Mathworld <http://mathworld.wolfram.com/>

MathWorld jest bardzo po ytecznym i obszernym ród em informacji z ró nych dziedzin matematyki,

zawieraj cym definicje, twierdzenia, przyk ady itp. Czesto s one ilustrowane w za czonych plikach w

formacie Mathematiki.

ã Wolfram Alpha <http://www.wolframalpha.com/>

Wolfram Alpha - Mathematica (i wi cej!) dla ka dego!

ã Wolfram Demonstrations Project <http://demonstrations.wolfram.com>

Projekt zawiera ogromn ilo interaktywnych demonstracji z ró nych dziedzin matematyki i nauki a

tak e sztuk , gry itd. Ka da demonstracj mo na pobra w formie interaktywnego pliku CDF - który

mo ne by w pe ni u ywany przy pomocy darmowego CDF Playera (oczywi cie nie potrzebnego osob

posiadaj cym najowsz wersj Mathematiki). Bardzo po yteczn rzecz jest dost pno kodu

ród owego ka dej demonstracji. Mo e on by pobrany i swobodnie modyfikowny przez ka dego kto ma

dost p do Mathematiki (CDF Player nie nadaje si do tego celu). Uwa ne studiowanie i modifikownie

kodu demonstracji jest jedn z najlepszych metod nauczenia si programowania w Mathematice.

ã Program edukacyjny

Wolfram Research prowadzi ekstensywny program edukacyjny. Aby si zarejestowa i uczestniczy w

online seminariach Wolfram Educational Group (WEG) nale y wej na stron :

<http://www.wolfram.com/services/education/calendar.cgi>

Na wiecie, w tym tak e w Polsce, jest wiele konferencji ró nego typu po wi conych Mathematice i jej

zastosowaniom. Na Uniwersytecie Warszawskim ICM (centrum interdysciplinarne) prowadzi kursy w

Mathematice.

ã The Mathematica Journal

The Mathematica Journal <http://www.mathematica-journal.com/> jest publikacj online po wi con

zastosowaniom Mathematiki w pracy badawczej i dydaktycznej.

� Inne strony zwi zane z Mathematic

Doskona ym i darmowym wst pem do programowania w Mathematica jest ksi ka Leonida Shifrina:

http://www.mathprogramming-intro.org/

Tak e Mathematica Guidebooks <http://www.mathematicaguidebooks.org/index.shtml> dostarczj

bogatego zbioru przyk adów spektaklarnych zastosowa Mathematiki, szczegulnie w fizyce ale nie tylko.

Niestety, “Guidebooks” nie s w pe ni kompatibilne z wersjami Mathematiki pó niejszymi ni 5, wi c

nadaj si najlepiej dla do wiadczonych u ytkowników programu którzy sami potrafi zrobi konieczne

zmiany w programach.

Jednym z najlepszych sposobów zdobycia ekspertyzy w Mathematice jest udzia w grupie dysusyjnej

group zwanej MathGroup:

http://groups.google.com/group/comp.soft-sys.math.mathematica/topics?pli=1

Mo na tu zadawa pytania dotycz ce ka dego aspektu Mathematiki i otrzyma wiele, cz ste bardzo

ró norodnych, odpowiedzi od ekspertów w Mathematice, w cznie z pracownikami Wolfram Research.

Czasem mo na nawet dosta rozwi zanie zadania matematycznego, cho z regu u to forum nie

powinno s u y temu celowi.

Podobny cel ale w innym stylu jest realizowany przez stron Mathematiki na Stack Exchange:

http://mathematica.stackexchange.com .

Podobnie jak inne strony Stack Exchange, nie jest to “grupa dyskusyjna” jak MathGroup forum na

którym zadaje si pytania i uzyskuje odpowiedzi. U ytkownicy zadaj pytania i odpowiadaj na pytnia

innych u ytkowników, uzyskuj c za “punktystatusowe”, “przywileje” i “odznaki” (badges). (Mo na tak e

dosta punkty ujemne).

Wielu expertów w Mathematice, w czie z pracownikami Wolfram Research, bierze udzia tak e w tym

forum. G ówn przewag tego forum nad MathGroup jest du o bardziej nowoczesny interfejs - na

przyk ad, mo na tu atwo umieszcza grafik i formu y matematyczne (MathGroup zezwala tylko na

posty w formacie ASCII). Trzba pami ta e tematyka Stack Exchange jest bardziej ograniczona i

dotyczy prawie wy cznie aspektów programistycznych.

2 1. Wstep i Przeglad.nb

Page 3: 1. Wstep i Przeglad.nb

Doskona ym i darmowym wst pem do programowania w Mathematica jest ksi ka Leonida Shifrina:

http://www.mathprogramming-intro.org/

Tak e Mathematica Guidebooks <http://www.mathematicaguidebooks.org/index.shtml> dostarczj

bogatego zbioru przyk adów spektaklarnych zastosowa Mathematiki, szczegulnie w fizyce ale nie tylko.

Niestety, “Guidebooks” nie s w pe ni kompatibilne z wersjami Mathematiki pó niejszymi ni 5, wi c

nadaj si najlepiej dla do wiadczonych u ytkowników programu którzy sami potrafi zrobi konieczne

zmiany w programach.

Jednym z najlepszych sposobów zdobycia ekspertyzy w Mathematice jest udzia w grupie dysusyjnej

group zwanej MathGroup:

http://groups.google.com/group/comp.soft-sys.math.mathematica/topics?pli=1

Mo na tu zadawa pytania dotycz ce ka dego aspektu Mathematiki i otrzyma wiele, cz ste bardzo

ró norodnych, odpowiedzi od ekspertów w Mathematice, w cznie z pracownikami Wolfram Research.

Czasem mo na nawet dosta rozwi zanie zadania matematycznego, cho z regu u to forum nie

powinno s u y temu celowi.

Podobny cel ale w innym stylu jest realizowany przez stron Mathematiki na Stack Exchange:

http://mathematica.stackexchange.com .

Podobnie jak inne strony Stack Exchange, nie jest to “grupa dyskusyjna” jak MathGroup forum na

którym zadaje si pytania i uzyskuje odpowiedzi. U ytkownicy zadaj pytania i odpowiadaj na pytnia

innych u ytkowników, uzyskuj c za “punktystatusowe”, “przywileje” i “odznaki” (badges). (Mo na tak e

dosta punkty ujemne).

Wielu expertów w Mathematice, w czie z pracownikami Wolfram Research, bierze udzia tak e w tym

forum. G ówn przewag tego forum nad MathGroup jest du o bardziej nowoczesny interfejs - na

przyk ad, mo na tu atwo umieszcza grafik i formu y matematyczne (MathGroup zezwala tylko na

posty w formacie ASCII). Trzba pami ta e tematyka Stack Exchange jest bardziej ograniczona i

dotyczy prawie wy cznie aspektów programistycznych.

� Mathics

Dla tych którzy nie maj dost pu do Mathematici i dla których Wolfram|Alpha jest nie wystarczaj cy (na

przyk ad, dla osób które chc programowa ) dobr alternatyw jest

http://www.mathics.org

Mathics jest darmowym systemem do oblicze i programowania u ywaj cym tego samego sytnaksu co

Mathematica. Mathics zawiera tylko bardzo ma y podzbiór funkcji matematycznych Mathematiki ale

dobrze nadaje si do wiczenia j zyka programaistycznego. W pewnym sensie Mathics i Wolfram|Al-

pha uzupe niaj si : Wolfram|Alpha ma dost p do prawie wszystkich zaawansowanych funkcji matematy-

cznych Mathematiki ale nie mo na w nim programowa - w Mathics mo na programowa u ywaj c tego

samego j zyka co w Mathematice ale ilo wbudowanych funkcji jest ograniczona (niektóre bardziej

zaawansowane opieraj si na innym darmowym programie Sage).

Oczywi cie naszym celem nie jest opisanie wsystkich zasobów wiedzy o i matria ów zwi zanych z

Mathematik na Internecie. By oby to zadaniem nie mo liwym do wykonania, nie tylko z powodu wielkiei

ilo ci ju istniej cych stron i portali ale tak e dla tego e ich ilo ci gle si zwi ksza. Tym niemniej

mamy nadziej e informacje zamieszczone powy ej stanowi dobr podstaw dla ka dego prag-

n cego uzyka podstawow wiedz o Mathematica a tak e dla osób które ju tak wiedz posiadaj ale

chc osi gn c wy szy poziom umiej tno ci u ywania tego programu.

1. Wstep i Przeglad.nb 3

Page 4: 1. Wstep i Przeglad.nb

Wybrane przyk ady mo liwo ci Mathematiki.

� Zastosowania obliczeniowe

ã Wbudowane funkcje

Wiele zada (tak e wzi tych “z ycia”) mo na rozwi za po prostu u ywaj c jednej z ogromnej ilo ci

“wbudowanych funkcji” w Mathematice (s owo “funkcja” jest u yte w tym kontek cie w nieco innym

znaczniu ni w matematyce). W ród najbardziej po ytecznych funkcji s Solve i Reduce. S to bardzo

ogólne funkcje u ywaj ce ogromn ilo zaawansowanych algroytmów do “rozwi zywania” i

“redukowania” ró nego typy równa i nierówno ci. Nale y tu od razu zauwa y e mówi c o

“rozwi zywaniu” mamy na my li poszukiwanie dok adnych rozwi za a nie rozwi za przybli onych. W

tym sensie rozwi zaniami równania x2 � 2 s 2 i - 2

SolveAx2

� 2, xE

99x ® - 2 =, 9x ® 2 ==

a nie ich warto ci przybli one. Mathematica, oczywi cie, zawiera tak e funkcje s u ce do rowi zywa-

nia równa metodami numerycznymi, np.

NSolveAx2

� 2, xE

88x ® -1.41421<, 8x ® 1.41421<<

FindRoot@x^2 � 2, 8x, 1<D

8x ® 1.41421<

ale na razie nie b dziemy si nimi zajmowali. Nale y jednak rozumie e to e Solve i Reduce daj

“dok adne” rozwi zania nie oznacza e u ywaj one wy cznie metod symbolicznych. Jednym z

najbardziej interesuj cych zjawisk w nowoczesnej “algeberze komputerowej” jest integracja oblicze

symbolicznych i numerycznych która doprowadzi a do powstania tak zwanych metod symboliczno-

numerycznych (symbolic-numeric computation). Tradycyjnie metody symboliczne prowadzi y do

wyników dok adnych ale kosztem czasoch onno ci i pami cio-ch onno ci oblicze natomiast du o

szybsze metody numeryczne dawa y przybli one rozwi zania problemów. Metodody numeryczno-

syboliczne s szybsze i wymagaj mniej pami ci od metod czysto symbolicznych ale daj wyniki

dok adne (w sensie który b dzie opisany ponizej). Metody symboliczno-numeryczne odgrywaj kluc-

zow rol w niektórych najciekawszych i najbardziej zaskakuj cych umiej tno ciach funkcji Reduce i

Solve.

W wersjach Mathematiki wcze niejszych ni 8 funkcje Reduce i Solve ró ni y si zarówno formatem

wyników jak i rodzajem problemów do których mog y by stosowane. We wczesnych wersjach Mathe-

matiki Solve rozwi zwya a w zasadzie tylko równania algebraiczne (wielomianowe), natomiast Reduce

“redukowa a” równania i nierówno ci ka dego typu dla którego Mathematica potrafi a znale

rozwi zanie dok adne i pe ne. W wersji 8 ró nice mi dzy tymi funkcjami s znacznie mniejsze bo Solve

u ywa wiele z metod które dawniej u ywane by y tylko przez Reduce. W dalszej cz ci tego przegl du

b dziemy u ywali g ównie Reduce, zauwa my jednak jedn przewag jak Solve ma w niektórych

sytuacjach. “Przwaga” ta wynka z tego e Reduce stara si da pe ne rozwi zanie problemu, gdy

tymczasem Solve mo e dawa rozw zania cz ciowe. Dla ilustracji rozwa my skomplikowane równanie

nie algebraiczne:

4 1. Wstep i Przeglad.nb

Page 5: 1. Wstep i Przeglad.nb

eq = Hx - 1L Iãx

- sinIx2MM � 0;

Widzimy e jeden pierwiastek Hx � 1L mo na znale bardzo atwo i rzeczywi cie Solve nie ma z nim

problemu:

Solve@eq, xD

Solve::ifun : Inverse functions are being used by Solve, so some

solutions may not be found; use Reduce for complete solution information. �

88x ® 1<<

Funkcja Solve znalaz a ten oczywisty pierwiastek i poinfomrowa a nas e rozwi zanie nie jest zupe ne

sugeruj c u ycie Reduce w celu jego znalezienia. Sugestia niestety nie dzia a:

Reduce@eq, xD

Reduce::nsmet : This system cannot be solved with the methods available to Reduce. �

ReduceAH-1 + xL Iãx

- SinAx2EM � 0, xE

Reduce poinformawa a nas e to równanie nie da si rozwi za metodami u ywanymi przez Reduce.

Nie ma w tym nic dziwnego bo równanie ma niesko czenie wiele pierwiastków. Je li jednak

ograniczymy si tylko do sko czonego przedzia u liczb rzeczywistych to Reduce znajdzie wszystkie

pierwiastki,np.

Reduce@eq && -5 £ x £ 5, xD

x � 1 ÈÈ x � RootA9ãð1

- SinAð12E &, -4.6884910030858183218=E ÈÈ

x � RootA9ãð1

- SinAð12E &, -4.3431040066841947632=E ÈÈ

x � RootA9ãð1

- SinAð12E &, -3.96092370573400909647=E ÈÈ

x � RootA9ãð1

- SinAð12E &, -3.5489616873949269105=E ÈÈ

x � RootA9ãð1

- SinAð12E &, -3.0623492963902211268=E ÈÈ

x � RootA9ãð1

- SinAð12E &, -2.5226022668657542118=E ÈÈ

x � RootA9ãð1

- SinAð12E &, -1.72096821991807098028=E ÈÈ

x � RootA9ãð1

- SinAð12E &, -0.71496896918965620139=E

Nie b dziemy teraz próbowali t umaczy dok adnie co to znaczy, ale zauwa my e:

1. Reduce znalaz a 9 pierwiastków le acych pomi dzy -5 i 5.

2. Jest to pe ne rozwi zanie problemu, to znaczy mo na to traktowa jako dowód e jest dok adne 5

takich pierwiastków.

3. Odpowied jest podana w formie sumy logicznej równa elementarnych (a nie listy regu jak w przy-

padku Solve) - a wi c równanie zosta o zredukowane - zgodnie z nazw funkcji.

Przejd my teraz do rzeczy bardziej podstawowych - równa wielomianowych. Zacznijmy od równania

trzeciego stopnia, które Mathematica potrafi rozwi za przy pomocy s awnej formu y del Ferro z

szestnastego wieku (czesto nazywanej formu Tartaglii):

1. Wstep i Przeglad.nb 5

Page 6: 1. Wstep i Przeglad.nb

Reduce@x^3 - x + 1 � 0, x, Cubics ® TrueD

x � -2

3 J9 - 69 N3

-

1

2J9 - 69 N3

32�3

ë

x � K1 + ä 3 O1

2

K9 - 69 O ^ H1 �3L � I2 ´ 32�3M +

1 - ä 3

22�3

3 J9 - 69 N3

ë

x � K1 - ä 3 O1

2

K9 - 69 O ^ H1 �3L � I2 ´ 32�3M +

1 + ä 3

22�3

3 J9 - 69 N3

Mo emy tak e otrzyma tylko pierwiastek rzeczywisty:

Reduce@x^3 - x + 1 � 0, x, Reals, Cubics ® TrueD

x � -2

3 I9 - 69 M

1�3

-

J 1

2I9 - 69 MN

1�3

32�3

Oczywi cie mo emy obliczy jego warto z dowoln precyzj , na przyk ad do 30 miejsc dziesi tnych:

N@%, 30D

x � -1.32471795724474602596090885448

Ze s awnych twierdze Abela i Galois wiadomo e rowi za tego typu (wyra onych za pomoc pierwiast-

ników) nie mo na poda dla ogólnych równa stopni 5 i wy ej. Oczywi cie Mathematica potrafi

rozwi za takie równania dok adnie:

Reduce@x^5 - x + 1 � 0, xD

x � RootA1 - ð1 + ð15&, 1E ÈÈ x � RootA1 - ð1 + ð1

5&, 2E ÈÈ

x � RootA1 - ð1 + ð15&, 3E ÈÈ x � RootA1 - ð1 + ð1

5&, 4E ÈÈ x � RootA1 - ð1 + ð1

5&, 5E

Ka dy z pierwiastków opisany jest przez dwa parametry: jego wielomian minimalny (wielomian najm-

nieszego stopnia o ca kowitych wspó czynnikach którego pierwiastkiem jest dany pierwiastek) oraz

liczba naturalna pomi dzy 1 i stopniem wielomianu, która odpowiada pewnemu uporz dkowaniu pier-

wiastków. To uporz dkowanie jest nietrywialnym rezultatem algorytmu zwanego “izolacj pier-

wiastków”. Po izolacji pierwiastków mo emy obliczy je do dowolnej precyzji:

6 1. Wstep i Przeglad.nb

Page 7: 1. Wstep i Przeglad.nb

NARootA1 - ð1 + ð15

&, 1E, 50E

-1.1673039782614186842560458998548421807205603715255

Reduce mo na u ywa do rozwi zywania problemów ca kowicie symbolicznych. Na przyk ad, mo emy

atwo uzyska znany warunek na to eby równanie kwadratowe a x2

+ b x + c � 0 mia o dwa równe

pierwiastki:

ReduceA$x,a x

2+b x+c�0"

y,a y2+b y+c�0

x � y, 8a, b, c<E

Ha � 0 && b ¹ 0L ÈÈ a ¹ 0 && c �b2

4 a

To oczywi cie ka dy zna z algebry szkolnej ale ju dla równania 3 stopnia uzyskanie podobnego wyniku

nie jest takie atwe:

ReduceAExistsA8x, y<, x^3 + a x2

+ b* x + c == 0 && y^3 + a y2

+ b* y + c == 0,

ForAllAz, z^3 + a z2

+ b* z + c == 0, z == x ÈÈ z == yEE, 8b, c<E

b �a2

3

&& c �a3

27

ÈÈ c �1

27

J-2 a3

+ 9 a b - 2 -Ia6 - 9 a4b + 27 a

2b2

- 27 b3MN ÈÈ

c �1

27

J-2 a3

+ 9 a b + 2 -Ia6 - 9 a4b + 27 a

2b2

- 27 b3MN && a

2- 3 b ¹ 0 ÈÈ

c �1

27

J-2 a3

+ 9 a b - 2 -Ia6 - 9 a4b + 27 a

2b2

- 27 b3MN ÈÈ

c �1

27

J-2 a3

+ 9 a b + 2 -Ia6 - 9 a4b + 27 a

2b2

- 27 b3MN &&

3 a6

- 25 a4b + 63 a

2b2

- 45 b3

+ 18 a3c - 54 a b c ¹ 0 ÈÈ

c �1

27

J-2 a3

+ 9 a b - 2 -Ia6 - 9 a4b + 27 a

2b2

- 27 b3MN ÈÈ

c �1

27

J-2 a3

+ 9 a b + 2 -Ia6 - 9 a4b + 27 a

2b2

- 27 b3MN &&

a7

- 9 a5b + 26 a

3b2

- 24 a b3

+ 6 a4c - 27 a

2b c + 27 b

2c ¹ 0 ÈÈ Hb � 0 && c � 0 && a ¹ 0L

Spróbujmy teraz równanie trygonometryczne. Na pocz tek na sko czonym przedziale, gdzie ma

sko czenie wiele pierwiastków:

Reduce@Cos@xD � Sin@xD && 0 < x < 2 Pi, xD �� FullSimplify

4 x � Π ê 4 x � 5 Π

(FullSimplify s u y do upraszczania odpowiedzi. Prosz sprawdzi co si stanie je li nie u yjemy tej

funkcji).

Nast pnie rozwi my (lub rzaczej zredukujmy) to równanie na ca ej osi rzeczywistej:

1. Wstep i Przeglad.nb 7

Page 8: 1. Wstep i Przeglad.nb

Reduce@Cos@xD � Sin@xD, xD �� FullSimplify

c1 Î Z ì HΠ H8 c1 - 3L � 4 x ê 8 Π c1 + Π � 4 xL

Spróbujmy teraz co du o trudniejszego: równanie którego, mog oby si wydawa , rozwi za nie

sposób. Ograniczymy si do rozwi za le cych wewn trz okr gu o promieniu 1 z centrum w 0.

Reduce@Cos@Cos@xDD � Sin@Sin@xDD && Abs@xD < 1, xD

x � Root@8Cos@Cos@ð1DD - Sin@Sin@ð1DD &,

0.7853981633974483096156608458198757210492923498437764552437-

0.4663385348278305845718632848784660354269560408360176474839 ä<D ÈÈx � Root@8Cos@Cos@ð1DD - Sin@Sin@ð1DD &,

0.7853981633974483096156608458198757210492923498437764552437+

0.4663385348278305845718632848784660354269560408360176474839 ä<D

Wygl da to jak rozwi zanie przybli one ale w rzeczywisto ci jest ono “dok adne”. Mo na je obliczy z

dowoln precyzj :

N@%, 20D

x � 0.78539816339744830962 - 0.46633853482783058457 ä ÈÈx � 0.78539816339744830962 + 0.46633853482783058457 ä

Mo emy tak e udowodni e nasze równanie nie ma rozwi za rzeczywistych:

Reduce@Cos@Cos@xDD � Sin@Sin@xDD, x, RealsD

False

Reduce potrafi rozwi za wiele równa i i nierówno ci ró nego typu. Na przyk ad to jest równanie w

dziedzinie liczb ca kowitych:

Reduce@n! + n � 726 && n > 0, n, IntegersD

n � 6

Nast pne przyk ady s wzi te z pyta wys anych do internetowego forum MathGroup. Pierwsze by o

wys ane w styczniu 2011 przez Iwana Smirnowa:

Czy isniej nietrywialne rozwi zania równania diofantycznego

x10

+ y10

+ z10

= t2

gdzie, jak zawsze w równaniach diofantyjskich, rozwi zania powinny by liczbami ca kowitymi.

Odpowied nie jest znana i Mathematica nie potrafi tego problemu rozwi za ale bardzo atwo mo na

udowodni e nie ma rozwi za dla t £ 104:

Reduce@x^10 + y^10 + z^10 � t^2 && 0 £ x && 0 < y && x £ y && y £ z && 1 £ t £ 10^4,

8x, y, z, t<, IntegersD �� Timing

82.024212, False<

(Funkcja Timing podaje czas zaj ty przez oblicznie i jest oczywi cie zale ny od szybko ci danego

komputera). Zmieniaj c niektóre domy lne parametry Mathematiki, mo na atwo udowodni e nie ma

rozwi za nietrywialnych dla 0 £ t £ 1010.

8 1. Wstep i Przeglad.nb

Page 9: 1. Wstep i Przeglad.nb

(Funkcja Timing podaje czas zaj ty przez oblicznie i jest oczywi cie zale ny od szybko ci danego

komputera). Zmieniaj c niektóre domy lne parametry Mathematiki, mo na atwo udowodni e nie ma

rozwi za nietrywialnych dla 0 £ t £ 1010.

Programowanie

Dot d rozwa ali my problemy które daj si rozwi za przez zastosowanie jedej wbudowanej funkcji

Mathematiki (Reduce). Wiele problemów które pojawiaj si “w yciu” oczywi cie nie s tego typu. W

takich sytuacjach musimy sami napisa odpowiedni program (albo kogo poprosi eby to dla nas

zrobi ). Nast pny przyk ad znowu pochodzi z MathGroup:

Znajd wszytkie trójki ró nych dwu cyfrowych liczb pierwszych takie e

i) rednia ka dej z dwóch liczb w trójce jest liczb pierwsz

ii) rednia wszystkich trzech liczb w trójce jest liczb pierwsz

W Mathematice kod rozwi zuj cy ten problem mo na napisa na wiele sposobów. Na przyk ad:

ls1 = Select@Range@11, 99D, PrimeQD;

ls2 = Tuples@ls1, 83<D;

ls3 = DeleteCases@DeleteDuplicates@Sort �� ls2D, 8___, x_, ___, x_, ___<D;

Select@ls3, And �� PrimeQ �� Mean �� Partition@ð1, 2, 1, 81, 1<D &D

8811, 23, 71<, 811, 23, 83<, 811, 47, 71<,813, 61, 73<, 817, 29, 89<, 823, 59, 83<, 829, 53, 89<<

Dok adne wyt umacznie tego kodu wymaga oby wi cej wiedzy o programowaniu w Mathematice ni

mo emy za o y w tym momencie ale chcielby my zwróci uwag na u ycie ca ego szeregu wbu-

dowanych funkcji, które w tradycyjnych j zykach programistycznych wymaga yby osobnego programowa-

nia. Na przyk ad, w pierwszej linijce wybieramy z listy liczb pomi dzy 11 i 99 wszystkie liczby pierwsze,

przy pomocy wbudowanych funkcji Select i PrimeQ. W drugiej linijce tworzymy list wszyskich trójek

liczb pierwszych. W trzeciej linijce usuwamy wszyskie “powtórki” (przy pomocy takich funkcji jak Sort,

DeleteDuplicates i DeleteCases i na koniec z trójek które nam pozosta y wybieramy te które spe niaj

warunki zadania.

Oczywi ce nazwy ls1, ls2 ... i operacje przypisywania s ca kowicie zbyteczne ale dla wielu osób kod

napisany w ten sposób jest bardziej czytelny. Mo na go, oczywi cie, przepisa w formie:

Select@DeleteCases@DeleteDuplicates@Sort �� Tuples@Select@Range@11, 99D, PrimeQD, 83<DD,

8___, x_, ___, x_, ___<D, And �� PrimeQ �� Mean �� Partition@ð1, 2, 1, 81, 1<D &D

Jest to tak zwany “jednoliniowiec”. Jednoliniowce maj swoich wielbicieli i jest nawet coroczny konkurs

na najbardziej intryguj cego jednoliniowca.

(Notowniki z konkursu z roku 2012 mo na znale tu: https://www.wolfram.com/training/special-event/-

mathematica-experts-live-one-liner-competition-2012/ ) Dla zwyk ych miertelników prawdopodobnie

wesja kodu z nazwami i przypisywaniem jest prawdopodobnie atwiejsza do odczytania.

We my jeszcze jeden przyk ad zadania z MathGroup:

Jaki jest naj atwiejszy sposób znalezienia d ugo ci powtarzaj cego si cykla w dziesi tkowym rozwini -

ciu u amka? Na przyk ad 1/7 = 0,14285714285714285714 a wi c dlugo cykla (142857) jest 6.

Jak zwykle w Mathematice podstaw wydajnego programowania jest dobra znajomo wbudowanych

funkcji a tak e pewna znajomo matematyki. W tym przypadku nie ma wbodowanej funkcji która

bezpo rednio dawa aby odpowied na nasz problem ale s dwie blisko z nim zwi zane funkcje: Inte-

gerExponent i MultiplicativeOrder. Za ich pomoc mo emy zdefiniowa funkcj która b dzie oblicza a

d ugo cykla:

1. Wstep i Przeglad.nb 9

Page 10: 1. Wstep i Przeglad.nb

Jak zwykle w Mathematice podstaw wydajnego programowania jest dobra znajomo wbudowanych

funkcji a tak e pewna znajomo matematyki. W tym przypadku nie ma wbodowanej funkcji która

bezpo rednio dawa aby odpowied na nasz problem ale s dwie blisko z nim zwi zane funkcje: Inte-

gerExponent i MultiplicativeOrder. Za ich pomoc mo emy zdefiniowa funkcj która b dzie oblicza a

d ugo cykla:

lengthOfCycle@x_RationalD :=

Module@8n = Denominator@xD, a, b<, a = IntegerExponent@n, 2D;

b = IntegerExponent@n, 5D; MultiplicativeOrder@10, n � H2^a * 5^bLDD

Teraz widzimy e:

lengthOfCycle@1 � 7D

6

daje poprawn odpowied .

Jedn z przyczyn dla których dobra znajomo wbudowanych funkcji jest tak bardzo wa na w pro-

gramowaniu w Mathematice jest fakt e takie funkcje dzia aj du o szybciej ni równowa ne funkcje

napisane przez u ytkowników - równie szybko lub nawet szybciej ni podobne funkcje napisane w

kompilowanych j zykach takich jak C. Tym niemniej “zwyk e” programy napisane w Mathematice tak e

cz sto mog by du o przy pieszone poprzez tak zwan kompilacj . Podamy teraz przyk ad programu

który bez kompilacji dzia a dosy wolno ale kompilacja powoduje jego dramatyczne przyspieszenie.

Program konstruuje spiral Ulama <http://mathworld.wolfram.com/PrimeSpiral.html> i autorstwa Daniela

Lichtblau z Wolfram Reseach

ulamSpiral = Compile@88len, _Integer<<, Module@8dat = Range@lenD, x = 0, y = 0, shift = 1, i = 0, j = 0, xincr = 81, 0, -1, 0<,

yincr = 80, 1, 0, -1<, shiftincr = 80, 1, 0, 1<<, Select@Table@i++;

If@i ³ shift, i = 1; shift += shiftincr@@Mod@j, 4, 1DDD; j++;D;

x += xincr@@Mod@j, 4, 1DDD; y += yincr@@Mod@j, 4, 1DDD;

If@PrimeQ@dat@@numDDD, 8x, y<, 81000, 1000<D, 8num, len<D,

Abs@First@ðDD < 1000 &DD, 88PrimeQ@_D, True False<<D;

Stworzenie spirali z 60,000 punktów zajmuje tylko u amek sekundy:

ul = ulamSpiral@60 000D; �� Timing