aiuto matematico

Linguaggi di programmazione: php, perl, python, C, bash, ecc.

aiuto matematico

Messaggioda gila75 » martedì 25 aprile 2017, 15:18

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 :)
gila75
Entusiasta Emergente
Entusiasta Emergente
 
Messaggi: 2078
Iscrizione: gennaio 2013
Località: Airuno(Lecco)
Desktop: ubuntu-2d
Distribuzione: Ubuntu 12.04.2 LTS i686

Re: aiuto matematico

Messaggioda fujiko_mine » martedì 25 aprile 2017, 16:48

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:
Audentes fortuna iuvat Virgilio, Eneide, X, 284
Riconosci di sapere quel che sai e di non sapere quello che non sai. Questa è la sapienza Confucio
Non ho un cervello, ma ho un'idea B.O.B., Mostri contro alieni
Avatar utente
fujiko_mine
Prode Principiante
 
Messaggi: 216
Iscrizione: novembre 2012
Desktop: Unity
Distribuzione: Ubuntu 16.04.1 LTS x86_64

Re: aiuto matematico

Messaggioda gila75 » martedì 25 aprile 2017, 17:38

Ok grazie ora guardo.
Avevo visto anche io sistemi di equazioni, ma non so come "disporla".
Ci provo
gila75
Entusiasta Emergente
Entusiasta Emergente
 
Messaggi: 2078
Iscrizione: gennaio 2013
Località: Airuno(Lecco)
Desktop: ubuntu-2d
Distribuzione: Ubuntu 12.04.2 LTS i686

Re: aiuto matematico

Messaggioda stefano_carniel » mercoledì 26 aprile 2017, 16:53

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
stefano_carniel
Prode Principiante
 
Messaggi: 216
Iscrizione: marzo 2007

Re: aiuto matematico

Messaggioda harpefalcata » mercoledì 26 aprile 2017, 17:02

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.
Avatar utente
harpefalcata
Scoppiettante Seguace
Scoppiettante Seguace
 
Messaggi: 630
Iscrizione: ottobre 2015
Località: Roma, Italia
Desktop: Unity
Distribuzione: Ubuntu 16.04.2 Xenial Xerus
Sesso: Maschile

Re: aiuto matematico

Messaggioda Dahman » mercoledì 26 aprile 2017, 18:03

cerca sul Web, come risolvere le equazioni diofantee.

ciao
dahman
Dahman
Scoppiettante Seguace
Scoppiettante Seguace
 
Messaggi: 978
Iscrizione: ottobre 2007
Località: Torino

Re: aiuto matematico

Messaggioda gila75 » mercoledì 26 aprile 2017, 18:09

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
Entusiasta Emergente
Entusiasta Emergente
 
Messaggi: 2078
Iscrizione: gennaio 2013
Località: Airuno(Lecco)
Desktop: ubuntu-2d
Distribuzione: Ubuntu 12.04.2 LTS i686

Re: aiuto matematico

Messaggioda gila75 » mercoledì 26 aprile 2017, 18:09

cerca sul Web, come risolvere le equazioni diofantee.


Vedo solo ora, mi sa che abbiamo postato contemporaneamente, ok grazie ;)
gila75
Entusiasta Emergente
Entusiasta Emergente
 
Messaggi: 2078
Iscrizione: gennaio 2013
Località: Airuno(Lecco)
Desktop: ubuntu-2d
Distribuzione: Ubuntu 12.04.2 LTS i686

Re: aiuto matematico

Messaggioda mikexu » mercoledì 26 aprile 2017, 18:18

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.
Avatar utente
mikexu
Scoppiettante Seguace
Scoppiettante Seguace
 
Messaggi: 319
Iscrizione: novembre 2012
Distribuzione: Lubuntu 16.04 (i686)
Sesso: Maschile

Re: aiuto matematico

Messaggioda gila75 » giovedì 27 aprile 2017, 6:25

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
gila75
Entusiasta Emergente
Entusiasta Emergente
 
Messaggi: 2078
Iscrizione: gennaio 2013
Località: Airuno(Lecco)
Desktop: ubuntu-2d
Distribuzione: Ubuntu 12.04.2 LTS i686

Re: aiuto matematico

Messaggioda mikexu » giovedì 27 aprile 2017, 9:58

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.
Avatar utente
mikexu
Scoppiettante Seguace
Scoppiettante Seguace
 
