Scrivi i coefficienti dell’equazione diofantea lineare ax + by = c. La formula qui sotto è collegata ai campi, quindi puoi anche modificare i numeri direttamente al suo interno. Cambiando «Soluzioni da cercare» puoi tenere solo le soluzioni intere positive.
Indice
-
Cosa puoi fare in questa pagina
-
A cosa serve questo calcolo?
-
Come si usa
-
Formule e grafici
-
Simboli e termini
-
Cosa conviene sapere prima
-
Come calcolarlo con Excel
-
Come calcolarlo con Fogli Google
-
Come calcolarlo con Python
-
La formula in LaTeX e in altre notazioni matematiche (da copiare)
-
Come chiedere a ChatGPT di fare il calcolo
-
I punti di forza di DataChef
-
Funzioni correlate
-
Tutte le calcolatrici di NumberChef
Cosa puoi fare in questa pagina
- Scrivi i coefficienti interi \(a,\ b,\ c\) e ottieni le coppie di numeri interi \(x,\ y\) che soddisfano \(ax + by = c\) (le soluzioni intere)
- Se \(c\) non è un multiplo del massimo comun divisore di \(a\) e \(b\), non esistono soluzioni intere. La pagina fa questo controllo e mostra anche perché
- Puoi seguire riga per riga la tabella delle divisioni dell’algoritmo di Euclide e la tabella che risale all’indietro tra i resti per costruire una soluzione particolare
- La risposta non è una sola coppia: ottieni la soluzione generale \(x = x_0 + \dfrac{b}{g}t,\ y = y_0 - \dfrac{a}{g}t\) (con \(t\) numero intero qualsiasi) e una tabella delle soluzioni per diversi valori di \(t\)
- Puoi tenere solo le soluzioni positive oppure solo quelle non negative. Così risolvi direttamente problemi come «quanti biglietti da 50 € e da 80 € fanno esattamente 1000 €?»
A cosa serve questo calcolo?
Comprare solo biglietti da 50 € e da 80 € per spendere esattamente 1000 €, pesare un oggetto con due soli tipi di pesi, o ottenere una lunghezza precisa con pezzi di lunghezza fissa: problemi come questi, «combinare cose di misura fissa per arrivare esattamente a un obiettivo», sono proprio il problema di trovare le soluzioni intere di \(ax + by = c\).
Non si può comprare un numero negativo di biglietti, quindi nella pratica la risposta si ottiene solo dopo aver ristretto la ricerca alle soluzioni intere positive.
Se hai solo scatole da 6 e scatole da 10, poter confezionare un ordine di esattamente \(c\) pezzi dipende dal fatto che \(6x + 10y = c\) abbia una soluzione con numeri interi maggiori o uguali a 0. Il MCD di 6 e 10 è 2, quindi un ordine con un numero dispari di pezzi non si può mai confezionare esattamente, comunque si combinino le scatole.
Quando si confezionano alimenti o componenti, sapere quali quantità si possono ottenere dice quali ordini puoi accettare e quali formati di scatola tenere in magazzino.
Il famoso rompicapo di misurare esattamente 4 litri con una sola brocca da 5 litri e una da 3 litri corrisponde alle soluzioni intere di \(5x + 3y = 4\) (\(x\) e \(y\) contano, con il segno, quante volte si riempie o si svuota ciascuna brocca). Poiché \(\mathrm{MCD}(5,\ 3) = 1\), l’equazione dice in anticipo che con queste due brocche si può misurare qualsiasi numero intero di litri.
È la stessa matematica che usi in laboratorio o in cucina quando ti chiedi: «Posso misurare la quantità che mi serve solo con gli strumenti che ho?»
La crittografia RSA, che protegge l’home banking e gli acquisti online, ricava il valore della chiave privata \(d\) da quello della chiave pubblica \(e\) risolvendo l’equazione diofantea lineare \(e d + \varphi k = 1\) (\(\varphi\) è un numero intero che dipende dalla chiave). Lo strumento usato è lo stesso algoritmo di Euclide esteso di questa pagina.
Questa procedura la risolve all’istante anche per numeri di centinaia di cifre, ed è una delle cose che rendono praticabile la crittografia.
Supponi che il prodotto A usi \(a\) kg di materiale per pezzo e il prodotto B ne usi \(b\), e di voler usare esattamente i \(c\) kg che hai. Questo piano è il problema di trovare le soluzioni di \(ax + by = c\) in numeri interi maggiori o uguali a 0. Non si può fare mezzo prodotto, quindi la risposta deve essere un numero intero.
Il campo che tratta i problemi di pianificazione le cui risposte devono essere numeri interi si chiama programmazione lineare intera. Si usa per la pianificazione della produzione e dei turni di lavoro, per la pianificazione delle consegne e altro.
Formule e grafici
Simboli e termini
Simboli
| \(a,\ b\) | a, b | I coefficienti che moltiplicano \(x\) e \(y\). Per i numeri fissi si usano per tradizione le lettere dell’inizio dell’alfabeto, \(a,\ b,\ c\). In questa pagina sono entrambi numeri interi. |
| \(c\) | c | Il termine noto a destra dell’equazione. È il totale che vuoi ottenere, e il fatto che sia un multiplo del MCD decide se esistono soluzioni. |
| \(x,\ y\) | x, y | Le incognite che cerchi. Usare le lettere della fine dell’alfabeto per le incognite è un’abitudine che si dice sia stata diffusa da Cartesio. In questa pagina valgono come risposta solo i valori interi. |
| \(\mathrm{MCD}(a,\ b)\) | MCD di a e b | Il massimo comun divisore di \(a\) e \(b\), abbreviato MCD. Nei testi di teoria dei numeri compare anche come gcd (dall’inglese «greatest common divisor») o, più in breve, come \((a,\ b)\). |
| \(g\) | g | Un nome breve per il massimo comun divisore \(\mathrm{MCD}(a,\ b)\). Serve a tenere corte le formule, come \(\dfrac{b}{g}\) e \(\dfrac{a}{g}\) nella soluzione generale. |
| \(x_0,\ y_0\) | x zero, y zero | La soluzione particolare, cioè la prima soluzione intera che trovi. Lo 0 piccolo indica che è il punto di partenza, la «soluzione numero 0». Tutte le soluzioni intere si scrivono a partire da qui. |
| \(x_1,\ y_1\) | x uno, y uno | La coppia di numeri interi che trovi ripercorrendo all’indietro l’algoritmo di Euclide. Soddisfa \(a x_1 + b y_1 = g\). Moltiplicala per \(\dfrac{c}{g}\) per ottenere la soluzione particolare \((x_0\,;\,y_0)\). |
| \(t\) | t | Una variabile che può essere un numero intero qualsiasi (un parametro). Permette a una sola formula di descrivere tutte le soluzioni intere insieme. Ogni numero intero che metti al posto di \(t\) dà un’altra soluzione intera. |
| \(m\) | m | Il numero intero che dice quante volte \(g\) sta in \(c\). Per i numeri interi si usano spesso lettere come \(m\), \(n\) e \(k\), e si dice che \(m\) venga da «multiplo». Esistono soluzioni intere se si può scrivere \(c = g \times m\), e solo in quel caso. |
| \(q\) | q | Il quoziente di una divisione, dall’iniziale di «quoziente». Nella tabella dell’algoritmo di Euclide è il \(2\) di \(13 = 5 \times 2 + 3\). |
| \(r\) | r | Il resto di una divisione, dall’iniziale di «resto». Nella tabella dell’algoritmo di Euclide è il \(3\) di \(13 = 5 \times 2 + 3\). L’algoritmo si ferma quando questo resto arriva a 0. |
| \(\geq\) | maggiore o uguale a | Il segno di disuguaglianza che significa «il membro di sinistra è maggiore o uguale a quello di destra». \(x \geq 1\) dice che \(x\) vale 1 o più. Il suo compagno \(\leq\) significa «minore o uguale a». |
Termini
| equazione diofantea lineare | Il tipo più semplice di equazione diofantea: un’equazione lineare con due incognite ma una sola equazione, come \(ax + by = c\). Sui numeri reali ogni punto della retta è una soluzione, quindi la soluzione non è unica. Anche tenendo solo le soluzioni intere, di solito sono infinite. |
| equazione diofantea | Il nome delle equazioni le cui soluzioni devono essere numeri interi. Viene da Diofanto, un matematico della Grecia antica. L’equazione diofantea lineare di questa pagina è il tipo più semplice. |
| soluzione intera | Una soluzione dell’equazione in cui sia \(x\) sia \(y\) sono numeri interi. Nei problemi su quantità che non si possono dividere, come il numero di biglietti, oggetti o persone, hanno senso solo le soluzioni intere. |
| soluzione particolare | La prima coppia che trovi tra le infinite soluzioni intere. Va bene una qualsiasi. A partire da essa, la soluzione generale descrive tutte le soluzioni. |
| soluzione generale | Tutte le soluzioni intere scritte in un’unica formula con un numero intero \(t\). Ogni numero intero che metti al posto di \(t\) dà un’altra soluzione. |
| massimo comun divisore (MCD) | Il più grande numero intero positivo che divide ciascuno di due o più numeri interi. In un’equazione diofantea lineare questo valore decide sia se esistono soluzioni sia a che distanza stanno l’una dall’altra. |
| algoritmo di Euclide | Un modo per trovare il massimo comun divisore dividendo il numero più grande per il più piccolo e sostituendo la coppia con il divisore e il resto, più volte. Il divisore del passaggio in cui il resto arriva a 0 è il MCD. Compare negli «Elementi» di Euclide, intorno al III secolo a.C., ed è spesso detto il più antico algoritmo del mondo. Si chiama anche algoritmo delle divisioni successive. |
| algoritmo di Euclide esteso | Un modo per scrivere il massimo comun divisore nella forma \(a x_1 + b y_1\), sostituendo dal basso verso l’alto le uguaglianze delle divisioni dell’algoritmo di Euclide. Serve a costruire una soluzione particolare di un’equazione diofantea lineare. |
| identità di Bézout | Il teorema secondo cui esistono sempre due numeri interi \(x_1,\ y_1\) con \(a x_1 + b y_1 = \mathrm{MCD}(a,\ b)\). Prende il nome dal matematico francese Bézout. È il motivo per cui un’equazione diofantea lineare si può risolvere. |
| primi tra loro | Due numeri interi sono primi tra loro (o coprimi) quando il loro massimo comun divisore è 1. Per esempio, 3 e 4 sono primi tra loro. \(\dfrac{a}{g}\) e \(\dfrac{b}{g}\) sono sempre primi tra loro, ed è per questo che le soluzioni sono equidistanti. |
| multiplo | Un numero che si ottiene moltiplicando un numero intero per un altro numero intero. I multipli di \(10\) sono \(\dots,\ -20,\ -10,\ 0,\ 10,\ 20,\ \dots\). Anche lo zero e i numeri negativi contano come multipli. |
| resto | Ciò che avanza quando una divisione tra numeri interi non è esatta. \(13 \div 5\) ha quoziente \(2\) e resto \(3\). L’algoritmo di Euclide lavora solo con questi resti. |
| quoziente | Nella divisione tra numeri interi, il numero intero di volte che il divisore ci sta. In \(13 = 5 \times 2 + 3\) il quoziente è \(2\). |
| punto a coordinate intere | Un punto del piano cartesiano le cui coordinate \(x\) e \(y\) sono entrambe numeri interi, come gli angoli dei quadretti su un foglio a quadretti (si dice anche punto reticolare). Le soluzioni intere di un’equazione diofantea lineare sono esattamente i punti a coordinate intere sulla retta \(ax + by = c\). |
| parametro | Una variabile che puoi far variare liberamente, usata per scrivere un intero insieme di soluzioni con un’unica formula. In questa pagina il parametro è \(t\). |
| coefficiente | Il numero davanti a una lettera. In \(3x\) il coefficiente è \(3\). Quando non c’è nessun numero, come in \(x\), il coefficiente è 1. |
| disequazione | Una relazione che confronta la grandezza di due valori, come \(t \geq 0\). Si usa per restringersi alle soluzioni intere positive. Il segno usato si chiama segno di disuguaglianza. |
Cosa conviene sapere prima
Ecco cosa ti aiuta a usare il calcolo di questa pagina capendo davvero che cosa stai facendo, e non solo premendo il pulsante.
Se ti blocchi, ripassare questi argomenti è la via più rapida.
| Divisione con resto (classi 3ª–5ª della primaria, 8-11 anni) |
|
| Divisori, multipli e MCD (classe 5ª della primaria – classe 1ª della secondaria di primo grado, 10-12 anni) |
|
| Espressioni letterali ed equazioni di primo grado (classi 2ª–3ª della secondaria di primo grado, 12-14 anni) |
|
| Equazioni lineari in due incognite e loro grafico (biennio della secondaria di secondo grado, 14-16 anni) |
|
| Disequazioni (biennio della secondaria di secondo grado, 14-16 anni) |
|
| Calcolo con le frazioni (classe 5ª della primaria – classe 1ª della secondaria di primo grado, 10-12 anni) |
|
Come calcolarlo con Excel
| Coefficiente a di x | 50 |
| Coefficiente b di y | 80 |
| Termine noto c a destra | 1000 |
| MCD g | =MCD(B1;B2) |
| Resto di c ÷ g | =RESTO(B3;B4) |
| Ci sono soluzioni intere? | =SE(B5=0;"Ci sono soluzioni";"Nessuna soluzione") |
| Coefficiente a di x | 50 |
| Coefficiente b di y | 80 |
| x1 dall’algoritmo di Euclide | -3 |
| y1 dall’algoritmo di Euclide | 2 |
| a×x1 + b×y1 | =B1*B3+B2*B4 |
| MCD g | =MCD(B1;B2) |
| Coefficiente a di x | 50 |
| Coefficiente b di y | 80 |
| Termine noto c a destra | 1000 |
| MCD g | =MCD(B1;B2) |
| Soluzione particolare x0 | 4 |
| Soluzione particolare y0 | 10 |
| Numero intero t | 1 |
| x = x0 + (b/g)×t | =B5+(B2/B4)*B7 |
| y = y0 − (a/g)×t | =B6-(B1/B4)*B7 |
| Verifica a×x + b×y | =B1*B8+B2*B9 |
| Coefficiente a di x | 50 |
| Coefficiente b di y | 80 |
| MCD g | =MCD(B1;B2) |
| Soluzione particolare x0 | 4 |
| Soluzione particolare y0 | 10 |
| Limite inferiore di t (da x ≥ 1) | =-INT((B4-1)/(B2/B3)) |
| Limite superiore di t (da y ≥ 1) | =INT((B5-1)/(B1/B3)) |
| Numero di soluzioni intere positive | =MAX(0;B7-B6+1) |
La prima tabella usa l’esempio 50x + 80y = 1000. Il MCD è 10 e 1000 ÷ 10 ha resto 0, quindi mostra «Ci sono soluzioni». Cambia 1000 in 1001 e diventa «Nessuna soluzione».
La seconda tabella controlla che x1 = −3 e y1 = 2, trovati ripercorrendo all’indietro l’algoritmo di Euclide, soddisfino davvero l’identità di Bézout. 50×(−3) + 80×2 = 10, che coincide con il MCD.
La terza tabella ricava una soluzione dalla soluzione generale. Scrivi 1 per t e ottieni x = 12 e y = 5, e la riga di verifica torna a 1000. Prova altri numeri interi per t.
La quarta tabella si restringe alle soluzioni intere positive. Il limite inferiore di t è 0 e quello superiore è 1, quindi ci sono 2 soluzioni intere positive (t = 0 e t = 1). Queste due formule valgono nel caso in cui a e b siano entrambi positivi. Con un coefficiente negativo il verso della disequazione si inverte, quindi fai attenzione.
Come calcolarlo con Fogli Google
| Coefficiente a di x | 50 |
| Coefficiente b di y | 80 |
| Termine noto c a destra | 1000 |
| MCD g | =MCD(B1;B2) |
| Resto di c ÷ g | =RESTO(B3;B4) |
| Ci sono soluzioni intere? | =SE(B5=0;"Ci sono soluzioni";"Nessuna soluzione") |
| Coefficiente a di x | 50 |
| Coefficiente b di y | 80 |
| x1 dall’algoritmo di Euclide | -3 |
| y1 dall’algoritmo di Euclide | 2 |
| a×x1 + b×y1 | =B1*B3+B2*B4 |
| MCD g | =MCD(B1;B2) |
| Coefficiente a di x | 50 |
| Coefficiente b di y | 80 |
| Termine noto c a destra | 1000 |
| MCD g | =MCD(B1;B2) |
| Soluzione particolare x0 | 4 |
| Soluzione particolare y0 | 10 |
| Numero intero t | 1 |
| x = x0 + (b/g)×t | =B5+(B2/B4)*B7 |
| y = y0 − (a/g)×t | =B6-(B1/B4)*B7 |
| Verifica a×x + b×y | =B1*B8+B2*B9 |
| Coefficiente a di x | 50 |
| Coefficiente b di y | 80 |
| MCD g | =MCD(B1;B2) |
| Soluzione particolare x0 | 4 |
| Soluzione particolare y0 | 10 |
| Limite inferiore di t (da x ≥ 1) | =-INT((B4-1)/(B2/B3)) |
| Limite superiore di t (da y ≥ 1) | =INT((B5-1)/(B1/B3)) |
| Numero di soluzioni intere positive | =MAX(0;B7-B6+1) |
Come calcolarlo con Python
from math import gcd
# coefficienti di ax + by = c (numeri interi)
a, b, c = 50, 80, 1000
def extended_gcd(x, y):
# algoritmo di Euclide esteso: restituisce il MCD e s, t con x*s + y*t = MCD
if y == 0:
return x, 1, 0
g, s, t = extended_gcd(y, x % y)
return g, t, s - (x // y) * t
g = gcd(a, b)
if c % g != 0:
print(f"{c} non è un multiplo di {g}, quindi non ci sono soluzioni intere")
else:
_, s, t = extended_gcd(a, b)
x0, y0 = s * (c // g), t * (c // g) # soluzione particolare (una soluzione intera)
step_x, step_y = b // g, a // g # passo di x e passo di y
# sposta la soluzione finché x è il più piccolo valore maggiore o uguale a 0, per averne una più facile da leggere
n = x0 // step_x
x0, y0 = x0 - n * step_x, y0 + n * step_y
print(f"Soluzione particolare: (x, y) = ({x0}, {y0})")
print(f"Soluzione generale: x = {x0} + {step_x}t, y = {y0} - {step_y}t (t è un numero intero qualsiasi)")
for k in range(-2, 3):
print(f" t = {k:2}: (x, y) = ({x0 + step_x * k}, {y0 - step_y * k})")
# tieni solo le soluzioni intere positive (x >= 1 e y >= 1)
t_low = -((1 - x0) // -step_x)
t_high = (y0 - 1) // step_y
print("Soluzioni intere positive:", [(x0 + step_x * k, y0 - step_y * k)
for k in range(t_low, t_high + 1)])
La formula in LaTeX e in altre notazioni matematiche (da copiare)
c = gcd(a, b) × m
c = \gcd(a, b) \times m
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>c</mi>
<mo>=</mo>
<mi>gcd</mi><mo>(</mo><mi>a</mi><mo>,</mo><mi>b</mi><mo>)</mo>
<mo>×</mo>
<mi>m</mi>
</mrow>
</math>
c = gcd(a, b) * m
Mod[c, GCD[a, b]] == 0
irem(c, igcd(a, b)) = 0;
mod(c, gcd(a, b)) == 0
c = gcd(a,b) × m
a·x₁ + b·y₁ = gcd(a, b)
a x_1 + b y_1 = \gcd(a, b)
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>a</mi><msub><mi>x</mi><mn>1</mn></msub>
<mo>+</mo>
<mi>b</mi><msub><mi>y</mi><mn>1</mn></msub>
<mo>=</mo>
<mi>gcd</mi><mo>(</mo><mi>a</mi><mo>,</mo><mi>b</mi><mo>)</mo>
</mrow>
</math>
a*x_1 + b*y_1 = gcd(a, b)
ExtendedGCD[a, b]
igcdex(a, b, x1, y1);
[g, x1, y1] = gcd(a, b);
a x_1 + b y_1 = gcd(a,b)
x = x₀ + (b/g)t, y = y₀ − (a/g)t
x = x_0 + \frac{b}{g} t, \quad y = y_0 - \frac{a}{g} t
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<mi>x</mi><mo>=</mo><msub><mi>x</mi><mn>0</mn></msub>
<mo>+</mo>
<mfrac><mi>b</mi><mi>g</mi></mfrac><mi>t</mi>
<mo>,</mo><mspace width="1em"/>
<mi>y</mi><mo>=</mo><msub><mi>y</mi><mn>0</mn></msub>
<mo>−</mo>
<mfrac><mi>a</mi><mi>g</mi></mfrac><mi>t</mi>
</mrow>
</math>
x = x_0 + (b/g)t, y = y_0 - (a/g)t
Solve[a x + b y == c, {x, y}, Integers]
isolve(a*x + b*y = c);
S = solve(a*x + b*y == c, [x y], 'Integer', true);
x = x_0 + (b/g)t, y = y_0 - (a/g)t
x₀ + (b/g)t ≥ 1 e y₀ − (a/g)t ≥ 1
x_0 + \frac{b}{g} t \geq 1, \quad y_0 - \frac{a}{g} t \geq 1
<math xmlns="http://www.w3.org/1998/Math/MathML" display="block">
<mrow>
<msub><mi>x</mi><mn>0</mn></msub>
<mo>+</mo>
<mfrac><mi>b</mi><mi>g</mi></mfrac><mi>t</mi>
<mo>≥</mo><mn>1</mn>
<mo>,</mo><mspace width="1em"/>
<msub><mi>y</mi><mn>0</mn></msub>
<mo>−</mo>
<mfrac><mi>a</mi><mi>g</mi></mfrac><mi>t</mi>
<mo>≥</mo><mn>1</mn>
</mrow>
</math>
x_0 + (b/g)t >= 1 and y_0 - (a/g)t >= 1
Solve[a x + b y == c && x >= 1 && y >= 1, {x, y}, Integers]
isolve({a*x + b*y = c, x >= 1, y >= 1});
S = solve([a*x + b*y == c, x >= 1, y >= 1], [x y], 'Integer', true);
x_0 + (b/g)t ≥ 1, y_0 − (a/g)t ≥ 1
Come chiedere a ChatGPT di fare il calcolo
Sei un assistente per il calcolo di matematica (proprietà dei numeri interi). Esegui il calcolo seguente eseguendo davvero del codice Python e basa la risposta solo sui numeri ottenuti dall’esecuzione (non rispondere a mente né a stima). Trova le soluzioni intere dell’equazione diofantea lineare 50x + 80y = 1000. Mostra ciascuna delle cose seguenti: 1. Il massimo comun divisore di 50 e 80, e se 1000 ne è un multiplo 2. I passaggi di divisione dell’algoritmo di Euclide (fino a quando il resto è 0) e gli x1, y1 con 50×x1 + 80×y1 = MCD trovati ripercorrendoli all’indietro 3. Una soluzione particolare (x0, y0) e la soluzione generale x = x0 + (b/g)t, y = y0 − (a/g)t 4. Tutte le soluzioni intere in cui x e y sono entrambi maggiori o uguali a 1 In Python usa math.gcd e l’algoritmo di Euclide esteso per calcolare in modo esatto, e mostra le formule usate e i numeri ottenuti dall’esecuzione.
Come si usa
-
1Inserisci i numeriScrivi nei campi i numeri con cui vuoi fare il calcolo
-
2CalcolaFai clic sul pulsante «Calcola»
-
3Guarda il risultatoIl risultato compare subito. Nella stessa pagina trovi anche lo svolgimento del calcolo e la spiegazione della formula
I punti di forza di DataChef
Nessuna competenza richiesta, semplice e intuitivo
Nessun dato personale richiesto
Il file viene eliminato automaticamente dopo il download
Nessun obbligo di attribuzione
Nessuna autorizzazione preventiva necessaria