Sie sind auf Seite 1von 21

Gua ultrarrpida de Mathematica para utilizar en la asignatura de Clculo numrico

Jos Cceres Gonzlez Departamento de Estadstica y Matemtica Aplicada Universidad de Almera Breve introduccin
Mathematica es un producto de Wolfrang Research Inc. pensado principalmente para realizar de forma sencilla una gran cantidad de clculos complejos, tanto numricos como simblicos. Por tanto, como primera aproximacin, podemos pensar que Mathematica es una calculadora extremadamente potente en donde, como en todas las calculadoras, el usuario puede introducir diferentes expresiones matemticas y solicitar el valor de las mismas. Sin embargo, Mathematica tambin dispone de suficientes recursos para implementar algoritmos por lo que puede considerarse como un pequeo compilador. Para aquellos usuarios acostumbrados a la programacin encontrarn que la sintaxis utilizada es muy cercana a la familia del lenguaje C. Finalmente, ciertas capacidades de Mathematica facilitan la creacin y edicin de textos cientficos, por lo que tambin se puede decir que es un pequeo procesador de textos, un procesador que permite bastante interaccin con el usuario y que lo hacen ideal para el desarrollo de prcticas de enseanza. El objetivo de este pequeo documento es explicar sucintamente los comandos y posibilidades ms habituales de Mathematica, especialmente aquellos necesarios para desarrollar las prcticas de la asignatura de Clculo numrico. Como la intencin de este trabajo es la de servir de gua rpida, las explicaciones sern necesariamente muy sucintas aunque se incluirn una cierta cantidad de ejemplos. Para mayor nivel de detalle se recomienda dirigirse a la Ayuda de Mathematica o al Manual del Usuario del programa.

Rapidsimo recordatorio del funcionamiento bsico de Mathematica


Las principal capacidad de Mathematica es la posibilidad de introducir expresiones matemticas y solicitar su valor. Para expresiones sencillas, se pueden utilizar los operadores suma y diferencia, representados por + y -, el producto, que se suele expresar con * o con un espacio en blanco, la divisin, mediante /, y la potenciacin que utiliza el smbolo ^.

Jos Cceres Gonzlez

El orden de las operaciones por defecto es potenciacin, productos y divisiones, y finalmente sumas y restas.Para forzar que una operacin se realice antes que otra se pueden utilizar parntesis e incluso parntesis anidados, pero nunca corchetes o llaves que estn reservados en Mathematica para otras cuestiones. La coma decimal se expresa mediante un punto, y las constantes matemticas habituales por Pi,E. El usuario puede comprobar que al escribir una nueva expresin, sta queda encerrada por un corchete azul en el lado derecho, que llamaremos una celda. De esta manera podemos diferenciar una expresin que puede ocupar varias lneas,de otras expresiones. Para calcular el valor de una celda basta con situar el cursor en cualquier punto de ella y teclear Shift+Intro o la tecla Intro del pad de nmeros del teclado. En ese instante, Mathematica numera la entrada del usuario e indica cul es la salida correspondiente. Comprubelo con el siguiente ejemplo:
In[1]:=

34+12 5 4

Out[1]=

A esto le llamaremos a partir de ahora "evaluar una celda". A veces no es deseable que aparezca el resultado en pantalla. En ese caso, podemos terminar la expresin con un punto y coma. El resultado de la evaluacin de una celda puede ser tanto numrico como simblico dependiendo de cul haya sido nuestra entrada. As una entrada simblica devuelve una salida tambin simblica como en el ejemplo anterior. Sin embargo, la misma expresin escrita de forma numrica tiene una salida numrica. Comprubelo evaluando lo siguiente:
In[2]:= Out[2]=

3 4 + 0.5 1.25

Para obtener una salida numrica sea cual sea la entrada se utiliza el comando N[ ] Con este comando adems se puede fijar el nmero de decimales deseados.
In[3]:=

N@PiD N@Pi, 100D 3.14159

Out[3]= Out[4]=

3.1415926535897932384626433832795028841971693993751058209749 44592307816406286208998628034825342117068

Naturalmente existen una gran cantidad de operadores que se pueden utilizar, en el siguiente cuadro se enumeran algunos de ellos.

Mathematica para Clculo numrico

Cuestiones bsicas
Los smbolos + y - se utilizan para la suma y diferencia. Para la multiplicacin se usa * o un espacio en blanco. Para la divisin / y ^ para la potenciacin. La coma decimal se expresa con un punto. Con un punto y coma final, no muestra salida alguna.