Messaggi: 319
Iscrizione: novembre 2012
Distribuzione: Lubuntu 16.04 (i686)
Sesso: Maschile

Re: aiuto matematico

Messaggioda Zoff » giovedì 27 aprile 2017, 10:02

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: viewtopic.php?f=70&t=548821
Vuoi qualcosa di piu' dal forum? Prova i miei script: viewtopic.php?f=70&t=597066
Avatar utente
Zoff
Moderatore Globale
Moderatore Globale
 
Messaggi: 33304
Iscrizione: ottobre 2007

Re: aiuto matematico

Messaggioda gila75 » giovedì 27 aprile 2017, 21:16

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.
gila75
Entusiasta Emergente
Entusiasta Emergente
 
Messaggi: 2078
Iscrizione: gennaio 2013
Località: Airuno(Lecco)
Desktop: ubuntu-2d
Distribuzione: Ubuntu 12.04.2 LTS i686

Re: aiuto matematico

Messaggioda Sargonsei » venerdì 28 aprile 2017, 16:05

gila75 Immagine 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.
L'hardware ed il Sistema Operativo di Sargonsei: http://sargonsei.altervista.org/hardwar ... r-fisso-2/
Inserisci anche tu, nella tua firma, la configurazione del tuo PC o il link alla configurazione stessa. Sarà di aiuto a chi ti vuole aiutare.
Avatar utente
Sargonsei
Entusiasta Emergente
Entusiasta Emergente
 
Messaggi: 1916
Iscrizione: febbraio 2008

Re: aiuto matematico

Messaggioda Sargonsei » venerdì 28 aprile 2017, 17:06

gila75 Immagine 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.
L'hardware ed il Sistema Operativo di Sargonsei: http://sargonsei.altervista.org/hardwar ... r-fisso-2/
Inserisci anche tu, nella tua firma, la configurazione del tuo PC o il link alla configurazione stessa. Sarà di aiuto a chi ti vuole aiutare.
Avatar utente
Sargonsei
Entusiasta Emergente
Entusiasta Emergente
 
Messaggi: 1916
Iscrizione: febbraio 2008

Re: aiuto matematico

Messaggioda gila75 » venerdì 28 aprile 2017, 20:44

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
gila75
Entusiasta Emergente
Entusiasta Emergente
 
Messaggi: 2078
Iscrizione: gennaio 2013
Località: Airuno(Lecco)
Desktop: ubuntu-2d
Distribuzione: Ubuntu 12.04.2 LTS i686

Re: aiuto matematico

Messaggioda Dclaudio1990 » sabato 29 aprile 2017, 0:10

gila75 Immagine 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
Dclaudio1990
Scoppiettante Seguace
Scoppiettante Seguace
 
Messaggi: 606
Iscrizione: aprile 2015
Località: Roma
Distribuzione: Linux 16.04 64bit
Sesso: Maschile

Re: aiuto matematico

Messaggioda Sargonsei » sabato 29 aprile 2017, 14:07

gila75 Immagine 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.
L'hardware ed il Sistema Operativo di Sargonsei: http://sargonsei.altervista.org/hardwar ... r-fisso-2/
Inserisci anche tu, nella tua firma, la configurazione del tuo PC o il link alla configurazione stessa. Sarà di aiuto a chi ti vuole aiutare.
Avatar utente
Sargonsei
Entusiasta Emergente
Entusiasta Emergente
 
Messaggi: 1916
Iscrizione: febbraio 2008

Re: aiuto matematico

Messaggioda gila75 » sabato 29 aprile 2017, 17:09

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
Entusiasta Emergente
Entusiasta Emergente
 
Messaggi: 2078
Iscrizione: gennaio 2013
Località: Airuno(Lecco)
Desktop: ubuntu-2d
Distribuzione: Ubuntu 12.04.2 LTS i686

Re: aiuto matematico

Messaggioda gila75 » martedì 2 maggio 2017, 6:29

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.
gila75
Entusiasta Emergente
Entusiasta Emergente
 
Messaggi: 2078
Iscrizione: gennaio 2013
Località: Airuno(Lecco)
Desktop: ubuntu-2d
Distribuzione: Ubuntu 12.04.2 LTS i686

Successiva

Torna a Programmazione

Chi c’è in linea

Visualizzano questa sezione: 0 utenti registrati e 5 ospiti