Mathematica en la Educación

Diego M. Oviedo Salcedo

University of Illinois at Urbana-Champaign
Universidad Pontificia Bolivariana, Bucarmanga

Indice

Introducción

Creando Interfaces

Visualización

Programando con Mathematica

Adquisión Integrada de Datos

Expandiendo a Mathematica

Consideraciones Finales

Introducción

Mathematica como una calculadora

Para multiplicar números de cualquier tamaño

123 444444444444444444444444444444444444

Mathematica es muy fácil de utilizar.

1. Mayúsculas en los nombres de funciones
2.  [  ] - lo que se desea colacular
3.  {  } - listas o rangos
4. Inicie un nueva celda o párrafo  /  presione "shift|enter" - para evaluar los cálculos

Prime[1000]

Sin[5]

N[Sin[5],10]

Plot[Sin[x],{x,-2π,2π}]

Se puede explorar el comportamiento matemático por medio de un modelo

Manipulate = crea modelos funcionales en Mathematica

Manipulate[Plot[amp trig[freq x],{x,-2π,2π}],{freq,1,6},{amp,1,5},{trig,{ Sin,Cos, Tan,Csc,Cot,Sec}}]

Manipulate[Plot[Sin[frequency x],{x,-2π,2π}],{frequency,1,5}]

Introducción

Mathematica como una calculadora simbólica

Para realizar aritmética simbólica

Expand[(((a+b))^30)]

o cálculo simbólico

(∂_(x,y))((Sin[x y])^5)

∫((Sin[x])^4) ((Cos[x])^3)\[DifferentialD]x

o encontrar solución formal a una ecuación

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

Solve[Cos[x]==0,x]

Plot[Cos[x],{x,-2π,2π}]

"Reduce" es una alternativa para encontrar soluciones generales

Reduce[Cos[x]==0,x]

se pueden resolver ecuaciones diferenciales. Por ejemplo, resolver y graficar el desplazamiento de un péndulo lineal con amortiguamiento

disp=DSolve[{y''[x]+damp y'[x]+40 y[x]==0,y[0]==1,y'[0]==(1/3)},y,x]

Manipulate[Plot[ReplaceAll[y[x],disp]/.damp->amort,{x,0,4},PlotRange->{-1,1}],{amort,0,3}]

Introducción

Mathematica es una herramienta numérica altamente eficiente

Mathematica se puede acoplar de manera muy eficiente a muchas librerias matématicas optimizadas para diversos procesos, tales como (GMP, LAPACK, BLAS, ...).

Mathematica toma ventaja de sus propias capacidades simbólicas dentro de los cálculos numéricos.

Con sus superfunciones, Mathematica simbólicalmente preprocesa y selecciona la función más adecuada para el problema en consideración.

Introducción

Algebra Lineal

Construyendo Matrices

Se pueden crear matrices explícitamente o programáticamente.

(Subscript[matrix, 1])={{1,2},{-3,5}}

(Subscript[matrix, 1])//MatrixForm

(Subscript[matrix, 2])=Table[i*j,{i,1,5},{j,1,5}]

MatrixForm[%]

(Subscript[matrix, 3])=RandomInteger[10,{5,5}]

Todas las operaciones convencionales están ya implementadas en Mathematica.

Det[(Subscript[matrix, 3])]

(Subscript[matrix, 2])*(Subscript[matrix, 3])

(Subscript[matrix, 2]).(Subscript[matrix, 3])

Norm[(Subscript[matrix, 2]).(Subscript[matrix, 3])]

Inverse[(Subscript[matrix, 3])]

Los valores exactos se obtienen con la precisión deseada, por ejemplo

N[%,7]

Utilicemos un resultado precedente específico "%número-de-salida"

MatrixForm[Normal[N[%,7]]]

Introducción

Algebra Lineal

Sistemas Dispersos

Veamos una matriz tri-diagonal por medio de patrones en los índices.