Constantes matemticas
Pi y E son las dos constantes matemticas ms utilizadas. GoldenRatio es el nmero (1+Sqrt[5])/2 o razn urea. Degree es exactamente un grado de ngulo Infinity es el valor infinito

Diferentes salidas
Si se evala una expresin simblica (resp. numrica) da como resultado una salida simblica (resp. numrica). N[z] da el valor numrico de z. N[z,n] da n cifras decimales del valor numrico de z.

Operadores habituales
Sqrt[z] es la raz cuadrada de z. Abs[z] da el valor absoluto de un nmero real. Sign[z] devuelve -1, 0, 1 dependiendo de si z es negativo, cero o positivo. IntegerPart[z] y BaseForm[z,b] son respectivamente la parte entera y la expresin decimal de z en base b. Mod[n,m] y Quotient[n,m] corresponden al resto y el cociente de la divisin eucldea de n entre m. Sin[z], Cos[z] y Tan[z] son las razones trigonomtricas seno, coseno y tangente. Las razones inversas correspondientes son ArcSin[z], ArcCos[z] y ArcTan[z] Log[z] y Log[b,z] calculan el logaritmo neperiano de z y logaritmo de z en base b. Max[z1,z2,...,zn] y Min[z1,z2,...,zn] calculan el mximo y el mnimo de un conjunto de nmeros.

Jos Cceres Gonzlez

Programacin con Mathematica


Un programa de Mathematica puede escribirse simplemente como una sucesin de instrucciones separadas por puntos y comas, aunque al final de la seccin se dar una alternativa ms aceptable. Lo primero que se necesita para poder programar, aunque sea de forma rudimentaria, es poder asignar un valor a una variable para utilizarla posteriormente. Eso se hace de una manera muy sencilla.
In[5]:=

a = 2; a^3 a^5 8 32

Out[6]= Out[7]=

Atencin, aunque cerremos un documento de Mathematica, el valor de todas las variables que hemos utilizado quedar guardado hasta que cerremos el programa. El comando Clear borra el valor de cualquier variable que hayamos creado. Para borrar todas las variables se utiliza Clear["Global`*"]
In[8]:=

Clear@aD a^2 a2

Out[9]=

Tambin es posible realizar comparaciones utilizando los smbolos >, <, , y (estos tres ltimos smbolos se obtienen tecleando >= , <= != seguidos de un espacio). Para comprobar si dos expresiones son iguales se utiliza la doble igualdad == reservando la igualdad simple para las asignaciones. El resultado de una de estas comparaciones es siempre True o False
In[10]:= In[11]:=

a = 2; a<3 a>3 a2 True False True

Out[11]= Out[12]= Out[13]=

Mathematica para Clculo numrico

Por ltimo para dar una salida en pantalla, se utiliza el comando Print
In[14]:=

Print@"El valor de la variable a es ", aD

El valor de la variable a es 2 Para condiciones ms complejas y para controlar el flujo de la ejecucin del algoritmo utilizaremos los operadores lgicos habituales AND y OR que se representan como && y || respectivamente
In[15]:=

a = 1; a == 1 && 1 2 a 2 1 2 True True

Out[16]= Out[17]=

Otros operadores lgicos utilizables son: Xor y Not El comando que permite tomar decisiones es If, que tiene tres partes separadas por comas. La primera es la condicin a comprobar, la segunda es la secuencia de instrucciones que se ejecutan si la condicin es cierta, y la tercera parte, que es opcional, es la secuencia de condiciones a ejecutar si la condicin no es cierta.
In[18]:=

If@1 2, Print@"Es cierto"D, Print@"Es falso"DD

Es cierto
In[19]:=

If@2 1, Print@"Es cierto"D, Print@"Es falso"DD

Es falso Un comando parecido a If es Which . En este comando se alternan una condicin y la secuencia de comandos a ejecutar si la condicin es cierta. Las condiciones se evalan de izquierda a derecha y se para cuando se encuentra que una de ellas es cierta. Es habitual poner al final una condicin True para el caso de que todas las anteriores sean falsas.
In[20]:=

Which@1 2, Print@"Lo primero es cierto"D, 2 > 1, Print@"Lo segundo es cierto"D, True, Print@"Todo lo anterior es falso"DD

