aiuto matematico

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
gila75
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2739
Iscrizione: mercoledì 16 gennaio 2013, 17:28
Desktop: ubuntu-2d
Distribuzione: Ubuntu 12.04.2 LTS i686
Località: Airuno(Lecco)

aiuto matematico

Messaggio da gila75 »

Avrei bisogno di una rispolverata dopo tanti anni :D
Per un programmino che vorrei scrivere in C dovrei capire come si svolge la seguente equazione:
33x+50y+75z=233
Lo sapevo fare ma ora non ricordo più. Sono graditi nel caso anche link chiari e mirati.
Tutto questo serve per un "semplice" problema: ho la data quantità di liquido, e tre formati di contenitori: 33,75,50 cl.
Determinare la quantità richiesta di contenitori.
Quindi ho pensato: quali sono in numeri che moltiplicati per 33, per 50, per 75 e sommati tra loro danno il quantitativo di liquido?
Ho svolto con Wolframe Alpha e funziona, ma tradurlo a C mi serve il procedimento matematico.
In fondo è solo un'equazione a 3 incognite di primo grado, semplice direi, ma davvero a distanza di 25 e rotti anni non ricordo.
Grazie a tutti :)
Avatar utente
fujiko_mine
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 274
Iscrizione: domenica 18 novembre 2012, 12:57
Desktop: Gnome 42.5
Distribuzione: Ubuntu 22.04.1 LTS 64 bit

Re: aiuto matematico

Messaggio da fujiko_mine »

Ciao,

da quello che mi ricordo io di matematica :D per risolvere un'equazione a tre incognite serve un sistema di tre equazioni...

... comunque, per un ripasso, se vuoi qui, da pagina 190 (200 del pdf) trattano della risoluzione di equazioni di primo grado a più incognite.

Baci... :blowkiss:
Alla fine tutte le stelle si spegneranno, e l'universo diventerà un luogo freddo e buio.
gila75
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2739
Iscrizione: mercoledì 16 gennaio 2013, 17:28
Desktop: ubuntu-2d
Distribuzione: Ubuntu 12.04.2 LTS i686
Località: Airuno(Lecco)

Re: aiuto matematico

Messaggio da gila75 »

Ok grazie ora guardo.
Avevo visto anche io sistemi di equazioni, ma non so come "disporla".
Ci provo
Avatar utente
stefano_carniel
Prode Principiante
Messaggi: 247
Iscrizione: mercoledì 21 marzo 2007, 0:03

Re: aiuto matematico

Messaggio da stefano_carniel »

Messa così la soluzione potrebbe non essere unica, ci vorrebbero dei vincoli e allora, da quello che ricordo, diventa un problema di programmazione lineare
Avatar utente
DoctorStrange
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2872
Iscrizione: mercoledì 14 ottobre 2015, 9:33
Desktop: Gnome3
Distribuzione: Ubuntu 22.04 LTS Jammy Jellyfish
Sesso: Maschile
Località: Roma, Italia

Re: aiuto matematico

Messaggio da DoctorStrange »

Se riesci a ridurre il tuo problema in un sistema di tre equazioni in tre incognite, il tutto si ridurrebbe a risolvere un problemino di una matrice 3X3, ed anche in C è facilissimo risolvere.

Tutti i termini della matrice sono i parametri delle tre equazioni.
Dahman
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1013
Iscrizione: mercoledì 31 ottobre 2007, 8:29
Località: Torino

Re: aiuto matematico

Messaggio da Dahman »

cerca sul Web, come risolvere le equazioni diofantee.

ciao
dahman
gila75
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2739
Iscrizione: mercoledì 16 gennaio 2013, 17:28
Desktop: ubuntu-2d
Distribuzione: Ubuntu 12.04.2 LTS i686
Località: Airuno(Lecco)

Re: aiuto matematico

Messaggio da gila75 »

