Mostrando las entradas con la etiqueta multiplicación. Mostrar todas las entradas
Mostrando las entradas con la etiqueta multiplicación. Mostrar todas las entradas

2021-09-09

Orden de operaciones aritméticas

Un problema que apareció en Internet a principios de 2011 es: "¿Cuál es el valor de 48/2 (9 + 3)?" 

Dependiendo de si se interpreta la expresión como (48/2) (9 + 3) o como 48 / (2 (9 + 3)) se obtiene 288 o 2. No existe una convención estándar en cuanto a cuál de estas dos formas la expresión debe interpretarse, por lo que, de hecho, 48/2 (9 + 3) es ambiguo. 

En general, para cualquier expresión de la forma a / bc es necesario insertar paréntesis para mostrar si significa (a / b) c o a / (bc). Bajo la convención algebraica estándar, expresiones como ab + c son inequívocas: esa expresión significa solo (ab) + c; y de manera similar, a + bc significa solo a + (bc). 

La convención es que cuando no se usan paréntesis para mostrar lo contrario, la multiplicación precede a la suma. Para expresiones como a − b + c se dice que cuando se tiene una secuencia de sumas y restas se trabaja de izquierda a derecha. 

Probablemente otra razón por la que no existe una convención fija para el orden de multiplicación y división, como la hay para la suma y la resta, es que la gente con frecuencia hace cálculos que implican sumar y restar largas cadenas de números y los números de multiplicaciones y divisiones que vienen en los cálculos diarios tiende a ser menor; por lo que hay menos necesidad de una convención y ninguna ha evolucionado. 

En muchas escuelas de hoy, a los estudiantes se les enseña el orden de las operaciones: paréntesis, exponentes, multiplicación, división, suma, resta.

2009-08-22

La aritmética de Trachtenberg

Así como Viktor Emil Frankl desarrollo la logoterapia para superar los rigores de los campos de concentración Nazi, Jakow Trachtenberg ocupo su mente en desarrollar un sistema de aritmética mental al verse en la misma situación.

El sistema Trachtenberg de rápido cálculo mental, similar a las matemáticas Védicas, consiste en un conjunto de patrones para realizar operaciones aritméticas. Los algoritmos más importantes son multiplicación,división, y adición. El método también incluye algoritmos especializados para realizar multiplicaciones por números entre 5 y 13.

Multiplicación por 11

Abusando de la notación

(11)a = 11Σai10i =

an10n+1 + [Σj=0n-1(aj+aj+1)10j ]+ a0

Multiplicación por 12

(12)a = 12Σai10i =

an10n+1 + [Σj=0n-1 (aj+2aj+1)10j ]+ 2a0

Multiplicación por 6

Definiendo

bj = aj/2, donde / denota división entera

cj = aj mod 2

tenemos

aj = 2bj + cj

(6)a = (10/2)Σai10i  + Σai10i =

Σbi10i+1 + Σ(ai + 5ci)10i

bn10n+1 + [Σj=1n(aj + 5cj + bj-1)10j ]+ (a0 + 5c0)

Expresando el algoritmo en python:

def x6(number):
previous = 0
result = 0
power_of_10 = 1
while (number):
digit = number%10
odd_term = 5 if digit%2 else 0
result =
(digit + odd_term + previous ) *
power_of_10 + result
previous = digit//2
power_of_10 *= 10
number = number // 10
result = previous * power_of_10 + result
return result




Multiplicación por 7



De manera similar al caso anterior:




aj = 2bj + cj



(7)a = (10/2)Σai10i  + Σ2ai10i =



Σbi10i+1 + Σ(2ai + 5ci)10i



bn10n+1 + [Σj=1n(2aj + 5cj + bj-1)10j ]+ (a0 + 5c0)




Expresando el algoritmo en python:



def x7(number):
previous = 0
result = 0
power_of_10 = 1
while (number):
digit = number%10
odd_term = 5 if digit%2 else 0
result =
(2*digit + odd_term + previous ) *
power_of_10 + result
previous = digit//2
power_of_10 *= 10
number = number // 10
result = previous * power_of_10 + result
return result


Multiplicación por 5



De manera similar al caso anterior:




aj = 2bj + cj



(5)a = (10/2)Σai10i   =



Σbi10i+1 + Σ(5ci)10i



bn 10n+1 + [Σj=1n(5cj + bj-1)10j ]+ (5c0)




Expresando el algoritmo en python:



def x5(number):
previous = 0
result = 0
power_of_10 = 1
while (number):
digit = number%10
odd_term = 5 if digit%2 else 0
result =
(odd_term + previous ) *
power_of_10 + result
previous = digit//2
power_of_10 *= 10
number = number // 10
result = previous * power_of_10 + result
return result


Multiplicación por 9



Definiendo




b = 10n+1 - Σj=0naj , o sea el complemento a 10 de a




tenemos




(9)a = 10a –a =



10a –a + b – b =



10a + b - 10n+1 =



(an – 1)10n+1 + [Σj=1n(bj + aj-1)10j ]+ (b0 )




Expresando el algoritmo en python:



def x9(number):
previous = number%10
result = 10 - previous
power_of_10 = 10
number = number // 10
while (number):
digit = number%10
result =
(9 - digit + previous ) *
power_of_10 + result
previous = digit
power_of_10 *= 10
number = number // 10
result =
(previous-1) * power_of_10 +
result
return result


Multiplicación por 8



Definiendo




b = 10n+1 - Σj=0naj , o sea el complemento a 10 de a




tenemos




(8)a = 10a –2a =



10a –2a +2 b – 2b =



10a + 2b – (2)10n+1 =



(an – 2)10n+1 + [Σj=1n(2bj + aj-1)10j ]+ (2b0 )




Expresando el algoritmo en python:



def x8(number):
previous = number%10
result = 2*(10 - previous)
power_of_10 = 10
number = number // 10
while (number):
digit = number%10
result =
(2*(9 - digit) + previous ) *
power_of_10 + result
previous = digit
power_of_10 *= 10
number = number // 10
result =
(previous-2) *
power_of_10 + result
return result


Multiplicación por 3 y por 4



Los algoritmos para multiplicar por 3 y por 4 combinan las ideas usadas en la multiplicación por 5 y por 9.



Definiendo




b = 10n+1 - Σj=0naj , o sea el complemento a 10 de a



ai = 2ci + di, donde



ci = ai/2



di = ai mod 2




tenemos




(4)a = 5a –a =



10c + 5d + b - 10n+1



(3)a = 5a –2a =



10c + + 5d + 2b – (2)10n+1




Expresando los algoritmos en python:



def x3(number):
digit = number%10
result = 2*(10 - digit)
if digit % 2:
result += 5
previous = digit // 2
power_of_10 = 10
number = number // 10
while (number):
digit = number%10
odd_term = 5 if digit%2 else 0
result +=(2*(9 - digit) + odd_term + previous ) * power_of_10
previous = digit//2
power_of_10 *= 10
number = number // 10
result = (previous-2) * power_of_10 + result
return result

def x4(number):
digit = number%10
result = (10 - digit)
if digit % 2:
result += 5
previous = digit // 2
power_of_10 = 10
number = number // 10
while (number):
digit = number%10
odd_term = 5 if digit%2 else 0
result +=((9 - digit) + odd_term + previous ) * power_of_10
previous = digit//2
power_of_10 *= 10
number = number // 10
result = (previous-1) * power_of_10 + result
return result


Referencias