Bevezetés a Mathematicába

1. előadás

Tóth János, jtoth@math.bme.hu, math.bme.hu/~jtoth

Mi is a Mathematica?

Háttér

Stephen Wolfram -> Wolfram Research, Inc. (NKS,wolphramalpha)
Linux/Windows/Mac verziók elérhetők. A legfrissebb változat a 7.0.

$Version

Mire jó a Mathematica?

- Aritmetikai, szimbolikus és algebrai számítások
- Programnyelv (valójában interpreter) függvények írására, matematikai összefüggések vizsgálatára, azok módosítására és kiértékelésére
- Interaktív környezet numerikus, szimbolikus és grafikus manipulációra
- ,,Közbülső eszköz'' bizonyos adatok előfeldolgozására más programok számára, illetve más programok által szolgáltatott adatok kiértékelésére
- (Interaktív) Prezentáció készítésére, házifeladatok megoldására (Help|About)

A program felépítése

Két fő rész: Amit látunk (maga a jegyzetfüzet (notebook), a menüsor és a paletták) az ún. kezelőfelület (front end), az itt bevitt inputadatokat adja át a magnak (kernel). Ezek különböző programok, akár különböző számítógépen is futhatnak (többprocesszoros gépek előnyben!)
Akár több (15) Mathematica futtatható párhuzamosan, ha a licencünk ezt engedi.

A kezdetek

Súgó

Online és offline help (F1);
Súgó: Welcome screen|Getting started
Virtual Book 
Wolfram Demonstrations (konkrét forráskódok olvasása)

Hyperlink["Wolfram Demonstrations (konkrét forráskódok olvasása)","http://demonstrations.wolfram.com"]

Hyperlink["Video","http://www.wolfram.com/broadcast/screencasts/tour/?buildid=1213965"]

Megéri...

Indítás és működés

A Mathematicát a parancssorba a "mathematica" parancs beírásával indítjuk.
	Linux alatt NUM LOCK probléma??
A mentett állományok .nb kiterjesztést kapnak (NoteBook)
Kiértékelés:  <SHIFT>+<ENTER> vagy <NUM-ENTER> 
Az <ENTER> a szokásos beviteli sortörés

3+2

Az első kiértékelés hosszabb időbe telik, ekkor töltődik be a mag a memóriába.

Menüsor és paletták

FourierD

Edit|ExtendSelection; CompleteSelection; Preferences; Print|PDF Printer
Insert|InputFromAbove; Typesetting;  Table/Matrix; Hyperlink
Format|Style; StyleSheet; OptionInspector; TextJustification
Cell|Diveide; Merge; DeleteAllOutput
Graphics
Evaluation|EvaluateNotebook; QuitKernel|Local; Abort
Palettes|Other
Window/Magnification; TileWindowsWide/Tall; FullScreen
Help|FunctionNavigator; VirtualBook; F1; WelcomeScreen

Az első példák

Számolgatás

45654+45846

27 10.3

2^256

(2^\[Placeholder])

Törtek szimbolikus kezelése

46489894/46456+45468/465

FactorInteger[589489496]

Prime[14341]

PrimeQ[44444]

Tetszőleges pontosságú numerikus kiértékelés

N[π,1700]

π+2.

Komplex számok és speciális függvények

I,E,Pi

(((2+3I))^5)

Conjugate[4+I]

Zeta[2]

Kalkulus és függvényábrázolás

(∫_1^2)((x^2)+Sin[x])\[DifferentialD]x

D[Cos[x](Sqrt[1-(x^2)]),x]

Manipulate[Plot[{Sin[t x],Cos[x]},{x,-π,π}],{t,0,10,1}]

Animate[Plot[{Sin[t x],Cos[x]},{x,-π,π}],{t,0,10,1}]

Animate[Plot[Exp[-a t],{t,0,3},PlotRange->1],{a,1,5}]

Animate[Plot[t((x^2)-1)+(1-t)(-(x^2)),{x,-1,1},Axes->False,
PlotLabel->Row[{"Félév ",Style["\neleje",GrayLevel[t]],Style["\nvége",GrayLevel[1-t]]}],Epilog->{Circle[{0,1},3],Disk[{1,2},.3],Disk[{-1,2},.3],Line[{{0,0.6},{0,1.6}}]},PlotRange->{{-3,4},{-3,4}},AspectRatio->1],{t,0,1},AnimationRunning->False]