Messa così la soluzione potrebbe non essere unica, ci vorrebbero dei vincoli e allora, da quello che ricordo, diventa un problema di programmazione lineare
Si suppone che abbia infiniti "vuoti" da 33,50,75 cl. Con wolfram Alpha risulta sempre lo stesso risultato.
Se non è possibile noti o la x,la y o la z negativa.
A quel punto nell'ipotetico programma C si ha scarto di liquido e se si vuole, si può ridurre di 1 cl alla volta e
magari tramite un ciclo infinito fare: finche x\y\z <0 togli 1 cl.
per esempio sei io immetto 35 cl, dovrò avere un output: 1 contenitore da 33 e scarto 2 cl
Se riesci a ridurre il tuo problema in un sistema di tre equazioni in tre incognite,
Infatti, non ricordo come si fa!!!! :muro:
Poi se si vuole: supponiamo di avere un output di x bottiglie da 50 cl, si potrebbe ottimizzare vedendo se è possibile farne meno da 75.
In poche parole vedere se si possono usare i "tagli" maggiori
es: 750 cl--->15 da 50, ma anche 10 da 75 (più ragionevole)
gila75
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2739
Iscrizione: mercoledì 16 gennaio 2013, 17:28
Desktop: ubuntu-2d
Distribuzione: Ubuntu 12.04.2 LTS i686
Località: Airuno(Lecco)

Re: aiuto matematico

Messaggio da gila75 »

cerca sul Web, come risolvere le equazioni diofantee.
Vedo solo ora, mi sa che abbiamo postato contemporaneamente, ok grazie ;)
Avatar utente
mikexu
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 619
Iscrizione: mercoledì 28 novembre 2012, 9:45
Distribuzione: Lubuntu 18.04
Sesso: Maschile

Re: aiuto matematico

Messaggio da mikexu »

IMHO il metodo di Cramer è quello che fa la caso tuo (sistemi di tre equazione a tre incognite):
http://www.youmath.it/lezioni/algebra-e ... ramer.html
Attenzione: in caso di determinante = 0 occorre procedere con gli altri metodi classici (sostituzione/ riduzione/confronto)
Dovrebbe essere comodo per via del fatto che si riduce tutto a formulette risolutive.
Avete visto la Balena Bianca?

Moby Dick non ti cerca. Sei tu, tu che insensato cerchi lei!
gila75
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2739
Iscrizione: mercoledì 16 gennaio 2013, 17:28
Desktop: ubuntu-2d
Distribuzione: Ubuntu 12.04.2 LTS i686
Località: Airuno(Lecco)

Re: aiuto matematico

Messaggio da gila75 »

in effetti mikexu il metodo di Cramer se non erro era quello che usavo mezza vita fa alle superiori.
Solo che guardando in rete ho un sistema di equazioni cioè nella graffa per intenderci.
Mentre qui ne ho una sola e non so bene come trasportare il problema...e il tempo è poco.
@Dahman: scusa la domanda idiota, ho guardato le diofantee, e per ora ho trovato esempi a 2 incognite.
Funzionano anche a 3 incognite giusto?
Sembra (a 2 incognite) un metodo veloce, MCD e pochi altri passaggi e risolvono.
Grazie a entrambi
Avatar utente
mikexu
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 619
Iscrizione: mercoledì 28 novembre 2012, 9:45
Distribuzione: Lubuntu 18.04
Sesso: Maschile

Re: aiuto matematico

Messaggio da mikexu »

gila75 ha scritto:in effetti mikexu il metodo di Cramer se non erro era quello che usavo mezza vita fa alle superiori.
Solo che guardando in rete ho un sistema di equazioni cioè nella graffa per intenderci.
Mentre qui ne ho una sola e non so bene come trasportare il problema...e il tempo è poco.
A prescindere dal metodo che usi, imho, devi impostare una matrice 3x3.

Poi cosa intendi con "ne ho una sola"?
Le equazioni sono sempre una per ogni incognita, altrimenti il problema è indeterminato.

Magari non ho capito bene io il tuo quesito.
Avete visto la Balena Bianca?

Moby Dick non ti cerca. Sei tu, tu che insensato cerchi lei!
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
Messaggi: 33338
Iscrizione: mercoledì 10 ottobre 2007, 22:36

Re: aiuto matematico

Messaggio da Zoff »

Come è già stato scritto esistono più soluzioni a questo tipo di problemi.
Nel caso specifico dell'esempio che hai fatto sono possibili soluzioni sia: X=1 Y=4 Z=0 che X=1 Y=1 Z=2

Servono necessariamente altre informazioni per poter selezionare una soluzione univoca.
Ad esempio:
- minor numero di contenitori
- minor costo (serve conoscere il costo di ogni contenitore)
Prima di aprire una discussione leggi le Guide, poi vedi se c'è un HowTo nel Wiki e fai una ricerca nel Forum!
Applica semplicemente il [Risolto]! Prova: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: http://forum.ubuntu-it.org/viewtopic.php?f=70&t=597066
gila75
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2739
Iscrizione: mercoledì 16 gennaio 2013, 17:28
Desktop: ubuntu-2d
Distribuzione: Ubuntu 12.04.2 LTS i686
Località: Airuno(Lecco)