s=SparseArray[{{i_,i_}->9,{i_,j_}/;Abs[i-j]==1->1},{5,5}]

La representación visual de la matriz es

MatrixForm[Normal[s]]

MatrixPlot[s]

Ahora, miremos un sistema lineal

b=RandomReal[1,{5}]

Timing[x=LinearSolve[s,b]]

Ahora, probemos que ocurre cuando expandimos el mismo problema!

Timing[bLarge=RandomReal[1,{100000}];]

Timing[sLarge=SparseArray[{{i_,i_}->9,{i_,j_}/;Abs[i-j]==1->1},{100000,100000}];]

MatrixPlot[sLarge,ColorFunction->"Rainbow"]

Timing[solLarge=LinearSolve[sLarge,bLarge];]

Clear[b,s,sLarge,solLarge,bLarge]

Introducción

Algebra Lineal

Sistemas de valores propios "Eigensystems"

Valores propios y respectivos vectores propios pueden obtenerse simbólicamente "eigenvalues & eigenvectors"

Eigensystem[{{a,b},{c,d}}]

Valores exactos

eig=Eigensystem[{{1,2,3},{4,5,6},{7,8,9}}]

Aproximación numérica de los mismos

N[eig,30]

Introducción

Algebra Lineal

Manipulación de Listas: Vectores y Matrices

Vectores

vec=RandomInteger[10,{10}]

Porciones de vectores

vec[[4]]

vec[[1;;5]]

Matriz

mat=RandomInteger[10,{5,5}]

MatrixForm[mat]

Porciones de matrices

mat[[1,2]]

mat[[3]]

mat[[All,2]]

mat[[{2,3},{3,4}]]

Introducción

Graficando con Mathematica en 2D

a=Plot[Sin[x],{x,-π,π}]

Plot[{5Sin[x],5Sin[3 x]},{x,-5,5},Filling->{1->{2}}]

Plot[{5Sin[x],5Sin[3 x]},{x,-5,5},Filling->{{1->{{2},Yellow}},{1->2}}]

Modelamiento de Regiones

Como cree Ud. que (x^2)+(y^3)<v se vería gráficamente?

RegionPlot[(x^2)+(y^3)<0.3,{x,-2,2},{y,-2,2}]

Clear[a]

Introducción

Gráficas en 2D

Campos vectoriales y funciones de corriente

VectorPlot[{x,y},{x,-3,3},{y,-3,3}]

StreamPlot[{x^2+y,x-y^3},{x,-3,3},{y,-4,4}]

Introducción

Gráficas en 3D

Superficies y Color

Plot3D[((Sin[x y])/(Sqrt[(x^2)+(y^2)])),{x,-3,3},{y,-3,3}]

Con una función de color predeterminada

Plot3D[((Sin[x y])/(Sqrt[(x^2)+(y^2)])),{x,-3,3},{y,-3,3},ColorFunction->"BlueGreenYellow"]

Introducción

Gráficas en 3D

Otras Posibilidades de Visualización

Muchas más:

