Seguici su Telegram, ne vale la pena ❤️ ➡ @trovalost
Vai al contenuto

Come si fa la moltiplicazione araba [GUIDA]


Cerchi un hosting economico per il tuo sito o blog? Tophost ti aspetta (clicca qui)

La moltiplicazione a reticolo, nota anche come moltiplicazione araba, moltiplicazione della gelosia, moltiplicazione del setaccio, shabakh, diagonale e quadrati veneziani, è un metodo di moltiplicazione che utilizza un reticolo per moltiplicare due numeri a più cifre. È matematicamente identico all’algoritmo di moltiplicazion più comunemente usato, ma suddivide il processo in passaggi più piccoli, che alcuni effettivamente trovano più facili da usare.

Il metodo era già nato nel medioevo ed è stato utilizzato per secoli in molte culture diverse. Viene ancora insegnato in alcuni programmi di studio oggi.


Cerchi un hosting economico per il tuo sito o blog? Tophost ti aspetta (clicca qui)

Implementazione dell’algoritmo in Python

(fonte)

//for simplicity num1=[2,2,4] , num2=[5,3] 
int[] latticeMultiplication ( int num1[], int num2[]){

//let i points to the end of the array [3]
int i = sizeOf(num2); 
int j ;
int currentValue; 

//set the size of the result array and make it contains zeros
int size = sizeOf(num1) + sizeOf(num2);
int result[size];
loop through all elements in result[] and make them 0

//those pointers to maintain the result array
int pointer1 = sizeOf(result);  //initially points to [0]
int pointer2 = pointer1 -1;

while( i>=0){
  j = sizeOf(num1); //points to [4]

  while( j>=0){
    CurrentValue = num1[j] * num2[i];
    //remember that if the result of multiplication has two digits
    //we need to add the most left digit to the next slide
    //otherwise we just add the currentvalue to whatever there
      if(CurrentValue < 10 ) 
        result[pointer1] = result[pointer1] + CurrentValue;
      else
      {
        result[pointer1] = result[pointer1] + CurrentValue%10; //most right digit
        result[pointer2] = result[pointer2] + CurrentValue/10;
       }
    
    //update pointers going backwards because we have started from the end of arrays
    j--; //it will point to [2]...[2]
    pointer1--;
    pointer2--;
    
    }//end of inner while
 
 i--;   // go to the next number in the array
 
}//while

//now we need to perform sum calculations of result array 
//because in case of large numbers will have an array like [1,4,16,7,0]
//and this will not be an acceptable answer cause the answer should be 15670


int answer[sizeOf(result)];
return answer = sumCal(result);

}

Metodo della moltiplicazione araba passo passo

Viene disegnata una griglia e ogni cella viene divisa diagonalmente. I due moltiplicandi del prodotto da calcolare sono scritti rispettivamente lungo il lato superiore e destro del reticolo, con una cifra per colonna in alto per il primo moltiplicando (il numero scritto da sinistra a destra) e una cifra per riga in basso il lato destro per il secondo moltiplicando (il numero scritto dall’alto verso il basso). Quindi ciascuna cella del reticolo viene riempita con il prodotto della sua cifra di colonna e di riga.

Ti potrebbe interessare:  Cos'è il fair play?

Consideriamo ad esempio la moltiplicazione di 58 per 213.

Example of step 1 of lattice shabakh multiplication algorithm.svg
By Javier Rosa – Own work, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=31482111

Dopo aver scritto i moltiplicandi sui lati, consideriamo ogni cella cominciando da quella in alto a sinistra. In questo caso, la cifra della colonna è 5 e la cifra della riga è 2. Scrivi il loro prodotto, 10, nella cella, con la cifra 1 sopra la diagonale e la cifra 0 sotto la diagonale. Se nel prodotto c’è una sola cifra nella posizione delle decine, basta semplicemente riempire la posizione delle decine con uno 0. Il procedimento non è molto intuitivo perchè si basa sulle diagonali ed è, a suo modo, poco facile da usare e rappresentare, anche se presenta il vantaggio di non dover gestire i resti delle moltiplicazioni. Ad ogni modo: dopo che tutte le celle sono state riempite in questo modo, le cifre in ciascuna diagonale vengono sommate, lavorando dalla diagonale in basso a destra verso quella in alto a sinistra. Ogni somma diagonale viene riportata dove termina la diagonale, e nel caso in cui la somma contenesse più di una cifra, il valore delle decine verrebbe in tal caso portato nella diagonale successiva.

Example of step 2 of lattice shabakh multiplication algorithm.svg
By Javier Rosa – Own work, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=31482110

Siamo arrivati al risultato: i numeri vengono riempiti a sinistra e in fondo alla griglia e la risposta sono i numeri letti in basso (a sinistra) e trasversalmente (in basso).

  • 4 compare come ultima cifra visto che c’è solo un 4 sulla diagonale
  • 8+2+5=15, quindi 5 (penultima cifra) con riporto di 1 nella diagonale successiva
  • 6+5+1+1=13, quindi 3 (terzultima cifra) con riporto di 1 nella diagonale successiva
  • 1+1=2 e segno solo 2
  • 1 e lascio 1

Nell’esempio mostrato, il risultato della moltiplicazione di 58 per 213 è 12354.

1024px Example of step 4 of lattice shabakh multiplication algorithm.svg
Le immagini sono di Javier Rosa – Own work, CC BY-SA 3.0, https://commons.wikimedia.org/w/index.php?curid=31482112

Da non perdere 👇👇👇



Questo sito esiste da 4414 giorni (12 anni), e contiene ad oggi 3961 articoli (circa 3.168.800 parole in tutto) e 12 servizi online gratuiti. – Leggi un altro articolo a caso
Non ha ancora votato nessuno.
Ti potrebbe interessare:  Guida pratica all'effetto Batman: per provare a vivere meglio e affrontare l'ansia

Ti sembra utile o interessante? Vota e fammelo sapere.

Questo sito contribuisce alla audience di sè stesso.
Il nostro network informativo: Lipercubo.it - Pagare.online - Trovalost.it.