Re: aiuto matematico

Messaggio da gila75 »

Per una sola intendo: io ho 33x+55y+75z=210
Ma nei sistemi ho sempre le tre equazioni nella graffa, hai presente?
es (a caso):

3x+5y=10z
3x-22x-81z=-100
x+y+38=-15z

e non so come fare...lo so sono ignorante, sicuramente c'è una trasposizione che non ricordo\conosco.
@Zoff: hai\avete ragione ci sono più soluzioni, non avevo tenuto conto.
Ma per il problema forse potrei accontentarmi per ora. Al limite potrei ottimizzare dopo sui vari tagli di contenitore come dicevo qualche post fa.
L'unica cosa è che non mi devono venire valori negativi altrimenti significa che non posso con quei contenitori "imbottigliare" tutto il liquido.
Almeno queste le mie prove con wolfame Alpha.
comunque è un vecchio problema già postato qui sul forum parecchio tempo fa, ma non si era approfondito.
Se non ricordo male un utente aveva risolto col brute force, ma a me non va.
Avatar utente
Sargonsei
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2451
Iscrizione: domenica 17 febbraio 2008, 13:56

Re: aiuto matematico

Messaggio da Sargonsei »

gila75 [url=http://forum.ubuntu-it.org/viewtopic.php?p=4976973#p4976973][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:Avrei bisogno di una rispolverata dopo tanti anni :D
Per un programmino che vorrei scrivere in C dovrei capire come si svolge la seguente equazione:
33x+50y+75z=233
Lo sapevo fare ma ora non ricordo più. Sono graditi nel caso anche link chiari e mirati.
Tutto questo serve per un "semplice" problema: ho la data quantità di liquido, e tre formati di contenitori: 33,75,50 cl.
Determinare la quantità richiesta di contenitori.
Quindi ho pensato: quali sono in numeri che moltiplicati per 33, per 50, per 75 e sommati tra loro danno il quantitativo di liquido?
Ho svolto con Wolframe Alpha e funziona, ma tradurlo a C mi serve il procedimento matematico.
In fondo è solo un'equazione a 3 incognite di primo grado, semplice direi, ma davvero a distanza di 25 e rotti anni non ricordo.
Grazie a tutti :)
Cosa centra la matematica? A me sembra un problema di logica, non di matematica.
Il numero MINIMO di contenitori necessari è 4
(233/75)=3 contenitori da 75 cl ed avanzano 8 cl che puoi mettere nel contenitore da 33 cl (senza riempirlo tutto)

Se invece vuoi fare in modo che tutti i contenitori siano pieni fino all'orlo, allora z<3
Facciamo Z=2 abbiamo 233-(75*2)=233-150=83
Cerchiamo Y facendo (83/50)=1 e resta 33, che è esattamente la dimensione di X, quindi
X=1; Y=1; Z=2, e l'equazione 33x+50y+75z=233 diventa 33*1+50*1+75*2=233
da cui 33+50+150=233

Ma non è l'unico risultato possibile.
Per esempio, X=1; Y=4 e Z=0 sono comunque risultati validi.
Postare l'output di un comando significa inserire nel post: la riga in cui si digita il comando, tutto l'output, e la riga in cui il prompt ricompare.
Hardware e Sistema Operativo di Sargonsei: http://sargonsei.altervista.org/hardwar ... r-fisso-2/
Comandi da tenere a portata di mano: http://sargonsei.altervista.org/655-2/
Avatar utente
Sargonsei
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2451
Iscrizione: domenica 17 febbraio 2008, 13:56

Re: aiuto matematico

Messaggio da Sargonsei »

gila75 [url=http://forum.ubuntu-it.org/viewtopic.php?p=4977724#p4977724][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:...
L'unica cosa è che non mi devono venire valori negativi altrimenti significa che non posso con quei contenitori "imbottigliare" tutto il liquido.
Almeno queste le mie prove con wolfame Alpha.
comunque è un vecchio problema già postato qui sul forum parecchio tempo fa, ma non si era approfondito.
Se non ricordo male un utente aveva risolto col brute force, ma a me non va.
Sicuro che quella sia l'unica condizione da porre? A me pare che si debba porre anche la condizione che X, Y e Z siano 3 numeri INTERI, in quanto
1) se ammetti anche valori frazionari, le soluzioni sono infinite.
2) se ammetti solo valori interi, le soluzioni possibili sono 2
3) se ammetti solo valori interi e maggiori di zero, esiste una sola soluzione possibile.
--- :sisi: ---
Usando matematica e logica assieme, ponendo come condizione che x, y, z siano valori interi e maggiori o uguali a zero.
X potrebbe essere un qualsiasi numero compreso fra 0 e 7, ma 1 è l'unico valore di x per cui il resto sia divisibile per gli altri volumi senza dare resto, quindi x=1.

