(************** Content-type: application/mathematica ************** CreatedBy='Mathematica 5.1' Mathematica-Compatible Notebook This notebook can be used with any Mathematica-compatible application, such as Mathematica, MathReader or Publicon. The data for the notebook starts with the line containing stars above. To get the notebook into a Mathematica-compatible application, do one of the following: * Save the data starting with the line of stars above into a file with a name ending in .nb, then open the file inside the application; * Copy the data starting with the line of stars above to the clipboard, then use the Paste menu command inside the application. Data for notebooks contains only printable 7-bit ASCII and can be sent directly in email or through ftp in text mode. Newlines can be CR, LF or CRLF (Unix, Macintosh or MS-DOS style). NOTE: If you modify the data for this notebook not in a Mathematica- compatible application, you must delete the line below containing the word CacheID, otherwise Mathematica-compatible applications may try to use invalid cache data. For more information on notebooks and Mathematica-compatible applications, contact Wolfram Research: web: http://www.wolfram.com email: info@wolfram.com phone: +1-217-398-0700 (U.S.) Notebook reader applications are available free of charge from Wolfram Research. *******************************************************************) (*CacheID: 232*) (*NotebookFileLineBreakTest NotebookFileLineBreakTest*) (*NotebookOptionsPosition[ 32264, 905]*) (*NotebookOutlinePosition[ 33828, 948]*) (* CellTagsIndexPosition[ 33784, 944]*) (*WindowFrame->Normal*) Notebook[{ Cell[TextData[{ "Matem\[AAcute]ticas con ", StyleBox["Mathematica", FontSlant->"Italic"] }], "Title"], Cell["\<\ Pr\[AAcute]ctica 1. Entorno de trabajo. Aritm\[EAcute]tica. C\[AAcute]lculo \ simb\[OAcute]lico y aproximado. Operaciones boleanas. \ \>", "Subtitle"], Cell[TextData[StyleBox["Francisco Javier P\[EAcute]rez Gonz\[AAcute]lez\n\ Departamento de An\[AAcute]lisis Matem\[AAcute]tico\nUniversidad de Granada", FontSize->12]], "Author", TextAlignment->Left], Cell[CellGroupData[{ Cell[TextData[{ "El entorno de trabajo. Distintos tipos de celdas. Evaluaci\[OAcute]n de \ celdas de ", StyleBox["input", FontSlant->"Italic"] }], "Section"], Cell[TextData[{ "Acabas de abrir un cuaderno (notebook) de ", StyleBox["Mathematica", FontSlant->"Italic"], StyleBox[ ". Arriba tienes la barra de men\[UAcute] y a la derecha tienes una \ \"paleta\" cuya utilidad ir\[AAcute]s aprendiendo en lo que sigue. Lo primero \ que vas a hacer es maximizar esta ventana para que puedas leer mejor (la \ paleta se queda escondida detr\[AAcute]s de ella). Observa que este cuaderno \ est\[AAcute] estructurado en ", FontVariations->{"CompatibilityType"->0}], StyleBox["celdas", FontSlant->"Italic", FontVariations->{"CompatibilityType"->0}], StyleBox[ ". A la derecha de cada celda ver\[AAcute]s uno o varios corchetes. El m\ \[AAcute]s interior de ellos delimita la celda en cuesti\[OAcute]n. ", FontVariations->{"CompatibilityType"->0}], StyleBox["Mathematica", FontSlant->"Italic", FontVariations->{"CompatibilityType"->0}], StyleBox[ " suele agrupar las celdas en varias categor\[IAcute]as como, por ejemplo, \ pertenecer a la misma secci\[OAcute]n o a la misma subsecci\[OAcute]n; y es \ eso precisamente lo que reflejan los corchetes externos. Hay celdas de \ distintos tipos. Esta que est\[AAcute]s leyendo es una celda de texto y si te \ fijas bien el corchete que la delimita tiene una doble barrita arriba. Para \ escribir en un cuaderno de ", FontVariations->{"CompatibilityType"->0}], StyleBox["Mathematica", FontSlant->"Italic", FontVariations->{"CompatibilityType"->0}], StyleBox[" primero ", FontVariations->{"CompatibilityType"->0}], StyleBox["tienes que crear una nueva celda", FontSlant->"Italic", FontVariations->{"CompatibilityType"->0}], StyleBox[ " lo que se hace como sigue: situa el rat\[OAcute]n fuera de una celda, por \ ejemplo, en el peque\[NTilde]o espacio que hay entre dos celdas consecutivas \ y cuando el cursor se convierta en una barra horizontal haz clic con el bot\ \[OAcute]n izquierdo del rat\[OAcute]n y aparecer\[AAcute] una l\[IAcute]nea \ horizontal; seguidamente escribe lo que quieras. Cuando acabes de escribir se \ habr\[AAcute] creado una nueva celda cuyo contenido ser\[AAcute] lo que t\ \[UAcute] has escrito. Escribe ahora tu nombre debajo de esta celda.", FontVariations->{"CompatibilityType"->0}] }], "Text"], Cell[TextData[{ "Como no le has dicho a ", StyleBox["Mathematica", FontSlant->"Italic"], " que solamente quer\[IAcute]as escribir texto el programa ha creado una \ nueva ", StyleBox["celda de entrada", FontSlant->"Italic"], " (input cell). Observa que, con el estilo que estamos usando en este \ cuaderno, las celdas de entrada tienen un aspecto muy diferente de las celdas \ de texto. Pon el rat\[OAcute]n sobre el corchete interior de la celda que has \ creado con tu nombre y cuando el cursor se convierta en una flecha haz clic \ con el bot\[OAcute]n izquierdo del rat\[OAcute]n. As\[IAcute] es como se \ seleccionan celdas. Ahora, mientras la celda est\[AAcute] seleccionada, pulsa \ Alt+7 para convertirla en una celda de texto (alternativamente, en la barra \ de men\[UAcute] Cell\[Rule]Display As\[Rule]Text). \nLas ", StyleBox["celdas de input", FontSlant->"Italic"], " son las que se crean por defecto y sirven para introducir datos y \ funciones y podemos pedirle a ", StyleBox["Mathematica", FontSlant->"Italic"], " que las ejecute y realice los c\[AAcute]lculos indicados. Para ejecutar \ una celda de", StyleBox[" input", FontSlant->"Italic"], " debes hacer clik con el bot\[OAcute]n izquierdo del rat\[OAcute]n en alg\ \[UAcute]n lugar dentro de la celda. Ver\[AAcute]s un cursor vertical que \ aparece y desaparece. Ahora pulsa la tecla \"Intro\" del teclado \ num\[EAcute]rico o bien pulsa \"may\[UAcute]sculas\" + \"Return\" y comprobar\ \[AAcute]s que ", StyleBox["Mathematica", FontSlant->"Italic"], " ejecuta la celda y te da la respuesta correspondiente en una ", StyleBox["celda de salida", FontSlant->"Italic"], ". Ejecuta la siguiente celda." }], "Text"], Cell[BoxData[ \(\[Integral]\_\(-\[Infinity]\)\%\[Infinity]\( Sin[x]\/x\) \[DifferentialD]x\)], "Input"], Cell[TextData[{ "Observa que el programa ha escrito In[1] y Out[1] para referirse a la \ entrada y salida correspondientes. De esta forma ", StyleBox["Mathematica", FontSlant->"Italic"], " lleva un control de todo lo que vas haciendo lo que te permite aprovechar \ los resultados obtenidos para otros c\[AAcute]lculos posteriores. \ F\[IAcute]jate en que el corchete que delimita una celda de entrada tiene un \ peque\[NTilde]o triangulito en la parte superior. En esta primera evaluaci\ \[OAcute]n ", StyleBox["Mathematica", FontSlant->"Italic"], " ha tenido que cargar el n\[UAcute]cleo (el ", StyleBox["kernel", FontSlant->"Italic"], "), es decir, las reglas e instrucciones internas de c\[AAcute]lculo del \ programa las cuales ya permanecer\[AAcute]n en la memoria hasta que lo \ cierres. Por eso esta primera evaluaci\[OAcute]n es algo m\[AAcute]s lenta de \ lo normal." }], "Text"], Cell[TextData[{ "En una misma celda puedes escribir varias instrucciones en l\[IAcute]neas \ distintas (para pasar de una l\[IAcute]nea a otra se pulsa \"Return\") y ", StyleBox["Mathematica", FontSlant->"Italic"], " interpreta cada una de ellas como una entrada diferente. La siguiente \ celda de input contiene dos entradas y ", StyleBox["Mathematica", FontSlant->"Italic"], " producir\[AAcute] dos salidas, una para cada entrada." }], "Text"], Cell[BoxData[{ \(Limit[\(x - Sin[x]\)\/x\^3, x \[Rule] 0]\), \(\[Integral]\_\(-\[Infinity]\)\%\[Infinity]\(\( 1 - Cos[x]\)\/x\^2\) \[DifferentialD]x\)}], "Input"], Cell["\<\ Comprueba que si ahora ejecutas otra celda de entrada no se le asignar\ \[AAcute] In[3] sino In[4].\ \>", "Text"], Cell[BoxData[ \(Expand[\((1 + x + x\^2)\)\^7, x]\)], "Input"], Cell[TextData[{ "A veces no interesa que se muestre en pantalla el resultado de una \ entrada. Por ejemplo si le pides a ", StyleBox["Mathematica", FontSlant->"Italic"], " que genere una lista con todos los n\[UAcute]meros del 1 al 100 no te \ interesa para nada que se muestre el resultado en pantalla. Ejecuta la \ siguiente celda." }], "Text"], Cell[BoxData[ \(Range[100]\)], "Input"], Cell[TextData[{ "Para evitar esto basta escribir \";\" al final de la entrada. De esta \ forma ", StyleBox["Mathematica", FontSlant->"Italic"], " hace y recuerda los c\[AAcute]culos pero no los muestra en pantalla." }], "Text"], Cell[BoxData[ \(\(Range[200]; \)\)], "Input"], Cell[TextData[{ "Aparentemente ", StyleBox["Mathematica", FontSlant->"Italic"], " no ha hecho nada. Pero eso no es as\[IAcute]. Para referirnos a una \ salida en ", StyleBox["Mathematica", FontSlant->"Italic"], " podemos hacerlo invocando de forma expl\[IAcute]cita su identificaci\ \[OAcute]n; ", StyleBox["\"Out[p]\"", FontWeight->"Bold"], "se refiere a la salida n\[UAcute]mero \"", StyleBox["p", FontWeight->"Bold"], "\", y tambi\[EAcute]n con el s\[IAcute]mbolo \"", StyleBox["%", FontWeight->"Bold"], "\" ", StyleBox["el cual se refiere siempre a la salida inmediata anterior", FontWeight->"Bold"], ", el s\[IAcute]mbolo \"", StyleBox["%%", FontWeight->"Bold"], "\" se refiere a ", StyleBox["la salida pen\[UAcute]ltima", FontWeight->"Bold"], ", \"", StyleBox["%%%", FontWeight->"Bold"], "\" a la salida antepen\[UAcute]ltima, etc\[EAcute]tera. Comprobemos que, \ efectivamente, la \[UAcute]ltima salida son los primeros doscientos \ n\[UAcute]meros." }], "Text"], Cell[BoxData[ \(%\)], "Input"], Cell["\<\ Antes de acabar esta primera secci\[OAcute]n, te propongo que selecciones con \ el rat\[OAcute]n el corchete exterior de la derecha y hagas doble clic. Ver\ \[AAcute]s c\[OAcute]mo las celdas de esta secci\[OAcute]n quedan todas \ agrupadas en una sola vi\[EAcute]ndose solamente el encabezado de la secci\ \[OAcute]n. Para abrirlas de nuevo selecciona el corchete con forma de flecha \ que las agrupa y haz doble clic en \[EAcute]l.\ \>", "Text"] }, Open ]], Cell[CellGroupData[{ Cell["Operaciones aritm\[EAcute]ticas", "Section"], Cell[TextData[{ "Puedes realizar operaciones aritm\[EAcute]ticas con ", StyleBox["Mathematica", FontSlant->"Italic"], " igual que con una calculadora manual. Los s\[IAcute]mbolos para estas \ operaciones son los usuales (\"+\", \"-\", \"*\", \"/\", y \"^\") y se \ realizan con la precedencia usual: la exponenciaci\[OAcute]n (\"^\") precede \ a la multiplicaci\[OAcute]n (\"*\") y a la divisi\[OAcute]n (\"/\") las \ cuales tienen igual precedencia y, a su vez, preceden a la suma y a la \ diferencia que tienen igual precedencia. En una expresi\[OAcute]n como \ \"6*7^5+26\" se calcula primero \"7^5\" seguido por \"6*7^5\" para terminar \ sumando \"26\"." }], "Text"], Cell[BoxData[ \(6*7^5 + 26\)], "Input"], Cell[TextData[{ StyleBox["Mathematica", FontSlant->"Italic"], " permite que sustituyas el s\[IAcute]mbolo de la multiplicaci\[OAcute]n \ por un espacio en blanco." }], "Text"], Cell[BoxData[ \(6\ 7^5 + 26\)], "Input"], Cell["\<\ Ahora que est\[AAcute]s empezando es preferible que uses el s\[IAcute]mbolo \ de la multiplicaci\[OAcute]n para evitar posibles errores. \ \>", "Text"], Cell[TextData[{ "A diferencia de las calculadoras manuales m\[AAcute]s sencillas, ", StyleBox["Mathematica", FontSlant->"Italic"], " puede trabajar con fracciones en forma simb\[OAcute]lica, es decir, sin \ convertirlas a su expresi\[OAcute]n decimal." }], "Text"], Cell[BoxData[ \(7 + 9\/13\)], "Input"], Cell[BoxData[ \(8\/11 + 6\/7\)], "Input"], Cell["\<\ Las fracciones se representan siempre en su forma irreducible.\ \>", "Text"], Cell[BoxData[ \(4032\/15015\)], "Input"], Cell[TextData[{ "Naturalmente, la potencia de c\[AAcute]lculo de ", StyleBox["Mathematica", FontSlant->"Italic"], " es muy superior a la de una calculadora manual." }], "Text"], Cell[BoxData[ \(3^95\)], "Input"] }, Open ]], Cell[CellGroupData[{ Cell["Valores exactos y aproximados", "Section"], Cell[TextData[{ "En ", StyleBox["Mathematica", FontSlant->"Italic"], " hay dos clases de valores: exactos y aproximados. Valores exactos son los \ enteros, las fracciones y las representaciones simb\[OAcute]licas de \ constantes como \[Pi] o ", Cell[BoxData[ \(TraditionalForm\`\@2\)]], ". De ellos ", StyleBox["Mathematica", FontSlant->"Italic"], " sabe calcular tantos d\[IAcute]gitos como sea necesario en cualquier c\ \[AAcute]lculo. Los valores aproximados son los n\[UAcute]meros decimales, es \ decir, n\[UAcute]meros en cuya expresi\[OAcute]n aparece un punto decimal. " }], "Text"], Cell[TextData[{ "Debes tener siempre presente que ", StyleBox["Mathematica", FontSlant->"Italic"], " devuelve los resultados de la misma forma que introduces los datos, es \ decir, ", StyleBox["Mathematica", FontSlant->"Italic"], " nunca tratar\[AAcute] de convertir valores exactos en valores aproximados \ y si en un c\[AAcute]lculo intervienen valores exactos y aproximados el \ resultado ser\[AAcute] un valor aproximado." }], "Text"], Cell[BoxData[ \(4^\((1/2)\) + Log[\[ExponentialE]]\)], "Input"], Cell[TextData[{ "En este caso como la operaci\[OAcute]n puede realizarse de forma exacta, \ ", StyleBox["Mathematica", FontSlant->"Italic"], " la hace y presenta el resultado exacto obtenido." }], "Text"], Cell[BoxData[ \(3^\((1/2)\) + Log[5]\)], "Input"], Cell[TextData[{ "En este c\[AAcute]lculo como el resultado no es un n\[UAcute]mero exacto \ pero los datos s\[IAcute] lo son, ", StyleBox["Mathematica", FontSlant->"Italic"], " trabaja de forma simb\[OAcute]lica, no realiza la operaci\[OAcute]n \ indicada y devuelve los mismos datos. Observa lo que ocurre si ahora \ cambiamos el valor exacto \"5\" por \"5.\" que es un n\[UAcute]mero con punto \ decimal y por tanto es considerado por ", StyleBox["Mathematica", FontSlant->"Italic"], " como un valor aproximado." }], "Text"], Cell[BoxData[ \(3^\((1/2)\) + Log[5. ]\)], "Input"], Cell[TextData[{ StyleBox["Mathematica", FontSlant->"Italic"], " realiza las operaciones indicadas y el resultado tambi\[EAcute]n es un \ valor aproximado. Pobre resultado pensar\[AAcute]s: s\[OAcute]lo cinco \ decimales, cualquier calculadora manual es m\[AAcute]s precisa. No te \ precipites. Aunque ", StyleBox["Mathematica ", FontSlant->"Italic"], "por defecto presenta en pantalla los valores aproximados con solamente ", StyleBox["seis d\[IAcute]gitos", FontSlant->"Italic"], " y a veces los redondea como hizo antes; los n\[UAcute]meros con punto \ decimal son guardados en la memoria interna de ", StyleBox["Mathematica", FontSlant->"Italic"], " con al menos 16 d\[IAcute]gitos significativos. El comando ", Cell[BoxData[ FormBox[ StyleBox[\(ImputForm[numero]\), FontWeight->"Bold"], TraditionalForm]]], " sirve para que ", StyleBox["Mathematica", FontSlant->"Italic"], " presente en pantalla todos los d\[IAcute]gitos que conoce de un \ n\[UAcute]mero. " }], "Text"], Cell[BoxData[ \(\(InputForm[3^\((1/2)\) + Log[5. ]]\ \)\)], "Input"], Cell[TextData[{ "Lo anterior te indica que ", StyleBox["es importante la forma en que introducimos los datos", FontWeight->"Bold"], ": no es lo mismo introducir 1/2 que .5. Tampoco es lo mismo 2. (un n\ \[UAcute]mero real aproximado para ", StyleBox["Mathematica", FontSlant->"Italic"], ") que 2 sin punto decimal (que es tratado como un n\[UAcute]mero entero). \ Como ya te he dicho antes, cuando ", StyleBox["Mathematica", FontSlant->"Italic"], " trabaja con valores exactos lo hace de forma simb\[OAcute]lica y el \ resultado ser\[AAcute] tambi\[EAcute]n un valor exacto. \n", StyleBox["Mathematica", "TI", FontSlant->"Italic"], " puede trabajar con n\[UAcute]meros aproximados de cualquier cantidad de d\ \[IAcute]gitos. La ", StyleBox["precisi\[OAcute]n", FontWeight->"Bold", FontSlant->"Italic"], " ", StyleBox["de un n\[UAcute]mero real aproximado es el n\[UAcute]mero de d\ \[IAcute]gitos (en base 10) de dicho n\[UAcute]mero que son considerados como \ significativos para los c\[AAcute]lculos", FontSlant->"Italic"], ". ", StyleBox["Mathematica", FontSlant->"Italic"], " distingue dos clases de n\[UAcute]meros reales aproximados: \ n\[UAcute]meros de precisi\[OAcute]n arbitraria y \ \"n\[UAcute]meros-m\[AAcute]quina\" con precisi\[OAcute]n de m\[AAcute]quina. \ Los n\[UAcute]meros de precisi\[OAcute]n arbitraria pueden tener una cantidad \ arbitraria de d\[IAcute]gitos y su precisi\[OAcute]n se ajusta a medida que \ se hacen c\[AAcute]lculos con ellos. Los n\[UAcute]meros m\[AAcute]quina \ tienen un n\[UAcute]mero fijo de d\[IAcute]gitos significativos para los c\ \[AAcute]lculos y su precisi\[OAcute]n es siempre la misma. Dicha precisi\ \[OAcute]n, con la que ", StyleBox["Mathematica", FontSlant->"Italic"], " trabaja por defecto, depende del hardware de punto flotante que se \ utilice y su valor es el de la variable global ", StyleBox["$MachinePrecision", FontWeight->"Bold"], "." }], "Text"], Cell[BoxData[ \($MachinePrecision\)], "Input"], Cell[TextData[{ " Un valor frecuente de dicha variable es 16. ", StyleBox["Mathematica", FontWeight->"Bold", FontSlant->"Italic"], " ", StyleBox[ "considera que los n\[UAcute]meros aproximados que se especifican con un n\ \[UAcute]mero de d\[IAcute]gitos menor o igual que 16 son n\[UAcute]meros-m\ \[AAcute]quina y, por tanto, su precisi\[OAcute]n es igual a 16.", FontWeight->"Bold"] }], "Text"], Cell[BoxData[{ \(Precision[1.33]\), \(1. /7\), \(Precision[1. /7]\), \(InputForm[1. /7]\)}], "Input"], Cell[TextData[{ "Los valores exactos tienen precisi\[OAcute]n infinita y pueden convertirse \ en n\[UAcute]meros aproximados con la precisi\[OAcute]n que queramos. El \ comando \"", StyleBox["N[expr, n]", FontWeight->"Bold"], "\" donde \"", StyleBox["expr", FontWeight->"Bold"], "\" es un valor exacto y ", StyleBox["n>16", FontWeight->"Bold"], ", eval\[UAcute]a \"", StyleBox["expr", FontWeight->"Bold"], "\" num\[EAcute]ricamente convirti\[EAcute]ndola en un n\[UAcute]mero \ aproximado con ", StyleBox["n", FontWeight->"Bold"], " d\[IAcute]gitos de precisi\[OAcute]n, mientras que ", StyleBox["N[expr,n]", FontWeight->"Bold"], " para ", StyleBox["n\[LessEqual]16", FontWeight->"Bold"], " eval\[UAcute]a \"", StyleBox["expr", FontWeight->"Bold"], "\" convirti\[EAcute]ndola en un n\[UAcute]mero-m\[AAcute]quina con \ precision 16. N", StyleBox[ "o es posible aumentar la precisi\[OAcute]n de un n\[UAcute]mero aproximado \ con el comando", FontWeight->"Bold"], " \"", StyleBox["N[expr, n]", FontWeight->"Bold"], "\"." }], "Text"], Cell[BoxData[{ \(Precision[\@2]\ \ (*\ Un\ n\[UAcute]mero\ exacto\ tiene\ precisi\[OAcute]n\ infinita\ *) \), \(Precision[N[\@2, 30]]\ (*\ Podemos\ convertirlo\ en\ un\ n\[UAcute]mero\ de\ la\ precisi\[OAcute]n \ que\ queramos\ *) \ \), \(N[\@2, 30]\ (*\ Mathematica\ muestra\ en\ pantalla\ el\ valor\ num\[EAcute]rico\ de\ \@2\ con\ 30\ d\[IAcute]gitos\ *) \n\), \(Precision[\@2. ]\ (*\ Un\ n\[UAcute]mero\ m\[AAcute]quina\ tiene\ precisi\[OAcute]n\ 16\ *) \), \(Precision[N[\@2. , 50]]\ (*\ No\ podemos\ aumentar\ su\ precisi\[OAcute]n\ *) \), \(N[\@2. , 50]\ (*\ Mathematica\ muestra\ en\ pantalla\ 16\ d\[IAcute]gitos\ *) \n\), \(N[\@2, 3]\ (*\ Mathematica\ muestra\ en\ pantalla\ el\ valor\ num\[EAcute]rico\ de\ \@2\ con\ 3\ d\[IAcute]gitos\ *) \), \(Precision[N[\@2, 3]]\ (*\ [ N[\@2, 3] es\ un\ n\[UAcute]mero\ m\[AAcute]quina\ con\ precisi\[OAcute]n\ 16\ *) \), \(InputForm[N[\@2, 3]]\n (*\ La\ forma\ en\ que\ Mathematica\ lo\ representa\ internamente\ con\ 16\ d\[IAcute]gitos . \ El\ mismo\ resultado\ se\ obtiene\ para\ N[\@2, k]\ con\n\t\t\t\ k \[LessEqual] 16\ *) \)}], "Input"], Cell["\<\ En la celda anterior hemos escrito varios comentarios. Los comentarios son \ imprescindibles para explicar lo que hacen los comandos que defines al \ escribir un programa. Un comentario es de la forma \"(* aqu\[IAcute] se \ escribe el texto del comentario *)\" y son ignorados por el programa cuando \ se ejecutan las celdas que los contienen.\ \>", "Text"], Cell[TextData[{ "Cuando ", StyleBox["Mathematica", FontSlant->"Italic"], " trabaja con valores exactos se dice que lo hace con \"precisi\[OAcute]n \ infinita\". Ya puedes suponer que trabajar simb\[OAcute]licamente con valores \ exactos requiere m\[AAcute]s memoria y m\[AAcute]s tiempo de c\[AAcute]lculo \ que trabajar con valores aproximados, por eso cuando escribas programas que \ deban realizar muchos c\[AAcute]lculos es importante que te asegures de que ", StyleBox["Mathematica", FontSlant->"Italic"], " trabajar\[AAcute] con valores aproximados (controlando, si es necesario, \ la precisi\[OAcute]n con la que trabaja)." }], "Text"] }, Open ]], Cell[CellGroupData[{ Cell["Operaciones boleanas", "Section"], Cell[TextData[{ StyleBox["Mathematica", FontSlant->"Italic"], " tienen algunas funciones que no devuelven un resultado num\[EAcute]rico \ sino un valor \"False\" o \"True\". Entre ellas se encuentran: \nA) \ Operadores relacionales de comparaci\[OAcute]n de dos expresiones aritm\ \[EAcute]ticas: menor (<), mayor (>), menor o igual (<=), mayor o igual (>=), \ igual (==) \[DownExclamation]con dos signos de igualdad!, distinto (!=). \nB) \ Operadores l\[OAcute]gicos que trabajan con valores \"False\" y \"True\" y \ devuelven como valor \"False\" o \"True\". Entre estos operadores \ est\[AAcute]n: el operador \"and\" (&&) (conjunci\[OAcute]n l\[OAcute]gica \ que devuelve \"True\" si los dos valores sobre los que act\[UAcute]a son \ \"True\" y devuelve \"False\" en otro caso), el oerador \"or\" ( | | ) \ (disyunci\[OAcute]n l\[OAcute]gica que devuelve \"True\" si algunos de los \ valores sobre los que act\[UAcute]a es \"True\" y devuelve \"False\" si ambos \ son \"False\").\nTecleando \"\[EscapeKey] <= \[EscapeKey]\" obtienes \ \[LessEqual], tecleando \"\[EscapeKey] >= \[EscapeKey]\" obtienes \ \[GreaterEqual], tecleando \"\[EscapeKey] && \[EscapeKey]\" obtienes \[And], \ tecleando \"\[EscapeKey] || \[EscapeKey]\" obtienes \[Or], tecleando \"\ \[EscapeKey] != \[EscapeKey]\" obtienes \[NotEqual].\nAqu\[IAcute] tienes \ algunos ejemplos." }], "Text"], Cell[BoxData[{ \(5 > 5\), \(8 \[GreaterEqual] 8\), \(\((5 > 7)\) || \((3 < 4)\)\), \(\((5 > 7)\) && \((3 > 4)\)\), \(\@2 < 27/22\)}], "Input"], Cell[TextData[{ "Cuando ", StyleBox["Mathematica", FontSlant->"Italic"], " no puede dicidir una respuesta devuelve sin comentarios la misma expresi\ \[OAcute]n de entrada." }], "Text"], Cell[BoxData[ \(\(x < 27\ (*\ como\ x\ no\ tiene\ asignado\ ning\[UAcute]n\ valor\ num\[EAcute]rico\ Mathematica\ no\ puede\ hacer\ la\ comparaci\[OAcute]n\ que\ pedimos \ *) \)\)], "Input"], Cell[TextData[{ "El operador de igualdad (==) puede utilizarse para comprobar si dos \ cantidades num\[EAcute]ricas \"", StyleBox["expr1", FontWeight->"Bold"], "\" y \"", StyleBox["expr2", FontWeight->"Bold"], "\" son \"iguales\". Si las cantidades son aproximadas el operador de \ igualdad (==) ", StyleBox["comprueba si ambas son iguales con la precisi\[OAcute]n de \ aquella que la tiene menor", FontWeight->"Bold", FontSlant->"Italic"], ". Tambi\[EAcute]n debes de tener en cuenta que ", StyleBox["Mathematica", FontSlant->"Italic"], " asocia a cada n\[UAcute]mero aproximado ", Cell[BoxData[ \(TraditionalForm\`x\)]], " una cota de error \[Delta] (relacionada con el n\[UAcute]mero de cifras \ decimales de ", Cell[BoxData[ \(TraditionalForm\`x\)]], " y con el valor absoluto de ", Cell[BoxData[ \(TraditionalForm\`x\)]], ") y considera que el valor verdadero de dicho n\[UAcute]mero puede ser \ cualquier n\[UAcute]mero en el intervalo ", Cell[BoxData[ \(TraditionalForm\`\(\(]\) \(x\)\) - \[Delta]/2, x + \[Delta]/\(\(2\)\([\)\)\)]], ". Por ello ", StyleBox["Mathematica", FontSlant->"Italic"], " considera iguales a ", Cell[BoxData[ \(TraditionalForm\`x\)]], " todos los n\[UAcute]meros en dicho intervalo. Por esta raz\[OAcute]n el \ operador de igualdad puede proporcionar algunas veces respuestas extra\ \[NTilde]as. No es este el momento para entrar en detalles, solamente quiero \ llamarte la atenci\[OAcute]n para que seas prudente en el uso del operador de \ igualdad (==) cuando quieras usarlo para saber cu\[AAcute]ndo dos cantidades \ pueden ser consideradas iguales a efectos de c\[AAcute]lculo. Cuando el \ operador de igualdad \"", StyleBox["cantidad1==cantidad2\"", FontWeight->"Bold"], " proporciona la salida True, debes interpretar que dichas cantidades son \ iguales con una cierta cota de error. No es propio de la asignatura de An\ \[AAcute]lisis Matem\[AAcute]tico profundizar en estos temas. En otras \ asignaturas estudiar\[AAcute]s la aritm\[EAcute]tica de punto flotante, la \ forma en que se representan internamente los n\[UAcute]meros en un ordenador, \ la propagaci\[OAcute]n de errores de redondeo y otros temas afines y entonces \ entender\[AAcute]s estos comportamientos (que no son, por supuesto, espec\ \[IAcute]ficos de ", StyleBox["Mathematica", FontSlant->"Italic"], "). Aqu\[IAcute] tienes algunos ejemplos de lo que digo." }], "Text"], Cell[BoxData[ \(\(123456789012345. == 123456789012344\ (*\ Mathematica\ considera\ que\ estos\ dos\ n\[UAcute]meros\ son\ iguales . \ Observa\ que\ su\ diferencia\ es\ igual\ a\ 1\ *) \)\)], "Input"], Cell[BoxData[ \(\(1.2345678901234 == 1.2345678901233\ (*\ Mathematica\ considera\ que\ estos\ dos\ n\[UAcute]meros\ son\ distintos . \ Observa\ que\ su\ diferencia\ es\ igual\ a\ 10^\(-13\)\ \ *) \)\)], "Input"], Cell[BoxData[ \(\(1.23456789012349 == 1.23456789012348 (*\ Mathematica\ considera\ que\ estos\ dos\ n\[UAcute]meros\ son\ iguales . \ Observa\ que\ su\ diferencia\ es\ igual\ a\ 10^\(-14\)\ *) \)\)], "Input"], Cell[BoxData[ \(1 == \(\(1.\)\(+\)\(10^\(-14\)\)\(\ \ \)\( (*\ Aqu\[IAcute]\ trabajamos\ con\ precisi\[OAcute]n\ 16\ y\ \ Mathematica\ considera\ que\ dichas\ cantidades\ son\ iguales\ *) \)\)\)], \ "Input"], Cell[BoxData[ \(\(1 == N[1 + 10^\(-14\), 17]\ \ (*\ Aqu\[IAcute]\ trabajamos\ con\ precisi\[OAcute]n\ 17\ y\ Mathematica\ considera\ que\ dichas\ cantidades\ no\ son\ iguales\ *) \ \)\)], "Input"], Cell[BoxData[ \(\(Pi == N[Pi, 2]\ (*\ Comprueba\ si\ son\ iguales\ consider\[AAcute]ndolos\ como\ n\[UAcute]meros\ m\[AAcute]quina\ *) \)\)], "Input"] }, Open ]], Cell[CellGroupData[{ Cell[TextData[{ "Consultar la ayuda de ", StyleBox["Mathematica", FontSlant->"Italic"], " " }], "Section"], Cell[TextData[{ "Consultar la ayuda de ", StyleBox["Mathematica", FontSlant->"Italic"], " es lo m\[AAcute]s f\[AAcute]cil que te puedas imaginar. Basta que \ escribas uno o dos s\[IAcute]mbolos de interrogaci\[OAcute]n seguido del \ nombre del comando del que quieres informaci\[OAcute]n. Ejecuta la siguiente \ celda." }], "Text"], Cell[BoxData[ \(\(?\ N\)\)], "Input"], Cell["Si todav\[IAcute]a quieres m\[AAcute]s informaci\[OAcute]n hazlo como \ sigue.", "Text"], Cell[BoxData[ \(?? \ N\)], "Input"], Cell["\<\ Para preguntar por todos los s\[IAcute]mbolos que empiezan por W puedes \ hacerlo como sigue.\ \>", "Text"], Cell[BoxData[ \(\(?\ W*\)\)], "Input"], Cell["\<\ Para preguntar por todos los s\[IAcute]mbolos que contienen Pre puedes \ hacerlo como sigue.\ \>", "Text"], Cell[BoxData[ \(\(?*Pre*\)\)], "Input"], Cell[TextData[{ StyleBox["Debes tener en cuenta que", FontWeight->"Bold"], " ", StyleBox["Mathematica", FontWeight->"Bold", FontSlant->"Italic"], " ", StyleBox["distingue entre may\[UAcute]sculas y min\[UAcute]sculas", FontWeight->"Bold"], "." }], "Text"] }, Open ]], Cell[CellGroupData[{ Cell[TextData[{ "Escribir expresiones matem\[AAcute]ticas en ", StyleBox["Mathematica", FontSlant->"Italic"], " " }], "Section"], Cell[TextData[{ "Frecuentemente las expresiones matem\[AAcute]ticas se pueden escribir de \ varias formas que solamente se diferencian por su apariencia \ tipogr\[AAcute]fica. Puedes escribir 3^(1/7) o ", Cell[BoxData[ \(TraditionalForm\`\@3\%7\)]], " a efectos de c\[AAcute]lculo son exactamente igual. Las paletas te ayudan \ a escribir con la apariencia que prefieras y son muy f\[AAcute]ciles de usar. \ En File\[Rule]Palettes encontrar\[AAcute]s varias paletas adem\[AAcute]s de \ la b\[AAcute]sica (BasicInput) que se abre al iniciar el programa. Tambi\ \[EAcute]n puedes consultar Edit\[Rule]Expression Input.Te indico a \ continuaci\[OAcute]n otra forma de escribir algunos s\[IAcute]mbolos de uso \ frecuente.\nPotencias: usa \"\[ControlKey]+6\". Por ejemplo: a \ \"\[ControlKey]+6\" b = ", Cell[BoxData[ \(TraditionalForm\`a\^b\)]], " (para salir de la celda \"inline\" que se crea hay que pulsar \ \[ControlKey]+espacio) \nRa\[IAcute]ces: usa \"\[ControlKey]+2\". Por \ ejemplo: \"\[ControlKey]+2\" a = ", Cell[BoxData[ \(TraditionalForm\`\@a\)]], " (para salir de la celda \"inline\" que se crea hay que pulsar \ \[ControlKey]+espacio) \nLetras griegas: usa \[EscapeKey]+letra latina \ equivalente+\[EscapeKey]. Por ejemplo: \[EscapeKey]+p+\[EscapeKey] = \[Pi].\n\ La letra E est\[AAcute] reservada en ", StyleBox["Mathematica", FontSlant->"Italic"], " para el n\[UAcute]mero base de los logaritmos naturales. Puedes \ escribirlo tambi\[EAcute]n con \[EscapeKey]+ee+\[EscapeKey] = \ \[ExponentialE].\nEl n\[UAcute]mero \[Pi] puedes escribirlo tambi\[EAcute]n \ Pi. " }], "Text"] }, Open ]], Cell[CellGroupData[{ Cell["Precauci\[OAcute]n importante", "Section"], Cell[TextData[{ "Cuando termines de hacer una pr\[AAcute]ctica con ", StyleBox["Mathematica", FontSlant->"Italic"], " es muy importante que borres todas las salidas (Output) antes de cerrar \ el cuaderno. Para ello vas a Kernel \[Rule] Delete all Output. Ten en cuenta \ que los archivos de Mathematica que contienen gr\[AAcute]ficos se corrompen \ con cierta frecuencia. Esto lo evitas suprimiendo todas las salidas antes de \ cerrar el cuaderno. Con ello no pierdes nada porque tu trabajo son los \ comandos y funciones que t\[UAcute] has definido y esos no se borran y pueden \ ejecutarse cuando el cuaderno se abra de nuevo." }], "Text"], Cell[CellGroupData[{ Cell["Ejercicios", "Exercise"], Cell[TextData[{ StyleBox["Ejercicio 1", FontWeight->"Bold"], ". Ordena de menor a mayor los n\[UAcute]meros \[Pi], ", Cell[BoxData[ \(1068966896\/340262731\)]], " y ", Cell[BoxData[ \(103993\/33102\)]], ".\n", StyleBox["Ejercicio 2", FontWeight->"Bold"], ". \[DownQuestion]Qu\[EAcute] n\[UAcute]mero es menor ", Cell[BoxData[ \(TraditionalForm\`\[ExponentialE]\^\[Pi]\)]], "o ", Cell[BoxData[ \(TraditionalForm\`\[Pi]\^\[ExponentialE]\)]], "?\n", StyleBox["Ejercicio 3", FontWeight->"Bold"], ". Explica la respuesta de ", StyleBox["Mathematica", FontSlant->"Italic"], " al comando N[N[Pi,15],30]." }], "Text"] }, Open ]] }, Open ]] }, FrontEndVersion->"5.1 for Microsoft Windows", ScreenRectangle->{{0, 1024}, {0, 685}}, WindowSize->{1016, 651}, WindowMargins->{{0, Automatic}, {Automatic, 0}}, PrintingCopies->1, PrintingPageRange->{2, 3}, PageHeaders->{{Cell[ TextData[ "F. Javier P\[EAcute]rez Gonz\[AAcute]lez\nDpto. An\[AAcute]lisis \ Matem\[AAcute]tico - Universidad de Granada"], "Header"], Cell[ TextData[ { CounterBox[ "Page"]}], "PageNumber"], Cell[ TextData[ "Entorno de trabajo. Aritm\[EAcute]tica. \nC\[AAcute]lculo simb\ \[OAcute]lico y aproximado. Operaciones boleanas. "], "Header"]}, {Cell[ TextData[ "F. Javier P\[EAcute]rez Gonz\[AAcute]lez\nDpto. An\[AAcute]lisis \ Matem\[AAcute]tico - Universidad de Granada"], "Header"], Cell[ TextData[ { CounterBox[ "Page"]}], "PageNumber"], Cell[ TextData[ "Entorno de trabajo. Aritm\[EAcute]tica. \nC\[AAcute]lculo simb\ \[OAcute]lico y aproximado. Operaciones boleanas. "], "Header"]}}, Magnification->1.25, StyleDefinitions -> "Classroom.nb" ] (******************************************************************* Cached data follows. If you edit this Notebook file directly, not using Mathematica, you must remove the line containing CacheID at the top of the file. The cache data will then be recreated when you save this file from within Mathematica. *******************************************************************) (*CellTagsOutline CellTagsIndex->{} *) (*CellTagsIndex CellTagsIndex->{} *) (*NotebookFileOutline Notebook[{ Cell[1754, 51, 109, 4, 83, "Title"], Cell[1866, 57, 160, 3, 80, "Subtitle"], Cell[2029, 62, 203, 3, 90, "Author"], Cell[CellGroupData[{ Cell[2257, 69, 165, 5, 77, "Section"], Cell[2425, 76, 2285, 46, 201, "Text"], Cell[4713, 124, 1737, 37, 213, "Text"], Cell[6453, 163, 116, 2, 76, "Input"], Cell[6572, 167, 914, 19, 117, "Text"], Cell[7489, 188, 464, 10, 54, "Text"], Cell[7956, 200, 180, 3, 114, "Input"], Cell[8139, 205, 123, 3, 33, "Text"], Cell[8265, 210, 65, 1, 62, "Input"], Cell[8333, 213, 356, 8, 54, "Text"], Cell[8692, 223, 43, 1, 60, "Input"], Cell[8738, 226, 237, 6, 33, "Text"], Cell[8978, 234, 49, 1, 60, "Input"], Cell[9030, 237, 1043, 33, 98, "Text"], Cell[10076, 272, 34, 1, 60, "Input"], Cell[10113, 275, 457, 7, 75, "Text"] }, Open ]], Cell[CellGroupData[{ Cell[10607, 287, 50, 0, 77, "Section"], Cell[10660, 289, 681, 12, 96, "Text"], Cell[11344, 303, 43, 1, 60, "Input"], Cell[11390, 306, 183, 5, 33, "Text"], Cell[11576, 313, 44, 1, 60, "Input"], Cell[11623, 316, 161, 3, 33, "Text"], Cell[11787, 321, 274, 6, 54, "Text"], Cell[12064, 329, 42, 1, 74, "Input"], Cell[12109, 332, 45, 1, 74, "Input"], Cell[12157, 335, 86, 2, 33, "Text"], Cell[12246, 339, 44, 1, 74, "Input"], Cell[12293, 342, 186, 5, 33, "Text"], Cell[12482, 349, 37, 1, 60, "Input"] }, Open ]], Cell[CellGroupData[{ Cell[12556, 355, 48, 0, 77, "Section"], Cell[12607, 357, 618, 15, 76, "Text"], Cell[13228, 374, 456, 11, 54, "Text"], Cell[13687, 387, 67, 1, 60, "Input"], Cell[13757, 390, 214, 6, 33, "Text"], Cell[13974, 398, 53, 1, 60, "Input"], Cell[14030, 401, 544, 12, 75, "Text"], Cell[14577, 415, 55, 1, 60, "Input"], Cell[14635, 418, 1042, 26, 96, "Text"], Cell[15680, 446, 72, 1, 60, "Input"], Cell[15755, 449, 1997, 45, 215, "Text"], Cell[17755, 496, 50, 1, 60, "Input"], Cell[17808, 499, 419, 11, 55, "Text"], Cell[18230, 512, 120, 4, 123, "Input"], Cell[18353, 518, 1115, 38, 100, "Text"], Cell[19471, 558, 1271, 25, 386, "Input"], Cell[20745, 585, 367, 6, 75, "Text"], Cell[21115, 593, 663, 14, 75, "Text"] }, Open ]], Cell[CellGroupData[{ Cell[21815, 612, 39, 0, 77, "Section"], Cell[21857, 614, 1373, 21, 249, "Text"], Cell[23233, 637, 166, 5, 148, "Input"], Cell[23402, 644, 194, 6, 33, "Text"], Cell[23599, 652, 219, 4, 81, "Input"], Cell[23821, 658, 2500, 58, 246, "Text"], Cell[26324, 718, 224, 4, 102, "Input"], Cell[26551, 724, 241, 4, 102, "Input"], Cell[26795, 730, 237, 4, 102, "Input"], Cell[27035, 736, 222, 4, 102, "Input"], Cell[27260, 742, 220, 4, 102, "Input"], Cell[27483, 748, 171, 3, 60, "Input"] }, Open ]], Cell[CellGroupData[{ Cell[27691, 756, 116, 5, 77, "Section"], Cell[27810, 763, 341, 8, 54, "Text"], Cell[28154, 773, 41, 1, 60, "Input"], Cell[28198, 776, 94, 1, 33, "Text"], Cell[28295, 779, 39, 1, 60, "Input"], Cell[28337, 782, 117, 3, 33, "Text"], Cell[28457, 787, 42, 1, 60, "Input"], Cell[28502, 790, 116, 3, 33, "Text"], Cell[28621, 795, 43, 1, 60, "Input"], Cell[28667, 798, 283, 11, 34, "Text"] }, Open ]], Cell[CellGroupData[{ Cell[28987, 814, 138, 5, 77, "Section"], Cell[29128, 821, 1630, 31, 265, "Text"] }, Open ]], Cell[CellGroupData[{ Cell[30795, 857, 48, 0, 77, "Section"], Cell[30846, 859, 651, 11, 96, "Text"], Cell[CellGroupData[{ Cell[31522, 874, 30, 0, 56, "Exercise"], Cell[31555, 876, 681, 25, 104, "Text"] }, Open ]] }, Open ]] } ] *) (******************************************************************* End of Mathematica Notebook file. *******************************************************************)