Lo primero es cierto Mathematica dispone de varios comandos para ejecutar bucles: el bucle For cuando el nmero de iteraciones es conocido de antemano y While si hay que comprobar una condicin al comienzo de cada

Jos Cceres Gonzlez

iteracin. La sintaxis de los comandos es exactamente la opuesta de las correspondientes instrucciones en C, as que hay que tener cuidado.
In[21]:=

For@i = 1, i 5, i ++, Print@i ^ 2DD

1 4 9 16 25
In[22]:=

i = 1; While@i 5, Print@i ^ 2D; i ++D

1 4 9 16 25 Aunque es perfectamente correcto hacer un programa de Mathematica sin ms que tecleando una instruccin tras otra, esto no permite estructurar adecuadamente algoritmos complejos. En su lugar, podemos utilizar el comando Module para definir subrutinas o funciones. Por ejemplo la siguiente funcin calcula el factorial de un nmero.
In[24]:=

Fact@n_D := Module@8i, temp<, temp = 1; For@i = 1, i n, i ++, temp = temp * iD; Return@tempDD

Al utilizar el comando Module es necesario tener en cuenta varios aspectos fundamentales. En primer lugar, es imprescindible utilizar como smbolo de asignacin := en vez de slo la igualdad y el smbolo de subrayado acompaando la variable de entrada. Adems Module tiene dos argumentos, el primero es la lista de variables locales a utilizar y en segundo lugar la secuencia de instrucciones a ejecutar. Por ltimo en algn punto de esas instrucciones debe haber una instruccin Return que devuelva el valor de la funcin. Una vez definida la funcin, se puede utilizar como una instruccin predefinida.

Mathematica para Clculo numrico Fact@10D 3628800

In[25]:= Out[25]=

Con el comando Module , es posible utilizar tcnicas recursivas para definir subrutinas. Por ejemplo, la funcin anterior tambin se puede escribir como:
In[26]:=

FactRecursivo@n_D := Module@8<, If@n 0, Return@1D, Return@n * Fact@n - 1DDDD

Por ltimo una curiosidad relativa a la eficiencia de un algoritmo. El comando Timing sirve para comprobar el tiempo de ejecucin de un programa. Veamos por ejemplo cul de las dos versiones de factorial es ms rpida.

Jos Cceres Gonzlez Timing@Fact@300DD Timing@FactRecursivo@300DD

In[27]:=

Out[27]=

80. Second, 3060575122164406360353704612972686293885888041735769994167 767412594765331767168674655152914224775733499391478887017 263688642639077590031542268429279069745598412254769302719 546040080122157762521768542559653569035067887252643218962 642993652045764488303889097539434896254360532259807765212 708224376394491201286786753683057122936819436499564604981 664502277165001851765464693401122260347297240663332585835 068701501697941688503537521375549102891264071571548302822 849379526365801452352331569364822334367992545940952768206 080622328123873838808170496000000000000000000000000000000 00000000000000000000000000000000000000000000< 80.05 Second, 3060575122164406360353704612972686293885888041735769994167 767412594765331767168674655152914224775733499391478887017 263688642639077590031542268429279069745598412254769302719 546040080122157762521768542559653569035067887252643218962 642993652045764488303889097539434896254360532259807765212 708224376394491201286786753683057122936819436499564604981 664502277165001851765464693401122260347297240663332585835 068701501697941688503537521375549102891264071571548302822 849379526365801452352331569364822334367992545940952768206 080622328123873838808170496000000000000000000000000000000 00000000000000000000000000000000000000000000<

Out[28]=

Asignacin de variables
a=2 almacena el valor 2 en la variable a Clear[a] borra el valor de la variable y Clear["Global`*"] borra todas las variables.

Comparaciones
Para realizar comparaciones entre cualquier par de objetos de Mathematica se utilizan los smbolos >,<,>= , <= y !=. La comparacin de igualdad se realiza con la doble igualdad ==. El resultado de una comparacin siempre es True o False.

Mathematica para Clculo numrico

Operadores lgicos
&& y || son respectivamente AND y OR. Xor y Not tambin son operadores lgicos utilizables

Condiciones
If[condicion, comandos1, comandos2] si la condicin es cierta, se ejecuta comandos1. Si la condicin es falsa se ejecuta comandos2. No es necesario incluir esta ltima parte. Which[condicion1, comandos1, condicion2, comandos2,...,condicionN, comandosN] La primera condicin cierta de izquierda a derecha activa la ejecucin la serie de comandos inmediatamente posterior.