Con x=1 l'equazione 33x+50y+75z=233
diventa 33*1+50y+75z=233
da cui 50y+75z=233-33
Quindi 50y+75z=200
Dividendo tutto per 25 diventa 2y +3z=8

quindi
2y=8-3z che diventa y=(8-3z)/2

L'equazione y=(8-3z)/2 ci dice che, se Y deve essere un numero intero, z può essere solo un numero pari, e siccome per valori di z maggiori o uguali a 4 corrispondono quantità di liquido maggiori o uguali a 300, z può essere solo 0 oppure 2.

A questo punto, per z=0 l'equazione y=(8-3z)/2 diventa y=(8-3*0)/2 quindi y=4
e per z=2 l'equazione y=(8-3z)/2 diventa y=(8-3*2)/2 quindi y=1

Ne consegue che ponendo come condizione che x, y, z siano valori interi e maggiori di zero, l'equazione 33x+50y+75z=233
ammette unicamente 2 soluzioni possibili, che sono

X=1; Y=4 e Z=0 oppure X=1; Y=1; Z=2
Postare l'output di un comando significa inserire nel post: la riga in cui si digita il comando, tutto l'output, e la riga in cui il prompt ricompare.
Hardware e Sistema Operativo di Sargonsei: http://sargonsei.altervista.org/hardwar ... r-fisso-2/
Comandi da tenere a portata di mano: http://sargonsei.altervista.org/655-2/
gila75
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2739
Iscrizione: mercoledì 16 gennaio 2013, 17:28
Desktop: ubuntu-2d
Distribuzione: Ubuntu 12.04.2 LTS i686
Località: Airuno(Lecco)

Re: aiuto matematico

Messaggio da gila75 »

Interessante ciò che hai postato Saragonesi, leggo con cura...magari domani che sono più fresco.
Io avevo pensato ad un equazione a tre incognite, ma come detto non so il procedimento matematico...o logico.
Certo i contenitori se possibile devono essere pieni fino all'oro. se non è possibile si considera scarto:
es: 68 cl --->2 da 33 e 2 cl scarto.
In questo caso, avrei dei numeri negativi come risultato, il che mi fa capire che non posso in nessun caso riempire fino all'orlo senza scarto
infatti:
33*21+50*1+75*-9=68
il -9 non ha senso riferito al nostro problema.
é solo uno sfizio per me, ma m'interessava
Avatar utente
Dclaudio1990
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 624
Iscrizione: sabato 11 aprile 2015, 14:31
Distribuzione: openSUSE
Sesso: Maschile
Località: Roma

Re: aiuto matematico

Messaggio da Dclaudio1990 »