sty["Rainbow"]={ColorFunction->"Rainbow"};sty["Contour"]={MeshFunctions->{#3&}};
sty["Target"]={MeshFunctions->{((#1)^2)+((#2)^2)&},MeshShading->{Red,None}};sty["Weave"]={MeshShading->{{Automatic,Automatic},{Automatic,Directive[Opacity[.2],Gray]}}};
sty["Specular"]={PlotStyle->Directive[Orange,Opacity[0.8],Specularity[White,30]]};
sty["Annulus"]={RegionFunction->(1<((#1)^2)+((#2)^2)<10&),Filling->Bottom,Boxed->False,Axes->False};

Manipulate[Plot3D[((Sin[x y])/(Sqrt[(x^2)+(y^2)])),{x,-3,3},{y,-3,3},Evaluate[sty[style]]],{style,{"Rainbow","Contour","Weave","Target","Specular","Annulus"},PopupMenu}]

Introducción

Gráficas en 3D

Gráficas de líneas de contorno y de densidad

ContourPlot[((Sin[x y])/(Sqrt[(x^2)+(y^2)])),{x,-3,3},{y,-3,3}]

Options[ContourPlot]

Introducción

Gráficas en 3D

Opacidad y fuentes de luz

ContourPlot3D[(x^4)+(y^4)+(z^4)+2 ((x^3)+(y^3)+(z^3))-3 ((x^2)+(y^2)+(z^2))==-1,{x,-3,3},{y,-3,3},{z,-3,3},Mesh->None,MaxRecursion->5,ContourStyle->Directive[Orange,Opacity[0.8],Specularity[White,30]]]

ParametricPlot3D[{(1.16^v) Cos[v] (1+Cos[u]),-(1.16^v) Sin[v] (1+Cos[u]),-2 (1.16^v) (1+Sin[u])},{u,0,2 π},{v,-15,6},PlotRange->All,Mesh->None,Boxed->False,Axes->False,PlotStyle->{Pink,Opacity[0.75],Specularity[White,20]},MaxRecursion->3]

Introducción

Otras opciones para graficar

Redes y Esquemas

GraphPlot[{1->2,2->1,3->1,3->2,4->1,4->2,4->4},
VertexLabeling->True]

GraphPlot[{1->2,2->1,3->1,3->2,4->1,4->2,4->4},
VertexLabeling->True,
DirectedEdges->True]

GraphPlot[{->,->,->,->,->,->,->,->,->,->,->,->,->,->,->,->},VertexLabeling->True,DirectedEdges->True]

Mathematica como un Lenguaje de Programación

Mathematica tiene un conjunto muy variado de funciones prederteminadas el cual lo hace una poderosa herramienta de programación de alto nivel.

Mathematica como un Lenguaje de Programación

Programación Funcional o por Procedimientos

El gran potencial del lenguaje proviene del uso de funciones definidas en términos de patrones que transforman los datos de entrada.

Map[fun,{1,2,3,4,5}]

Apply[fun,{1,2,3,4,5}]

list=Range[(10^6)];

Existen instrucciones en forma de procedimiento tales como iteraciones y búsqueda de datos en un arreglo

Timing[sum=0;Do[sum=sum+list[[i]],{i,Length[list]}];sum]

No obstante, para procedimientos convencionales, existen comandos predefinidos en Mathematica que funcionan de manera muy eficiente.

Timing[Total[list]]

Timing[Apply[Plus,list]]

Mathematica como un Lenguaje de Programación

Árboles

El lenguaje está unificado de tal manera que todo se representa por una sencilla estructura de árbol; así se puede hacer un control detallado y  es susceptible de ser modificado tanto como se desee

Clear[a]

FullForm[a+b c]

TreeForm[a+b c]

Las expresiones pueden ser modificadas utilizando para ello reglas que efectuan una tranformación sobre la forma inicial

FullForm[a+b c]

ReplaceAll[a+b c,{Times->Plus,Plus->Times}]

FullForm[%]

A menudo está el caso de que la forma de representación es bien diferente de la forma completa"FullForm".

gr=Graphics[{Green,Circle[{0,0},1]}]

Graphics[Circle[{0,0},1]]

TreeForm[gr]

ReplaceAll[gr,Circle->Disk]

Mathematica como un Lenguaje de Programación

Patrones

Patrones pueden ser utilizados para asignar reglas de transformación mucho más genéricas.

Por ejemplo, n_ es un patrón que reemplaza cualquier expresión referida con el nombre n.

Los patrones pueden restringinse por tipo, condicionales y por otras definiciones.

Por ejemplo, las siguientes instrucciones definen una función que tiene diversos casos especiales.

Clear[f]

f[x_Integer]:=Sin[(1/(x-1))];
f[x_Real]:=((x-1)/(Cos[x]));

?f

f[4]

Trace[f[4.]]

f[2.5]

Trace[f[2.5]]

Casos que no concuerdan con alguno de los patrones, se represnetan como no evaluados.

f[a+b]

Mathematica como un Lenguaje de Programación

Patrones

Ejemplo: Reglas de Transformación Matemática

rules={Log[a_ b_]:>Log[a]+Log[b],Log[((a_)^(b_))]:>b Log[a]}

expr=Log[(((a+b))^c) (d^e)]

ReplaceAll[expr,rules]

ReplaceRepeated[expr,rules]

Patterns »

Expandiendo a Mathematica

Computación en Paralelo con Mathematica

Mathematica 7 posee capacidades predeterminadas para cómputos en paralelo.

Parallelize

La función "Parallelize" automáticamente ejecutará cálculos en paralelo, de ser posible.

Parallelize[(∑_(i=1)^250)i!]

De lo contrario, se ejecutará una cálculo en serie.

Parallelize[∫((1+x^4)/(x^9+3x))\[DifferentialD]x]

Expandiendo a Mathematica

Computación en Paralelo con Mathematica

Paralelización a escala

Computación en paralelo despliega a todos los procesadores disponibles localmente y a los remotos, en caso de ser espeificado. Veamos que ocurre con seis números realmente grandes...

nums={2949139351597575118259944040385088406471149304313950803916170,2745201680660241417682118990009429336956428174177365148868001,2233795066652699157538868797967201925661196164476818038296004,1811407300094750906313647154418422327145787739155366439445521,2945655125896943888734546306600095101787359723357126960817429,1993289517437145602616895020850006297493179390622764388547884};

Ahora le pediremos a Mathematica que los factorice utilizando dos métodos distintos:

   1. Procesamiento en Serie.
   2. Procesamiento en Paralelo.

Map[FactorInteger,nums]//AbsoluteTiming

Parallelize[Map[FactorInteger,nums]]//AbsoluteTiming

Grid[{
{Style["# of cores",FontFamily->"Arial",Bold],Style["Time elapsed",FontFamily->"Arial",Bold]},
{Style["1",FontFamily->"Arial"],Style["17.9487 sec",FontFamily->"Arial"]},
{Style["2",FontFamily->"Arial"],Style["14.1600 sec",FontFamily->"Arial"]},
{Style["4",FontFamily->"Arial"],Style["xx.xxxx sec",FontFamily->"Arial"]},
{Style["8",FontFamily->"Arial"],Style["xx.xxxx sec",FontFamily->"Arial"]},
{Style["16",FontFamily->"Arial"],Style["xx.xxxx sec",FontFamily->"Arial"]}

},
Dividers->{None,{2->Black}},Frame->{{11,2}->True},
Alignment->{{Left,Right}}]

Expandiendo a Mathematica

Computación en Paralelo con Mathematica

ParallelTry

Con la función ParallelTry se pueden enviar múltiples evaluaciones a kernels; esto resulta bastante útil cuando se desea escoger un método en particular, por ejemplo, pero no se sabe de antemano cuál es el más eficiente entre ellos.

AbsoluteTiming[ParallelTry[
{#,FindMinimum[(E^(Sin[50 x]))+Sin[60 (E^y)]+Sin[70 Sin[x]]+Sin[Sin[80 y]]-Sin[10 (x+y)]+(1/4) ((x^2)+(y^2)),{x,y},Method->#]}&,{"Gradient","ConjugateGradient","InteriorPoint","QuasiNewton","Newton"}]]

Distribuyendo definición de funciones

Por ejemplo podemos definir una función, distribuir sus definiciones entre los diferentes kernels, para luego ejecutar la operación en paralelo.

factorsLength[n_]:=Length[FactorInteger[n]];
DistributeDefinitions[factorsLength]

Table[With[{n=n},ParallelSubmit[Length[FactorInteger[(10^n-1)/9]]]],{n,Range[45,64]}]

WaitAll[%]

Mathematica como un Lenguaje de Programación

Wolfram Workbench

Wolfram Workbench es un poderoso ambiente de desarrollo integrado "integrated development environment (IDE)" que permite verificar un código escrito con Mathematica. Además, permite trabajar en ambientes de plataforma combinada, tales como Java, JLink, y gridMathematica.

Si desea conocer más acerca de estas herramienta, visite Workbench Workflow Screencasts en la página principal de Wollfram en la internet.

Manejando Datos

Datos relacionados con Física y Química:
	elementos, isótopos, químicos, particulas

Row[{
ChemicalData["Hexane"],
ChemicalData["Caffeine","MoleculePlot"],
}]

Datos en Finanzas, Economía y Sociología

Row[{
DateListPlot[FinancialData["APL",{{2005,1,1},{2008,10,31}}],Filling->Bottom,Joined->True],
Text["     "],
DateListPlot[CountryData["Colombia",{{"GDP"},{1970,2005}}],Filling->Axis]
}]

Ciencias de la Salud:
	genomas, proteinas

Row[{
ProteinData["A2M","MoleculePlot"],
ProteinData["SERPINA3","MoleculePlot"]
}]

Matemáticas:
	 teoría de grupos, gráficas, nudos, retículas, polyhedros

Row[{Style[Grid[FiniteGroupData["Quaternion","MultiplicationTable"]],FontFamily->"Arial",FontSize->Medium],
KnotData[{6,1}],
LatticeData["FaceCenteredCubic","Image"],
PolyhedronData["PentagonalHexecontahedron"]
}]

Datos Geográficos, Meteorológicos y Astronómicos:
	clima, geodesia, ciudades, países, objetos astronómicos

Row[{
CountryData["Colombia","Shape"],
AstronomicalData["Jupiter","Image"]
}]

Manejando Datos

Datos Químicos y Físicos

ChemicalData

Obtención de información acerca de los elementos y sustancias químicas.

ChemicalData["Caffeine"]

Información específica de un químico.

ChemicalData["Caffeine","Properties"]

ChemicalData["Caffeine","MoleculePlot"]

Se puede obtener inclusive información acerca de una clase de químicos.

Un ejemplo más complejo... cuál es el proceso de transformación del Uranio-235?

DaughterNuclides[s_List]:=DeleteCases[Union[Join@@(IsotopeData[#1,"DaughterNuclides"]&)/@DeleteCases[s,_Missing]],_Missing]

ReachableNuclides[s_List]:=FixedPoint[Union[Join[#1,DaughterNuclides[#1]]]&,s]

DecayNetwork[iso_List]:=Join@@(Thread[#1->DaughterNuclides[{#1}]]&)/@ReachableNuclides[iso]

U235Decay=Map[IsotopeData[#1,"Symbol"]&,DecayNetwork[{"Uranium235"}],{2}]

Ahora graficamos para tener los resultados visualmente,

LayeredGraphPlot[U235Decay,VertexLabeling->True]

Manejando Datos

Datos de Finanzas, Economía y Sociología

FinancialData

Obtención actualizada de un instrumento financiero o de unas acciones.

FinancialData["GOOG"]

Los datos son recuperados de tal manera que permiten ser tomados como entrada para análisis subsiguientes con Mathematica.

DateListPlot[FinancialData["GOOG","2007"],Filling->Bottom]

DateListPlot[(FinancialData[#1,"2006"]&)/@{"MSFT","AMD"},Filling->Bottom,Joined->True]

CountryData

Obtención de información de un país en particular.

CountryData["Spain","Shape"]

Es realmente increible la cantidad propiedades que contiene la información disponible

CountryData["Spain","Properties"]

Un ejemplo más avanzado... una comparasión visual del Producto Interno Bruto "GDP" vs. población de los países.

Clear[lp,data]

data=(Tooltip[{CountryData[#1,"Population"],CountryData[#1,"GDP"]},CountryData[#1,"Name"]]&)/@CountryData[];
data=DeleteCases[data,Tooltip[{___,_Missing,___},_]];

Ahora ajustemos los logaritmos a una línea y grafiquemos el resultado.

fit=Fit[Log[data[[All,1]]],{1,lp},lp]

Comparemos los datos y el ajuste

plot=ListLogLogPlot[data,AxesLabel->{"Population","GDP"}];Show[plot,Plot[fit,{lp,Log[(10^3)],Log[(10^9)]}]]

Clear[data]

Manejando Datos

Datos de Ciencias de la Salud

ProteinData

Obtención de información acerca de las proteinas.

ProteinData[]

ProteinData["SERPINA3","MoleculePlot"]

ProteinData["NAT1","MolecularWeight"]

ProteinData["NAT1","Name"]

ProteinData["NAT1","BiologicalProcesses"]

GenomeData

Una lista de los genes que Mathematica identifica.

GenomeData[]

Podemos aquí seleccionar uno gen en particular y observar una de sus propiedades.

GenomeData["ZXDB","Chromosome"]

GenomeData["ZXDB","Name"]

Búsqueda de las posiciones de un fragmento de la secuencia DNA:

GenomeLookup["GTCAGTCAGTCAGACA"]

Manejando Datos

Datos Matemáticos

GraphData

Obtención de información acerca de grafos en particular.

GraphData["PetersenGraph"]

Una vez así podemos observar algunas de sus propiedades...

GraphData["PetersenGraph","Cubic"]

GraphData["PetersenGraph","Spectrum"]

GraphData["PetersenGraph","CycleCount"]

GraphData["PetersenGraph","AllImages"]

Manejando Datos

Datos Geográficos, Meteorológicos y Astronómicos

WeatherData

Obtención de información del clima para una estación climatológica específica.

WeatherData["KCMI","Properties"]

Por ejemplo, presentemos una gráfica de la temperatura media desde Enero 1, 2004 hasta Deciembre 31, 2007.

DateListPlot[WeatherData["KBMI","MeanTemperature",{{2004,1,1},{2007,12,31},"Day"}],Joined->True,Filling->Bottom]

CityData

Buscamos ahora información acerca de una ciudad en particular.

CityData[{"Champaign","Illinois"},"Properties"]

TableForm[({#1,CityData[{"Champaign","Illinois","UnitedStates"},#1]}&)/@CityData[All,"Properties"]]

AstronomicalData

Un ejemplo un poco más interesante sería... ilustrar la Tercera Ley de Kepler.

Una gráfica Log-log del periodo orbital  vs. distancia de los planetas.

ListLogLogPlot[Tooltip[{AstronomicalData[#,"OrbitPeriod"],AstronomicalData[#,"SemimajorAxis"]},#]&/@AstronomicalData["Planet"],PlotStyle->PointSize[Large]]

Manejando Datos

Importando, Exportando y Conectándose con otros programas

Las expresiones utilizadas en Mathematica permiten que la información sea representada siempre de alguna manera. Una amplia variedad de formatos de archivos pueden ser importados a y exportados desde Mathematica a otro archivo.

Importing & Exporting »

$ImportFormats

ReliefPlot[Import["http://exampledata.wolfram.com/hailey.dem.gz","Data"],ColorFunction->"GreenBrownTerrain"]

$ExportFormats

MathLink permite una interfaz general para conectar Mathematica a otros programas. Enlaces con Java (J/Link) y .NET (.NET/Link) han sido desarrollados para que MathLink tenga fácil interactividad y conectividad con dichos programas.

External Programs »

Manejando Datos

Procesamiento de Imágenes a través de Mathematica

Una imagen puede ser importada, copiada y pegada, o  simplemte deslizada hacia Mathematica.

brain=

Podemos afinar la imagen para una inspección detallada.

Manipulate[Sharpen[brain,n],{n,1,5},SaveDefinitions->True]

O podemos delimitar los bordes para definir algunos contornos.

Manipulate[ImageAdjust[GradientFilter[brain,n]],{n,Range[5]},SaveDefinitions->True]

Podemos aplicar muchos efectos a diferentes partes de la imagen a la vez.

s=Sharpen[brain,4];
g=GradientFilter[brain,2]//ImageAdjust;
ds=UpperTriangularize[#,59]&/@ImageData[s,Interleaving->False];
dg=LowerTriangularize[#,-60]&/@ImageData[g,Interleaving->False];
dh=Normal@SparseArray[{i_,j_}/;Abs[i-j]<60:>#[[i,j]],Reverse@ImageDimensions@brain]&/@ImageData[brain,Interleaving->False];
Image[ds+dg+dh,Interleaving->False]

Y muchas otros efectos se pueden lograr.

lena=ExampleData[{"TestImage","Lena"}];
Grid[{
{ColorNegate[lena],
ImageTake[lena,300],
ImagePad[lena,15,Red]},
{Image[GraphicsGrid[ImagePartition[lena,25]],ImageSize->180],
Image[ImageRotate[lena,45Degree]],
ImageEffect[lena,"Charcoal"]},
{Dilation[lena,3],
ImageApply[RotateRight,lena],
ImageAdjust[lena,6]}
}]

Manejando Datos

Mathematica para Procesamiento de Datos y Creación de Gráficas

Muchas de las funciones y comandos de visualización tienen funciones análogas para manejar la vizualización de datos.

Ejemplo: Muestreo aleatorio de puntos que siguen una distribución Gaussiana.

Clear[f,x,y]

X=RandomReal[NormalDistribution[],{300,2}];

f[x_,y_]:=(E^(-((((x-.1))^2)+(((y-.2))^2))))-.5 (E^(-3 ((((x+.15))^2)+(((y+.1))^2))));

data=Apply[{#1,#2,f[#1,#2]}&,X,{1}];

Veamos una gráfica de los puntos.

points=Graphics3D[Point/@data,Axes->True]

Manejando Datos

Graficando superficies

Gráficas de Superficies con ListPlot3D

lp=ListPlot3D[data,PlotRange->All]

Manejando Datos

Más posibilades de visualización para superficies

Voronoi

Para datos irregulares, la función "InterpolationOrder-> 0" produce regiones Voronoi para cada punto. Veamos:

ListPlot3D[data,PlotRange->All,Mesh->False,InterpolationOrder->0,ColorFunction->"Rainbow"]

Manejando Datos

Gráficas de Contornos

Visualización con Líneas de Contorno

...o contornos.

contours=((Max[data[[All,3]]] Range[0,10])/10.);
cp=ListContourPlot[data,PlotRange->All,Contours->contours,ContourShading->None]

Manejando Datos

Estadísticas

Agrupamiento  o "Clustering"

newdata={{-1.1,2.6},{3.9,-0.8},{4.2,-3.7},{3.3,3.5},{3.9,5.2},{4.1,-4.8},{3.8,3.7},{5.6,0.1},{3.1,-5.2},{-0.9,2.3},{2.9,4.1},{-2.3,3.9},{-2.5,3.},{2.6,-5.5},{5.2,1.9},{-0.7,1.3},{0.9,2.8},{-1.5,3.3},{3.8,1.2},{2.6,-5.1},{-0.8,3.2},{4.7,0.7},{3.,3.},{3.9,3.6},{4.5,1.4},{4.2,1.3},{-1.1,2.6},{4.8,2.4},{3.3,-3.5},{3.2,-4.6},{3.3,-4.9},{3.,3.5},{0.7,2.1},{3.2,-4.3},{-2.,0.5},{-1.2,2.},{-1.6,1.8},{-3.5,3.7},{4.8,0.2},{3.3,2.4},{-0.1,2.1},{-1.3,2.5},{4.4,3.9},{3.5,0.2},{0.1,2.9},{-1.,1.6},{-1.4,4.5},{3.2,2.5},{-1.6,2.4},{2.6,-5.1}};

ListPlot[newdata]

ListPlot[FindClusters[newdata],PlotStyle->PointSize[Large]]

Manejando Datos

Estadísticas

Diagramas de Barras

Un diagrama de barras

BarChart[{{1,3,2},{1,6,3}},ChartElementFunction->"GlassRectangle",ChartStyle->"Pastel"]

agregando leyendas personalizadas:

BarChart[{{1,3,2},{1,6,3}},ChartLegends->{"Serie 1","Serie 2","Serie 3"}]

o con logos específicos.

spikey=;
BarChart[Range[10],ChartElements->spikey]

Los diagramas tipo pastel son interactivos.

PieChart[Range[5]]

Los diagramas de burbujas le permiten ver series de datos con diferentes magnitudes.

BubbleChart[RandomInteger[{10,80},{10,10,3}]]

Existen diagramas 3D análogos de las recien mencionados.

BarChart3D[{{1,3,2},{1,6,3}},ChartLegends->{"Serie 1","Serie 2","Serie 3"}]

PieChart3D[Range[5],ChartStyle->"Rainbow"]

BubbleChart3D[RandomInteger[{10,80},{10,10,4}]]

Hay una paleta nueva para asistir en la creación de diagramas.

Exploremos "Chart Element Schemes" para ver algunos ejemplos.

BarChart[Range[10]]

Manejando Datos

Modelos de Regresión

data={{0,1},{1,0},{3,2},{5,4}};

LinearModelFit[data,x,x]

Normal[%]

Información adicional en los "comos"  How To .

ANOVA

Hay un paquete de funciones predeterminadas para análisis de varianza.

anovadata={{A,A,4.988},{A,A,4.733},{A,A,7.18},{A,B,10.99},{A,B,8.538},{A,B,10.363},{A,C,13.972},{A,C,14.928},{A,C,15.117},{B,A,5.616},{B,A,6.842},{B,A,4.806},{B,B,6.721},{B,B,6.137},{B,B,6.483},{B,C,8.921},{B,C,8.198},{B,C,10.164}};

Needs["ANOVA`"];
ANOVA[anovadata,{x,y},{x,y}]

Consideraciones Finales

Mathematica como herramienta o ambiente para la Enseñanza e Investigación

Toda nuestra información relevante puede estar contenida en sus cuadernos de Mathematica:

Notas Formales y Apuntes

Fórmulas para publicación

Gráficas

Implementación de Código

Identificable o sujeto a ser buscado en la red (por ejemplo a través de Google Desktop o Spotlight)

Conversión Directa a HTML, TeX, PDF, etc.

Páquetes y aplicaciones específicos

En Conclusión

Todos los componentes de Mathematica están totalmente integrados.

La interactividad instantánea hace que la exploración sea rápida y divertida.

En sólo minutos, se puede pasar de formular una idea a verla en acción y con muy pocas líneas de código.

Escale su idea en un código eficiente para aplicaiones realmente seias sin tener que migrar a otro ambiente.

Recursos Disponibles

Learning Center

Library

MathWorld

Blog

Forums

Section head

Subsection head

Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Mauris scelerisque erat vel elit. Etiam a purus tincidunt tortor pulvinar laoreet.

(Subscript[ϕ, n])(z)=(1/(Sqrt[(Sqrt[π])(2^n)n!]))(e^(-((z^2)/2)))(Subscript[H, n])(z)

Subsubsection head

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Pellentesque enim dolor, euismod sit amet, rutrum nec, fermentum id, risus. Mauris auctor nunc ac nisl. Nunc non turpis a dolor porta tristique. Nam accumsan massa scelerisque sapien.

Section head

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Pellentesque enim dolor, euismod sit amet, rutrum nec, fermentum id, risus.

Plot3D[Sin[x y],{x,0,4},{y,0,4}]

Mauris auctor nunc ac nisl. Nunc non turpis a dolor porta tristique. Nam accumsan massa scelerisque sapien.