Bucles
For[valorincial, condicinsalida, incremento, comandos] a partir del valor inicial y hasta que la condicion de salida sea cierta, se ejecuta la serie de instrucciones, incrementando como se indica el contador del bucle. While[condicion, comandos] se ejecuta la serie de comandos siempre que la condicin sea cierta.

Module
Este comando nos permite estructurar adecuadamente los programas en Mathematica. Su sintaxis es NombreFuncion[parametros]:= Module[{variables locales}, cuerpofuncin] en el cuerpo de la funcin se debe incluir el comando Return[ ] que devuelve el resultado de la funcin.

Tiempo
Timing[funcion] nos da el tiempo de ejecucin de la funcin

Representacin y manipulacin de funciones


Las capacidades de Mathematica en relacin con las funciones, hacen que su manipulacin sea extremadamente fcil y sencilla. Para empezar, una funcin como f(x)=x 2 +1 se define as
In[29]:= Out[29]=

f@x_D = x ^ 2 + 1 1 + x2

10

Jos Cceres Gonzlez

Ntese que se usan corchetes en vez de parntesis y que es necesario un smbolo de subrayado que acompae la primera aparicin de la variable independiente. A partir de esta definicin podemos evaluar la funcin como habitualmente se acostumbra.
In[30]:= Out[30]= In[31]:=

f@0D 1

a = 2; f@aD 5 g@x_, y_D = Hx^ 2 y ^ 2 + x yL Hx ^ 2 y ^ 2 + 1L; g@- 1., 1.D 0.

Out[32]=

De forma anloga se definen funciones de dos o ms variables


In[33]:=

Out[34]=

Para dibujar una funcin de una o dos variables se utilizan los comandos Plot y Plot3D. Es necesario indicar el dominio de representacin.
In[35]:=

Plot@f@xD, 8x, - 4, 4<D


15 12.5 10 7.5 5 2.5

-4 Out[35]=

-2

Graphics

Mathematica para Clculo numrico Plot3D@g@x, yD, 8x, - 1, 1<, 8y, - 1, 1<D

11

In[36]:=

1 0.5 0 -1 -0.5 0 0.5 1 Out[36]= -1 -0.5 0 1 0.5

SurfaceGraphics

En ocasiones es interesante definir una funcin a trozos, eso se puede hacer utilizando el comando Which como en el ejemplo siguiente.
In[37]:= In[38]:=

f@x_D = Which@x - 1, x ^ 2, - 1 < x 1, x, 1 < x, x + 2D; Plot@f@xD, 8x, - 2, 2<D


4 3 2 1

-2

-1 -1

Out[38]=

Graphics

Hay que tener cuidado porque si la funcin no est bien definida, Mathematica la acepta igualmente.Por ejemplo, en el siguiente caso cunto vale f[0]?
In[39]:=

f@x_D = Which@x 0, 3, x 0, 4D; f@0D 3

Out[40]=

12

Jos Cceres Gonzlez

Para Mathematica no hay ninguna duda porque se evala de izquierda a derecha pero es posible que se no sea el resultado deseado. Para resolver ecuaciones sencillas podemos utilizar el comando Solve. Ntese que de nuevo se usa aqu la doble igualdad y no una igualdad slo. Como segundo argumento se incluye la variable que queremos despejar.
In[41]:= Out[41]=

Solve@x ^ 2 - 1 0, xD 88x - 1<, 8x 1<<

El clculo diferencial es extremadamente sencillo con Mathematica . Despes de definir una funcin como
In[42]:=

f@x_D = Sin@xD Cos@xD; f'@xD

Para derivar se puede utilizar uno de estos comandos:


In[43]:= Out[43]= In[44]:= Out[44]=

