Upload
tranthuy
View
225
Download
1
Embed Size (px)
Citation preview
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).
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
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
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
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
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
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
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
(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
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