gila75 [url=http://forum.ubuntu-it.org/viewtopic.php?p=4978004#p4978004][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto: Io avevo pensato ad un equazione a tre incognite, ma come detto non so il procedimento matematico...o logico.
Non esiste nessun procedimento matematico, nel caso tu abbia una singola relazione che lega 3 variabili: per risolvere l'equazione con un sistema lineare quadrato si devono avere altre due relazioni tra le variabili.
Esiste, tuttavia, un procedimento logico alla base del quale è possibile determinare le soluzioni dell'equazioni.
Per non andare proprio a casaccio, si potrebbero imporre una condizione che rende interessante il problema: la somma (x+y+z)+scarto deve essere la minore possibile.
Con questa condizione, anche non costruendo una vera e propria condizione che possa andare a sistema, si può definire un algoritmo che permette di risolvere il problema.
"Io penso, dunque sono, ossia esisto."
-René Descartes
Avatar utente
Sargonsei
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 2451
Iscrizione: domenica 17 febbraio 2008, 13:56

Re: aiuto matematico

Messaggio da Sargonsei »

gila75 [url=http://forum.ubuntu-it.org/viewtopic.php?p=4978004#p4978004][img]http://forum.ubuntu-it.org/images/icons/icona-cita.gif[/img][/url] ha scritto:Interessante ciò che hai postato Saragonesi, leggo con cura...magari domani che sono più fresco.
Io avevo pensato ad un equazione a tre incognite, ma come detto non so il procedimento matematico...o logico.
Certo i contenitori se possibile devono essere pieni fino all'oro. se non è possibile si considera scarto:
es: 68 cl --->2 da 33 e 2 cl scarto.
In questo caso, avrei dei numeri negativi come risultato, il che mi fa capire che non posso in nessun caso riempire fino all'orlo senza scarto
infatti:
33*21+50*1+75*-9=68
il -9 non ha senso riferito al nostro problema.
é solo uno sfizio per me, ma m'interessava
Se si accettano solo valori interi e maggiori o uguali a zero, l'equazione ha un numero limitato di soluzioni possibili, tutti individuabili usando la logica e... provando.
Se invece accettiamo anche valori negativi, le soluzioni diventano infinite.
Con X=1, Y=-2 e Z=4
l'equazione
33x+50y+75z=233
diventa
33*1+50*(-2)+75*4=233
quindi è verificata

ma anche con X=1, Y=7 e Z=-2
diventa
33*1+50*7+75*(-2)=233
quindi è verificata.
E, come ho già spiegato, se accettiamo valori negativi, le soluzioni possibili sono infinite.
Postare l'output di un comando significa inserire nel post: la riga in cui si digita il comando, tutto l'output, e la riga in cui il prompt ricompare.
Hardware e Sistema Operativo di Sargonsei: http://sargonsei.altervista.org/hardwar ... r-fisso-2/
Comandi da tenere a portata di mano: http://sargonsei.altervista.org/655-2/
gila75
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2739
Iscrizione: mercoledì 16 gennaio 2013, 17:28
Desktop: ubuntu-2d
Distribuzione: Ubuntu 12.04.2 LTS i686
Località: Airuno(Lecco)

Re: aiuto matematico

Messaggio da gila75 »

Se si accettano solo valori interi e maggiori o uguali a zero, l'equazione ha un numero limitato di soluzioni possibili, tutti individuabili usando la logica e... provando.
Si solo valori interi maggiori di zero. Il 33, 50, 75 sono dati fissi, e anche la quantità è un valore maggiore di zero.
Stavo cercando un modo "matematico" per eliminare il provando. Le equazioni diofantee come diceva Dahman fanno al mio caso.
Ma anche quelle non le conosco, ci stavo studiando.
Le diofantee in più a prima vista mi dicono subito se il risultato è frazionario o meno:
15x+45y=60 (M.C.D=15 60/15=4) ci sarà un risultato intero (non so a priori però se x o y saranno negative)

15x+45y=61 (MCD =15 61/15=4.06) risultato frazionario.

Mi manca da capire un passaggio delle diofantee e poi tradurre in C, e ancora poi adeguare a 3 incognite, visto che in rete trovo solo
diofantee a 2 incognite...ma iniziamo così.
gila75
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 2739
Iscrizione: mercoledì 16 gennaio 2013, 17:28
Desktop: ubuntu-2d
Distribuzione: Ubuntu 12.04.2 LTS i686
Località: Airuno(Lecco)

Re: aiuto matematico

Messaggio da gila75 »

Servono necessariamente altre informazioni per poter selezionare una soluzione univoca.
@Zoff, come detto hai perfettamente ragione, le soluzioni possono essere molteplici.
Non capisco però come mai wolframe alpha mi restituisce sempre la soluzione desiderata.
Seconda cosa, mi sono impiantato su un problema.
Mi sono ripassato le equazioni di secondo grado a 2 incognite (inizio con 2 che è più semplice, poi passo a 3).
Ho usato il metodo della sostituzione, anche se per un eventuale programma C sarebbe meglio quello di Cramer.
Avevo pensato:
3x+5y=34
3x-5y-34=0

praticamente un sistema di 2 equazioni, ma così facendo è indeterminata!!!!
Ripassando ho letto che se le due equazioni sono equivalenti alla fine al x o la y mi si riducono a 0.
Quindi la seconda la dovrei cambiare in es
6x+3y=33 (x=3,y=5)
Ma così dovrei sapere a priori x,y, cosa che non so!!! :muro:
Non so bene come procedere ora.
Ci sono le diofantee, ma è un po' un casino tradurle in C...consigli?
Come ultima spiaggia ho trovato un link, che con un ragionamento (apparentemente) semplice risolve, ma devo guardare.
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 4 ospiti