Saltar al contenido principal
LibreTexts Español

4.5: Operaciones Aritméticas

  • Page ID
    87564
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)

    \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)

    \( \newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\)

    ( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\)

    \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\)

    \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\)

    \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\)

    \( \newcommand{\Span}{\mathrm{span}}\)

    \( \newcommand{\id}{\mathrm{id}}\)

    \( \newcommand{\Span}{\mathrm{span}}\)

    \( \newcommand{\kernel}{\mathrm{null}\,}\)

    \( \newcommand{\range}{\mathrm{range}\,}\)

    \( \newcommand{\RealPart}{\mathrm{Re}}\)

    \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\)

    \( \newcommand{\Argument}{\mathrm{Arg}}\)

    \( \newcommand{\norm}[1]{\| #1 \|}\)

    \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\)

    \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    \( \newcommand{\vectorA}[1]{\vec{#1}}      % arrow\)

    \( \newcommand{\vectorAt}[1]{\vec{\text{#1}}}      % arrow\)

    \( \newcommand{\vectorB}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)

    \( \newcommand{\vectorC}[1]{\textbf{#1}} \)

    \( \newcommand{\vectorD}[1]{\overrightarrow{#1}} \)

    \( \newcommand{\vectorDt}[1]{\overrightarrow{\text{#1}}} \)

    \( \newcommand{\vectE}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash{\mathbf {#1}}}} \)

    \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \)

    \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)

    Pasamos ahora a las operaciones aritméticas, típicamente realizadas en Matlab sobre números de coma flotante (aunque los operadores también trabajan en enteros y, de hecho, lógicas a través de la coerción, como se discutió anteriormente).

    Como ya se indicó, un operador es una función, representada sintácticamente por un símbolo, que toma uno o dos argumentos de entrada, o parámetros, u operandos, y devuelve un resultado. Los operadores aritméticos son ^ (exponenciación),/(división), * (multiplicación), + (suma) y - (resta). Estas operaciones hacen lo obvio, aplicado ya sea a datos o variables.

    Consideramos adición: para los datos,

    >> 2 + 3
    ans =
        5
    

    o para variables

    >> x = 2; y = 3;
    >> x + y
    ans =
        5
    >>
    

    (Tenga en cuenta que el punto y coma suprime la visualización de x e y; si queremos confirmar el valor, solo necesitamos hacer (decir) >> x sin punto y coma para evaluar x.) Con más detalle, el operador + toma los dos valores a la izquierda y a la derecha y genera como respuesta (ans) la suma. Los otros operadores aritméticos ^,/, * y -, se desempeñan de una manera obvia similar.

    Observamos que en lo anterior\(\mathrm{x}+\mathrm{y}\) se encuentra una expresión -aquí una sola función, pero más generalmente una composición de muchas operaciones- que se evalúa para producir el resultado ans. Tenga en cuenta cuando hacemos una evaluación de una expresión expr, MATLAB “termina” la sentencia para nosotros como ans\(=\operatorname{expr}\) - en otras palabras, MATLAB asigna el resultado de la evaluación a una variable ans. De hecho, podemos usar esta variable ans posteriormente, pero esto está muy mal visto ya que, como se puede imaginar, es bastante fácil que los ans genéricos se cambien de formas imprevistas o desapercibidas.

    Más bien, si queremos utilizar posteriormente el resultado de una evaluación, debemos asignar explícitamente la salida a una variable, digamos z: solo necesitamos hacer

    >> z = x + y
        z = 5
    >>
    

    que es una composición del operador de suma (+) con el\((=)\) operador de asignación: evaluamos la expresión (u operación, o función)\(\mathrm{x}+\mathrm{y}\) y luego asignamos el resultado de esta evaluación a una variable\(z\).

    Repetidamente arriba nos referimos a la “función” de adición. De hecho, para la mayoría de los operadores hay una sintaxis “output = function_name (inputs)” que es equivalente a la sintaxis del operador. Por ejemplo, podemos calcular la suma de\(x\) y\(y\) como más\((x, y)\). Obviamente la forma del operador es mucho más fácil y más legible, sin embargo el plus contiene el código real que implementa la adición y además proporciona un mecanismo por el cual cambiar lo que queremos decir por adición para diferentes tipos de datos (y en el contexto orientado a objetos, diferentes clases). No recomendamos que cambie la definición de plus para los tipos de datos dobles, pero de hecho, es bastante fácil de hacer, y podría resultar una forma efectiva de sabotaje numérico industrial.

    Es instructivo considerar la declaración

    >> z = z + 1
        z = 6
    >>
    

    que de hecho sirve con bastante frecuencia en procedimientos iterativos (típicamente para\(z\) un entero, incluso si está representado en MATLAB por un doble). ¿Qué hace esta declaración? Primero MATLAB evalúa la expresión\(z+1\) para obtener el valor 6; luego el operador\(=\) asigna este valor 6 a la dirección (variable)\(z\). Aunque matemáticamente\(z=z+1\) aparece sin sentido, es importante recordar que en\(z=z+1\) el\(=\) es el operador de asignación y no un signo igual. (Por supuesto, MATLAB contribuye a la confusión en muy siguiente línea,\(z=6\), mediante el uso del\(=\) signo en la convención matemática sentido de igualdad.)

    Hasta este punto hemos compuesto operadores para los cuales no necesitábamos preocuparnos por el orden en el que realizamos las operaciones. Por ejemplo, se\(3+4+5\) puede evaluar ya sea como\((3+4)+5\) (es decir,\(3+4\) primero, luego\(+5\)). (De hecho, esto no es del todo cierto en la precisión finita, como discutimos en la siguiente sección.) Por otro lado,\(3 * 2 \wedge 4\) da resultados bastante diferentes si realizamos ya sea el\(*\) primero o el primero. MATLAB proporciona así reglas de precedencia para el orden en que se evalúan los operadores: primero los elementos entre paréntesis, de adentro hacia afuera; luego\(;\); luego\(/\) y\(*\); luego\(+\) y\(-\). El mnemotécnico es PEDMAS (no muy mnemotécnico, de hecho). Si las reglas de precedencia no dictan un orden único entonces MATLAB opera de izquierda a derecha.

    La forma más fácil de evitar malas interpretaciones de tus intenciones es usar generosamente paréntesis, y para que la legibilidad incluya siempre amplios espacios dentro y entre tus paréntesis. La evaluación de nos\(3 * 2^{\wedge} 4\) da la oportunidad de introducir la noción de error. Si pretendía (\(3 * 2)^{\wedge} 4\)pero simplemente escribió\(3 * 2 ^{\wedge} 4\) MATLAB haría algo diferente a sus intenciones. Esto no es culpa de MATLAB, sino culpa tuya. Hay muchos tipos de errores: una instrucción puede, de hecho, no corresponder a una sintaxis válida de MATLAB y la sentencia ni siquiera se interpretará; una instrucción puede corresponder a una sintaxis MATLAB válida pero puede hacer algo distinto a lo previsto por el usuario, como en nuestro\(3 * 2^{\wedge} 4\) ejemplo; la instrucción puede hacer lo que los usuarios pretenden pero de hecho para lograr el final deseado las intenciones del usuario no son correctas, esto ocurre con bastante frecuencia en el contexto de la computación numérica.


    This page titled 4.5: Operaciones Aritméticas is shared under a CC BY-NC-SA 4.0 license and was authored, remixed, and/or curated by Masayuki Yano, James Douglass Penn, George Konidaris, & Anthony T Patera (MIT OpenCourseWare) via source content that was edited to the style and standards of the LibreTexts platform; a detailed edit history is available upon request.