Gráfok és mátrixok

G=(({{1, 2, 1, 0}, {2, 0, 1, 1}, {1, 1, 0, 1}, {0, 1, 1, 0}}));
MatrixForm[Inverse[G]]

<<Combinatorica`

ShowGraph[FromAdjacencyMatrix[G]]

ShowGraph[RandomGraph[10,1/2]]

Sudoku tábla (a súgóból). Az üres négyzet a helytartó (PlaceHolder) karakter <ESC>pl<ESC>

\[Placeholder]

Grid[Table[\[Placeholder], {9}, {9}],
ItemSize->{2,2},Dividers ->  {{{Thickness[2],True,True}},{{Thickness[2],True,True}}},
Background ->  {Automatic,Automatic,
Flatten[Table[{i, j} ->  If[EvenQ[Plus @@ Floor[{i - 1, j - 1}/3]], 
Darker[White], White], {i, 9}, {j, 9}]]}]

Szintaxis

A függvénynevek

A beépített függvénynevek Nagy betűvel kezdődnek; a többtagú parancsok értelmes szavanként, mint pl

FactorInteger[120]

Az argumentumok szögletes zárójelbe kerülnek (bracket)
Vesszővel választjuk el a függvényargumentumokat, pontosvessző elnyomja az eredmény kiíratását.

Számtan

Majdnem kézenfekvő; a szorzásjelet nem kell kiírni, de az egyértelműség miatt szóközt kell tenni

x=2;y=3;xy=15;
{x,y,x y,xy,3 4,3+4,0*x,x+z+z,6/2}

Figyeljük meg az automatikus egyszerűsítéseket

Zárójelek és speciális karakterek

Négy (öt..., sőt hat...) féle zárójel van:
	- Csoportosítás, a precedencia kikerülése 	2*(3+5)
	- Függvényargumentum		f[x,y]
	- Lista (nem rendezett Multiset)	v={1,2,3,4,2,2,2,5}
	- Listaelem				v[[1]]

v={1,22,3,3,-1,2,2}

v[[3]]

∞

?Plot

??Plot

Az ESC billentyű (feloldás)
	Görög betűk				α,β,ω,...
	Speciális szimbólumok		e,ϵ,∞,d,i,...
	Listaelem (ez az ötödik zárójel)	v[[2]]

A súgó karakterei:
	?Function				súgó a Functionről
	??Function				részletes súgó a Functionről
	Joker karakterek:			@, *
	
Mi történt?					%, %%, ...

Kommentár, magyarázat			(* ez itt egy komment *)

?*Plot*

?Sqrt

??Sqrt

x+2

%+3

%+3

%%%

(* Ez a magyarázat illusztrálja a hatodik zárójeltípust *)

Típusok

Az objektumok 0. eleme az objektum típusa

{5[[0]],π[[0]],(1/2)[[0]],I[[0]],{1,2,3}[[0]]}

FullForm[{1,2,3}]

{Head[5],Head[π]}

Értékadás vs. függvények (Késleltetés)

Három rossz megoldás, és amit valójában használunk:
1. Egyetlen pontban definiált (paraméteres) függvény azonnali értékadással

Clear[f,x];
f[x]=x+Random[]

{f[1],f[2],f[x],f[2]}

x=4;

f[x]

2. Mindenütt értelmezett függvény (részben) azonnali értékadással

Clear[f,x];
f[x_]=x+Random[]

{f[1],f[2],f[x],f[2]}

3. Egyetlen pontban definiált függvény késleltetett kiértékeléssel

Clear[f,x];
f[x]:=x+Random[]

{f[1],f[2],f[x],f[2]}

x=4;

f[x]

f[x]

4. És amit használunk: Mindenütt értelmezett függvény késleletett kiértékeléssel

Clear[f,x];
f[x_]:=x+Random[]

f[x]

{f[1],f[2],f[x],f[2]}

További megadási módok (a Function tartalmazza a késleletetést, az x lokális változó benne, ezt jelzi a zöld színe).

Clear[f,x];
f=Function[x,(x^2)+2]

{f[1],f[2],f[x],f[2]}

x=2;
{f[1],f[2],f[x],f[2]}

Ugyanaz, csak gyorsírással (tiszta függvények, slotok) - identitásfüggvény, illetve vetítések

f=(((#1)^2)+2#2+1)&

{f[1],f[2,2]}

{f[a],f[b,c]}

Az Equal- SameQ függvények illetve a Rule objektum

Az Equal kiértékelésre vár, a SameQ nem.

Clear[x,y]
Equal[x,y]

SameQ[x,y]

x===y

Clear[x];sol=NSolve[(x^2)+6x==2,{x}]

{sol[[1]],sol[[1,1]],sol[[1,1,0]],sol[[1,1,1]],sol[[1,1,2]]}

x/.sol[[1]]

Gyorsírás

@	Prefix parancs/művelet (pl. a függvény ilyen) írásmód, argumentum kijelölés illetve opcionális paraméterek nélkül
	Hasznos, ha nem szeretnénk egy formula végét megkeresni.
	Ne halmozzuk!

N[π]
N@π

//	Postfix művelet (mint a transzponálás)

π//N

~	az infix művelet

Clear[x,y]
x_~egyesites~y_:=Union[x,y]

{1,3,2}~egyesites~{3,5,4}

A Union[] függvény tehát rendezett halmazt csinál a listából: 
	elvesznek az ismételt elemek;
	az automatikus rendezés miatt költséges.

/. (teljes nevén ReplaceAll[])

MatrixForm[(({{a, b}, {c, d}}))/.b->c/.d->b/.c->1]

x+(y^3)+(1/x)/.x->2

/@ (vagyis a Map[])

Map[k, {3,4,5}]

k[{3,4,5}]

k/@{5,6,7}
Factorial/@{5,6,7}

@@ (vagyis az Apply[], vagyis a Head cseréje)

FullForm[{1,2,3}]

{1,2,3}
Times[1,2,3]

Apply[Times,{1,2,3}]

Times@@{1,2,3}

A listák

A Mathematica-ban ,,majdnem'' minden objektum (általánosított) lista (gondoljunk a típusra, mint 0-dik listaelemre).

v={1,2,3}

A mátrix listák listája (a sorok a listaelemek, amelyek elemei a sor elemei)

m={{1,2,3},{3,4,I}}

m//MatrixForm

A listaelemek sorszámozása 1-től kezdődik (a 0-dik elem a típus, ami nem vizualizálódik expliciten).
Ügyeljünk az esetleges zárójelezésre.

{m[[2,3]],m[[2]][[3]],(m[[2]])[[3]]}

Listák megadása
	Kézzel	{a,b,c}

l={1,2,3}

A Table[] függvény

Table[(i^2),{i,9}]
Table[(i^2),{i,5,9}]
Table[(i^2),{i,5,9,1/2}]

A Range[] függvény

Range[10]
Range[2,10]
Range[{2,10}]

A Range egy listázható függvény

Attributes[Range]

A Logaritmus szintén

Log[Range[5]]

Array[Factorial[#]+2&,4]
Array[#^2&,{5}]

A mátrix listák listája, tehát a Fourier-mátrix az alábbi sorral nyerhető:

n=4;
m=(1/(Sqrt[n]))Table[Table[(E^(((2π I)/n)i j)),{i,1,n}],{j,1,n}];
MatrixForm@m
Clear[n]

Vagy:

n=5;
MatrixForm[(1/(Sqrt[n]))Table[(E^(((2π I)/n)i j)),{i,1,n},{j,1,n}]]
Clear[n]

Listaműveletek:

mylist = Range[14]

Drop[mylist, 3]
Drop[mylist, {3}]

Take[mylist, 3]
Take[mylist, {3}]

Append[mylist, 3]

Prepend[mylist, 3]

Ez levágja a végét

Partition[mylist, 3]

Alapvető számítások

Algebra

Egy polinom

poly=(1+x)(1+x+(x^2)+(x^3))

Expand[poly]

Factor[poly]

sols=Solve[poly==0]

poly/.x->2

poly/.sols[[1]]

Coefficient[poly,(x^3)]

CoefficientList[poly,x]

Simplify[poly]

Vigyázat: lassú

FullSimplify[poly]

Törtek

quot=Together[1/(1+x)+2/(1-x)]

Apart[quot]

Numerator[quot]

Denominator[quot]

Egyenletek megoldása

Solve[{x+y==2,x y+2==0},{x,y}]

Minden megoldás

Solve[(x^2)+2x+1==(((x+1))^2),x]

Nincs megoldás

Solve[{x+2==1,x≠-1},x]

NSolve[{x+y==2,x y+2==0},{x,y}]

FindRoot[x-Cos[x]==0,{x,0}]

Reduce[a (x^2)+b x+c==0,x]

Reduce[{a+b+c==0,a b+a c+b c==0,a b c==1},{a,b,c}]//LogicalExpand

Kalkulus

expr=2+3x+x^2-Log[x];

D[expr,x]

D[%,x]

Integrate[expr,x]

Integrate[expr,{x,1,2}]

Integrate[(x/(Log[x])),x]

Numerikus integrálás

NIntegrate[(x/(Log[x])),{x,2,3}]

N[Integrate[(x/(Log[x])),{x,2,3}]]

NIntegrate[(x/(Log[x])),{x,2,3},WorkingPrecision->25,AccuracyGoal->20]

Options[NIntegrate]

Improprius integrálok

Integrate[(1/(x^2)), {x, 1, Infinity}]

Differenciálegyenletek

A deriváltat vesszővel jelöljük. A C egy védett függvény, a C[1] az első szabad konstans.

DSolve[y'[x] + y[x] == 1, y[x], x]

DSolve[y'[x] + y[x] == 1, y, x]

NDSolve[{y'[x] == y[x], y[0] == 1}, y, {x,0,2}]

rhs1={(k1-k2 s)r,(k1-k2 r)s};
param1={k1->1,k2->1};StreamPlot[rhs1/.param1,{r,0,3},{s,0,3}]

Határérték és feltételes szélsőérték keresés

Limit[Sin[x]/x,  x->0]

Limit[1/x, x->0, Direction-> 1]

Minimize[(Sqrt[(x^2)+((((x^2)+1))^2)]),x]

Minimize[{(Sqrt[(x^2)+((((x^2)+1))^2)]),1<x<2},x]

Lineáris algebra

m//MatrixForm

Det[m]

{Eigenvalues[m],Eigenvectors[m]}

Tr[m]

MatrixPower[m,4]//MatrixForm

Vigyázat, a Trace[] teljesen más

Függvényábrázolás

A Plot[] parancs

Plot[(x^2)Sin[x],{x,1,2π}]

Plot[{(x^2)Sin[x],10Cos[x]},{x,1,2π},PlotRange->{-30,30},AspectRatio->1,Frame->True]

Mi a probléma a következő paranccsal?

Plot[{(x^3), D[(x^3),x]}, {x, -2,2}]

A Plot[] késlelteti az első argumentumának a kiértékelését. (Gyakorlatilag arról van szó, hogy a D[] függvény az x szimbólum helyett annak értékét kapja az ábrázolás során. Nincs értelme tehát egy konstans szerint deriválni).

Plot[Evaluate[{(x^3), D[(x^3),x]}], {x, -2,2}]

Az Evaluate parancs azonnal kiértékeli az első argumentumot. A Plot ezen viselkedése az attribútumai között található:

Attributes[Plot]

Itt grafikonok egy listája látható:

Table[Plot[(x^i),{x,-2,2},PlotRange->{-2,2}],{i,0,3}]

A ListPlot[]

A ListPlot a természetes számokhoz rendeli az argumentumaként megadott értékeket.

data=Table[Prime[i],{i,1,50}];

{ListPlot[data],ListLinePlot[data]}

A Show különböző grafikai objektumokat jelenít meg egyszerre:

Show[{ListPlot[data],ListLinePlot[data]}]

h[x_]=Fit[data, {1, x, x^2}, x]

Show[{ListPlot[data],Plot[h[x],{x,1,50}]}]

xy = Table[{j, j^2}, {j, -3, 3, .2}]

ListPlot[xy]

3Ds megjelenítés és szeletek

Plot3D[Tooltip[Sin[x y],"felület"], {x, 0, 3}, {y, 0, 2.5}]

ParametricPlot3D[ Tooltip[{Cos[u](2+ Cos[v]), (2+Cos[v])Sin[u], Sin[v]}], {u, -π, π}, {v, -π, π},Axes->None,Mesh->None]

Diszkrét(ebb) változatok.

data = Table[2(x^2)+(y^2)-10, {x, -3, 3, 1}, {y, -3, 3, 1}];

ListPlot3D[data]

A szintvonalak értéke tooltipként megjelenik.

ContourPlot[2(x^2)+6(y^2)-30,{x,-3,3},{y,-3,3}]

ListContourPlot[data]

ListDensityPlot[data,InterpolationOrder->0]

Külső kapcsolatok

LaTeX

TeXForm[m]

Import/Export: Fileok beolvasása, vagy eredmények fileba írása

ed=ExampleData[{"TestImage","Lena"}]

ListContourPlot[Reverse[ExampleData[{"TestImage","Lena"},"GrayLevels"]],ColorFunction->"Pastel",MaxPlotPoints->100]

r=Import["ExampleData/rose.gif"]

ImageHistogram[r, Appearance->"Separated"]

ImageHistogram[ed, Appearance->"Separated"]

Manipulate[ImageAdjust[ed,c],{c,{0,0},{1,1}}]

Export["test.gif",Integrate[1/(x^4-1),x]]

Import["test.gif"]

Maga a NoteBook, mint kiadványszerkesztő program (házi feladatok készítése)

Mire nem alkalmas a Mathematica?

Egyes számításigényes, nagy volumenű feladatok megoldására

Lassabb, mint egy optimalizált C-kód
Okok:
	Nem önálló programnyelv
	Túlságosan robosztus, nem alkalmazás-specifikus
	Zárt forrású (nem tudni valójában mit is csinál, és jól csinálja-e) - ami már bevált! De a csomagok olvashatók.
De: párhuzamos számítás is van
Továbbá:

Hyperlink["összevetések","http://www.wolfram.com/products/mathematica/analysis/"]

Nem írja meg helyetted a ZHt.

Tézisek

Megtervezték

Alapvető adatstruktúra az általánosított lista. A típusok száma néhány ezer - ha akarod.

l={a,b,c,d,e};

Reverse[l]

Take[l, 2]

Drop[l,-1]

Reverse[f[a,b,c]]

ArrayPlot[Reverse[CellularAutomaton[30,{{1},0},20]]]

Take[a+b+c+d+e+f,3]

Drop[a+b+c+d+e+f,3]

Paradigmák

Procedurális, listakezelő, funkcionális, logikai (mintaillesztés) stb. stb.
Mindegyik megvan (oktatás), de nem vagyunk (túlságosan) Sróf mesterek.

Tiltott, tűrt és támogatott függvények (Felejtendő, felejthető, felkarolandó)

Külön engedéllyel használható szavak listája

Az alábbi szavak használatához külön engedély kell (aki ,,tud" programozni, az különösen veszélyeztetett):

* Goto és Label (az engedélyt nem fogom megadni)
    * Break
    * Continue
    * Do
    * For
    * Length
    * Print
    * Return

Jól gondolja meg azt is valaki, hogy a Table vagy a Length függvényre van-e szüksége. Ezek helyett funkcionális programozási struktúrákat, mintaillesztést, listakezelést, akármit használhatunk, de nem szedünk szét egy matematikai objektumot elemeire azért, hogy azután összerakjuk, hasonlóan (de szigorúbban, mert lehet és mert érdemes) ahhoz, ahogyan lineáris algebrában amíg lehet, nem használunk koordinátákat. A Mathematica a funkanalra emlékeztet: nem teszi fölöslegessé az alsóbb szintű dolgokat, de elkerülhetővé teszi őket, amikor ez lehetséges.

Kérdés (haladottabbakhoz): Mondjanak meggyőző példát, amikor valóban szükség van a fentiek közül valamelyikre.

Írjon progamot, amely a FactorInteger függvény eredményéből előállítja a bemenetet, azaz az argumentumot! Több megoldás, ha lehet, de szép legyen!

1. megoldás

szam=FactorInteger[120]
megoldas=1;
For[i=1,i≤Length[szam],i++,megoldas=megoldas*((szam[[i,1]])^(szam[[i,2]]))]
Print[megoldas]

2. megoldás

szam=FactorInteger[120]
megoldas=1
i=1;While[i≤Length[szam],megoldas=megoldas*((szam[[i,1]])^(szam[[i,2]]));i++];Print[megoldas]

3. megoldás

szam=FactorInteger[120]
hatvany[a_,b_]:=(a^b)
(∏_(i=1)^(Length[szam]))hatvany[szam[[i,1]],szam[[i,2]]]

4. megoldás

szam=FactorInteger[120]
hatvany[a_,b_]:=(a^b)
megoldas=1
For[i=1, i≤Length[szam],i++,megoldas =megoldas*hatvany[szam[[i,1]],szam[[i,2]]]]
Print[megoldas]

5. megoldás

(∏_(i=1)^(Length[l]))Det[DiagonalMatrix[Table[l[[i,1]],{j,1,l[[i,2]]}]]]

FactorInteger[(2^163)-1]

φ=FactorInteger[180]

6. megoldás

l={{2,3},{3,1},{5,1}};
i=1;
k=1;
Do[k=k* ((l[[i,1]])^(l[[i,2]])),{i,1,Length[l],1}];k

Bajok: gyűjtőrekesz, ciklusváltozó, Length és Print. Egyik se kell.

ClearAll[a,b,c,d,e,f];
(({a,b,c})^d)

(a^({d,e,f}))

(({a,b,c})^({d,e,f}))

Times[a,b]

FullForm[{(a^d),(b^e),(c^f)}]

Apply[Times,{(a^d),(b^e),(c^f)}]

φ=FactorInteger[(2^163)-1]

Transpose[φ]

Apply[Times,((Transpose[φ][[1]])^(Transpose[φ][[2]]))]

Log[2,%+1]

Hány sort írsz le egy nap?

Akkor milyen sorokat érdemes leírni?
Fejleszteni Mathematicában, aztán lehet átírni, ha muszáj. 
Atlantai kerékpárstadion. 
Parallel ToolKit

NumberCrunching

Benchmark[], és még:

The SIAM 100-Digit Challenge: A Competitive Adventure in High-Accuracy Numerical Computing

(Papp Dávid, Juhász Sanyi)

Stan Wagon
	
In February 2002, L. N. Trefethen of Oxford University, in conjunction with SIAM, sponsored a worldwide contest in which the goal was to get 10 digits of the answer to each of 10 problems in numerical computing. The contest attracted a lot of attention: there were entries from 94 teams in 25 countries, and 20 of those teams (including two Mathematica-based teams: one from WRI and one from Macalester College) achieved perfect scores of 100 digits.

Mathematica's numerical capabilities (especially NIntegrate, NMinimize, and Interval) were especially well suited to some of these problems, and in this talk I will discuss the 10 problems and the quickest way to solve them in Mathematica.

Subsidiary challenges were (1) the computation of the 10 answers to 10,000 digits and (2) the proof of correctness of digits. The three coauthors of a recent book on the contest (F. Bornemann, D. Laurie, and J. Waldvogel) and I have been successful in obtaining 10000 digits for nine of the 10 problems and in using interval arithmetic to prove the correctness of the results in seven of the 10 cases.

Matematikusoknak való

Megtervezték. Egysorosok. Általános függvényekkel speciális feladatok

Ismét arról, hogy általános vs. spec. nyelv * Hagyományos nyelvű programozónak is nagy könyvtára van.

Mandelbrot

mandelbrot=Compile[{x,y,lim},Module[{z,ct=0},
z=x+I y;
While[Abs[z]<2.0∧ct<lim,z=z^2+(x+I y);++ct];ct]
];
Timing[DensityPlot[-mandelbrot[x,y,50],{x,-2.,1.},{y,-1.5,1.5},PlotPoints->50,Mesh->False,ColorFunction->"SunsetColors"]]

Iteráció, rekurzió

NestList[ff,(Subscript[x, 0]),3]

NestList[Cos,1.0,3]

FixedPointList[Cos,1.0]

{a,b,c,a,c}/.{a->2}

g[n_/;EvenQ[n]]:=(n/2)
g[n_]:=3n+1
Most[FixedPointList[g,37,SameTest->(#1==1&)]]

ReplaceAll[{a,b,c,a,c},{a->2}]

rules={Log[x_ y_]:>Log[x]+Log[y],Log[x_^k_]:>k Log[x]};

Log[Sqrt[a(b c^d)^e]]//.rules

FullForm[Hold[Log[Sqrt[a(b c^d)^e]]//.rules]]

Hold[ReplaceRepeated[Log[Sqrt[Times[a,Power[Times[b,Power[c,d]],e]]]],rules]]

?ReplaceRepeated

1.//.x_->Cos[x]

Listakezelés (mint a polimerizáció)

ClearAll[g,s,d,e];
Map[g,{s,d,e}]

ClearAll[mymap,s,d,e];
mymap[f_,l_List]:=mymap[f,{},l]

mymap[gg,{s,d,e}]

mymap[f_,{x___},{y_,z___}]:=mymap[f,{x,f[y]},{z}]

mymap[gg,{s,d,e}]

mymap[_,l_,{}]:=l

mymap[gg,{s,d,e}]

Információ, kitekintés

Az érdeklõdõ olvasó számára szeretnénk még további segítséget nyújtani. Az általános iskola és a középiskola közötti átmenetet segíti a nemzetközi összefogással készült kilencnyelvű

Hyperlink["Matematikai fogalomtár","http://mbuttons.bolyai.hu/"]

Megmégezis:

Hyperlink["Speciális függvények","http://functions.wolfram.com"]

Jó kiegészítõ az angol

Hyperlink["Angol Wiki","http://hu.wikipedia.org/wiki/Kezdõlap"]

és a magyar

Hyperlink["Magyar Wiki","http://en.wikipedia.org/wiki/Main\_Page"]

nyelvű wikipédia is. És a házi? Szabad gazdagítani:

Egyértelműen felsõfokú értelmezõ szótárként használható az Eric Weisstein által szerkesztett lap:

Hyperlink["Lexikon: Eric Weisstein","http://mathworld.wolfram.com"]

Michiel Hazewinkel a szerkesztője a Springer által a legkülönbözőbb formában megjelentetett, Encyclopaedia of Mathematics című -- eredetileg orosz nyelvû, ötkötetes -- kiadványnak, amely szintén felsőfokú:

Hyperlink["De: Math. enciklopédia is van","http://eom.springer.de"]

Magunk is jól hasznosítottuk, ezért talán az olvasónak is hasznára válhat az alábbi néhány szótár:

Hyperlink["rengeteg angol egynyelvû szótár egy helyen","http://www.onelook.com/"]

egy félkész, de sok szót tartalmazó angol-magyar és magyar-angol szótár:

Hyperlink["félkész","http://mek.oszk.hu/00000/00076/html/index.htm"]

Hyperlink["idegen szavak szótára (Magyarító könyvecske)","http://www.net.klte.hu/{\mytilde}keresofi/mke/r.htm"]

és természetesen mindenek előtt a SZTAKI szintén nem tökéletes, de nagyon hasznos soknyelvű szótára:

Hyperlink["SZTAKI","http://szotar.sztaki.hu/index.hu.jhtml"]

És mindenek után meg előtt:

Hyperlink["Mathematica TJ","http://www.math.bme.hu/~jtoth/Mma/mma.html"]

Hogyan, mikor?

Mindenképpen ezzel érdemes kísérletezni, ha kell, át lehet írni.
Numerikus+szimbolikus számítás együtt
In the act of tearing something apart, you lose its meaning. (Paul van Riper)
Mint a funkanal. (numerikus, sztoch., diffegy.)

Olvasnivaló, 1. adag

Kezdőknek

Hyperlink["Nemazabush","http://www.theatlantic.com/doc/194507/bush"]

Házi feladatok

4. Tessék értelmesen játszadozni ezzel:

Hyperlink["Cesaro","http://demonstrations.wolfram.com/CesaroSummation/"]