Cos@xD2 - Sin@xD2 D@f@xD, xD Cos@xD2 - Sin@xD2 f''''@xD

La derivadas de orden superior, por ejemplo la cuarta derivada, se obtienen mediante


In[45]:= Out[45]= In[46]:= Out[46]=

16 Cos@xD Sin@xD D@f@xD, 8x, 4<D 16 Cos@xD Sin@xD g@x_, y_D = x y ^ 2; D@g@x, yD, xD D@g@x, yD, yD y2 2xy

Tambin se utiliza el comando D para las derivadas parciales.


In[47]:=

Out[48]= Out[49]=

Mathematica para Clculo numrico

13

Definicin y evaluacin de funciones


Para definir una funcin se escribe prcticamente igual que en notacin algebraica f[x_]=x^2+1 salvo que se usan corchetes en vez de parntesis y que se pone un subrayado detrs de la variable independiente. Posteriormente podemos evaluar la funcin en un punto sin ms que hacer por ejemplo f[0]. Anlogamente se hace con una funcin en varias variables g[x_,y_]=x y+1 que podemos evaluar por ejemplo en el punto (-1,1) as g[-1,1]

Grficas de funciones
Plot[f[x],{x,a,b}] dibuja una funcin f de una variable en el intervalo [a,b] Plot3D[g[x,y],{x,a,b},{y,c,d}] dibuja una funcin de dos variables en el dominio [a,b][c,d]

Funciones a trozos
f[x_]=Which [subdominio1, funcin1, ...., subdominiop, funcinp] subdominio2, funcin2,

Resolucin de ecuaciones
Solve[f[x]==z,x] da los valores de x que verifican la ecuacin f(x)=z

Derivadas
f'[x] D[f[x],x] dan la derivada de una funcin f definida previamente. D[f[x],{x,n}] calcula la derivada de orden n de la funcin f D[g[x,y],x] calcula por ejemplo la derivada parcial de g respecto de x.

Matrices y vectores con Mathematica


Es precisamente en el manejo de vectores y matrices donde Mathematica tiene ms carencias. Por ejemplo, un vector se escribe entre llaves.
In[50]:= Out[50]=

x = 81, 4, 3< 81, 4, 3<

Y una matriz, con un cierto nmero de llaves anidadas como en el siguiente ejemplo.

14

Jos Cceres Gonzlez A = 882, 1, 0<, 8- 1, 0, 3<, 84, 4, 1<< 882, 1, 0<, 8- 1, 0, 3<, 84, 4, 1<<

In[51]:= Out[51]=

Esto es bastante incmodo. Por ello, para poder visualizar una matriz o un vector como habitualmente estamos acostumbrados podemos utilizar MatrixForm
In[52]:=

MatrixForm@xD MatrixForm@AD y z z z z {

Out[52]//MatrixForm=

1 i j j j j4 k3

Out[53]//MatrixForm=

2 1 0y i j z j z j j 1 0 3z z k 4 4 1{

Si queremos referirnos a un elemento concreto de una matriz o a una coordenada de un vector, utilizaremos los subndices adecuados entre dobles corchetes.
In[54]:= Out[54]= In[55]:= Out[55]=

x@@2DD 4

A@@1, 2DD 1 x@@2DD = 6; x 81, 6, 3<

El doble corchete tambin se utiliza para cambiar el valor de una posicin de una lista.
In[56]:=

Out[57]=

Comentaremos a continuacin las principales instrucciones relativas a matrices y vectores. Para empezar, la suma de dos matrices se hace con el smbolo +, pero para la multiplicacin de matrices se usa el punto .
In[58]:=

A = 882, 1, 0<, 8- 1, 0, 3<, 84, 4, 1<< ; P = 882, 3, 4<, 81, 9, 5<, 8- 7, 3, - 1<<;

Mathematica para Clculo numrico

15

In[59]:=

A+P A.P

Out[59]= Out[60]=

884, 4, 4<, 80, 9, 8<, 8- 3, 7, 0<<

885, 15, 13<, 8- 23, 6, - 7<, 85, 51, 35<< IdentityMatrix@3D

Una matriz muy til es la matriz identidad del producto.


In[61]:= Out[61]=

881, 0, 0<, 80, 1, 0<, 80, 0, 1<<

Otro comando interesante para generar matrices es Table. Por ejemplo, vamos a construir la matriz 4x4 donde cada elemento sea la suma de la fila y columna que ocupa.
In[62]:=

P = Table@i + j, 8i, 1, 4<, 8j, 1, 4<D; MatrixForm@PD 3 4 5 6 4 5 6 7 5y z 6z z z z 7z z z 8{

Out[63]//MatrixForm=

i2 j j j 3 j j j j j4 k5

El clculo de determinantes y el de la inversa de una matriz cuadrada se utiliza:


In[64]:= Out[64]= In[65]:=

Det@AD -11

Inverse@AD

Out[65]=

12 1 3 13 2 6 4 4 1 99 , , - =, 9- , - , =, 9 , , - == 11 11 11 11 11 11 11 11 11

Supongamos que queremos resolver un sistema de ecuaciones lineales que viene dado por la matriz anterior A y el vector de trminos independientes
In[66]:= Out[66]=

b = 89, 4, 2< 89, 4, 2<

Entonces utilizamos LinearSolve. Atencin porque para sistemas compatibles indeterminados slo da una solucin.

16

Jos Cceres Gonzlez LinearSolve@A, bD

In[67]:=

Out[67]=

106 113 50 9 , - , = 11 11 11 Eigenvalues@AD

Por ltimo los valores y vectores propios de una matriz se calculan con:
In[68]:= Out[68]=

91, 1 - 2 !!! 3 , 1 + 2 !!! 3= Eigenvectors@AD 1 6 + !!! 3 1 -6 + !!! 3 98- 1, 1, 0<, 9 , - , 1 = , 9 , , 1== ! !! !!! 4 4 4 3 4 3

In[69]:=

Out[69]=

Definicin de matrices y vectores


Una matriz se define como una lista de listas, por ejemplo A={{2,1,0},{-1,0,3},{4,4,1}} . Para referirse a un elemento concreto de la matriz, indicamos su posicin en la misma entre dobles corchetes como A[[1,2]] o si queremos cambiarlo al valor z, slo tenemos que hacer A[[1,2]]=z . Es posible que nos convenga consultar la matriz en su forma habitual de filas y columnas, para ello tenemos el comando MatrixForm[A] . La matriz identidad n x n se obtiene mediante IdentityMatrix[n]. Otras matrices tambin se pueden construir con el comando Table. Por otro lado, un vector es simplemente una lista como por ejemplo b={9,4,2} . Tambin podemos referenciar un elemento suyo, por ejemplo con b[[2]] o cambiarlo al valor z con b[[2]]=z.

Operaciones con matrices y vectores


Dos matrices A y P se pueden sumar y multiplicar mediante A+P y A.P , tambin es posible multiplicar un nmero por toda una matriz, por ejemplo 3A. Todo esto tambin es vlido para vectores. Una utilidad muy interesante es la de resolver el sistema de ecuaciones lineales A.x=b cuando sea compatible determinado. Esto se hace con LinearSolve[A,b] . Para matrices cuadradas tambin esposible calcular el determinante Det[A] o calcular su inversa con Inverse[A]. Por ltimo, Eigenvalues[A] y Eigenvectors[A] proporcionan respectivamente los valores propios y vectores propios asociados a una matriz A.

Mathematica para Clculo numrico

17

Sumatorias y productorios
Los comandos de Mathematica que realizan sumatorias y productorios son claramente insuficientes para los propsitos del Clculo numrico. Veamos por qu Para sumar utilizamos Sum como en el siguiente ejemplo que suma los cuadrados de los primeros treinta nmeros naturales.
In[70]:= Out[70]=

Sum@i ^ 2, 8i, 1, 30<D 9455

O si queremos multiplicarlos, entonces Product:


In[71]:= Out[71]=

Product@i ^ 2, 8i, 1, 30<D

70359079638545882374689246780656119576032161719910400000000 000000

Pero supongamos que queremos realizar la anterior multiplicacin excepto para i=23. En ese caso tenemos dos alternativas. Una sencilla que sirve para muy pocos casos.
In[72]:= Out[72]=

Product@i ^ 2, 8i, 1, 30<D 23 ^ 2

13300393126379183813740878408441610505866193141760000000000 0000 Product@i ^ 2, 8i, 1, 22<D * Product@i ^ 2, 8i, 24, 30<D 13300393126379183813740878408441610505866193141760000000000 0000

O bien, algo un poco ms complejo pero mucho ms til.


In[73]:= Out[73]=

Sumatorias y productorios
Estos comandos son Sum y Product cuya sintaxis es: Sum[expresin, {variable de la sumatoria, min valor, max valor}] Product[expresin, {variable del productorio, min valor, max valor}]

18

Jos Cceres Gonzlez

Ayudas y mensajes de error


En ocasiones, no recordamos la sintaxis de una instruccin o incluso el nombre completo de la instruccin. En esos casos podemos utilizar las utilidades ? y * aunque la ayuda proporcionada aparece en ingls. Por ejemplo para consultar la sintaxis de If o aquellos comandos que empiezan por Com podemos hacer:
In[74]:=

If@condition, t, fD gives t if condition evaluates to True, and f if it evaluates to False. If@condition, t, f, uD gives u if condition evaluates to neither True nor False. ? Com* Complex Complexes ComplexExpand ComplexInfinity ComplexityFunction Compose ComposeList

? If

In[75]:=

CommonDefaultFormatTypes Compile Compiled ComposeSeries CompiledFunction Complement CompoundExpression CompletionsListPacket

Composition

Varios comandos de Mathematica tienen una serie de opciones para alterar el aspecto de su salida. Para consultarlas, slo debemos utilizar Options como en el siguiente ejemplo.

Mathematica para Clculo numrico Options@PlotD

19

In[76]:=

Out[76]=

1 9AspectRatio , Axes Automatic, GoldenRatio AxesLabel None, AxesOrigin Automatic, AxesStyle Automatic, Background Automatic, ColorOutput Automatic, Compiled True, DefaultColor Automatic, Epilog 8<, Frame False, FrameLabel None, FrameStyle Automatic, FrameTicks Automatic, GridLines None, ImageSize Automatic, MaxBend 10., PlotDivision 30., PlotLabel None, PlotPoints 25, PlotRange Automatic, PlotRegion Automatic, PlotStyle Automatic, Prolog 8<, RotateLabel True, Ticks Automatic, DefaultFont $DefaultFont, DisplayFunction $DisplayFunction, FormatType $FormatType, TextStyle $TextStyle=

En cuanto a los mensajes de error ms comunes, empezemos con aquellos relativos a la sintaxis de los comandos. En Mathematica no existe el mensaje de Sintax Error, sino que educadamente nos indica que hay una instruccin que se escribe de manera muy parecida a lo que estamos escribiendo
In[77]:=

Whila

General::spell1 : Possible spelling error: new symbol name "Whila" is similar to existing symbol "While".
Out[77]=

Whila

Si escribimos un comando correctamente pero con un nmero equivocado de argumentos entonces obtenemos:
In[78]:=

For@i = 1D For@i = 1D

For::argtu : For called with 1 argument; 3 or 4 arguments are expected.


Out[78]=

En ocasiones, uno se empea en utilizar un nombre de variable que ya est reservado por Mathematica

20

Jos Cceres Gonzlez

In[79]:=

D = 1;

Set::wrsym : Symbol D is Protected. o bien algn otro que hemos utilizado anteriormente con fines muy distintos. Recuerda que en este caso se puede utilizar Clear
In[80]:=

Set::write : Tag Integer in 1@x_D is Protected. Si no hemos definido adecuadamente una funcin, al dibujarla podemos obtener el siguiente error.
In[82]:=

f = 1; f@x_D = x ^ 2 + 1;

p@xD = x ^ 2 + 3 x + 1; Plot@p@xD, 8x, - 1, 1<D

Plot::plnr : p@xD is not a machine-size real number at x = - 1.. Plot::plnr : p@xD is not a machine-size real number at x = - 0.918866. Plot::plnr : p@xD is not a machine-size real number at x = - 0.830382. General::stop : Further output of Plot::plnr will be suppressed during this calculation.
1 0.8 0.6 0.4 0.2

0.2 Out[83]=

0.4

0.6

0.8

Graphics

Si nos empeamos en referenciar una coordenada fuera del rango de un vector o una matriz, sucede esto:

Mathematica para Clculo numrico x = 81, 2, 3<; x@@4DD 81, 2, 3<P4T

21

In[84]:=

Part::partw : Part 4 of 81, 2, 3< does not exist.


Out[85]=

Por ltimo, algo verdaderamente desastroso ocurre cuando se utiliza mal una funcin recursiva
In[86]:=

MalRecursivo@n_D = MalRecursivo@n - 1D Hold@MalRecursivo@- 1 + H- 4095 + nLDD

$IterationLimit::itlim : Iteration limit of 4096 exceeded.


Out[86]=

Ayudas
Como ayudas activas mientras se escribe un documento de Mathematica tenemos dos: ?comando nos da la sintaxis del comando deseado ?algo* nos da una lista con aquellas instrucciones disponibles que empiezan por algo Options[comando] nos proporciona las diferentes opciones que se pueden utilizar con ese comando.

Das könnte Ihnen auch gefallen