Binomio di Newton

« Older   Newer »
 
  Share  
.
  1. Dodiz
     
    .

    User deleted


    Esercizio :D

    BINOMIO DI NEWTON

    il binomio di newton è una formula che calcola la potenza ennesima di un binomio ( (a + b) ^ n) con la seguente formula:

    9a797beebb5374641e8cea6db07ffc38

    Dove la "E" sta per sommatoria, ovvero viene eseguita quella operazione e il risultato viene sommato alla stessa formula ma con k += 1,
    mentre 3f5c2191d5128f36ec6b726c77df3b06 è chiamata combinazione semplice ed è il coefficiente del binomio (lo stesso del triangolo di tartaglia), fa parte del calcolo combinatorio (Click) e viene calcolata secondo la formula dei 3 fattoriali: eed76baaa00cf639ad1c1cecd11247f1
    In matematica, si definisce fattoriale di un numero naturale n, indicato con n! il prodotto dei numeri interi positivi minori o uguali a tale numero. In formula:

    Oppure con questa:

    Aiuto: al numeratore ci sono tanti fattori quanti ne dice k

    Buon lavoro ^^

    Edited by Dodiz - 2/11/2013, 21:52
     
    Top
    .
  2. Guglielmoqwerty
     
    .

    User deleted


    Come esercizio sembra interessante ma... potresti esplicitarmi lo scopo? (Mi sono appena svegliato e non sono molto reattivo :P )
     
    Top
    .
  3. Dodiz
     
    .

    User deleted


    CITAZIONE (Guglielmoqwerty @ 1/11/2013, 19:33) 
    Come esercizio sembra interessante ma... potresti esplicitarmi lo scopo? (Mi sono appena svegliato e non sono molto reattivo :P )

    Ma buongiorno :lol:
    Non so credo..metterti alla prova :wacko: Gli altri che ho letto non sembrano averne uno
     
    Top
    .
  4. Guglielmoqwerty
     
    .

    User deleted


    Ho fatto la pennichella pomeridiana ^_^

    Comunque non voglio la soluzione, mi piacerebbbe appunto sapere lo scopo, leggendo l'esercizio mi sembra semplicemente la spiegazione della formula. (però spiegata bene ;) )

    Credo che lo scopo sia questo:
    CITAZIONE
    il binomio di newton è una formula che calcola la potenza ennesima di un binomio ( (a + b) ^ n) con la seguente formula

    ma non lo capisco :(

    Potresti per favore farmi un esempio di input ouput scrivendomi cosa risulta inserendo un determinato dato? Dovrebbe bastare grazie :)

    EDIT: ho controllato su wikipedia. Se non ho capito male questa funzione sviluppa semplicemente le potenze di binomio giusto? (senza sapere i valori di x e y)
     
    Top
    .
  5. Dodiz
     
    .

    User deleted


    CITAZIONE (Guglielmoqwerty @ 1/11/2013, 20:51) 
    Ho fatto la pennichella pomeridiana ^_^

    Comunque non voglio la soluzione, mi piacerebbbe appunto sapere lo scopo, leggendo l'esercizio mi sembra semplicemente la spiegazione della formula. (però spiegata bene ;) )

    Credo che lo scopo sia questo:
    CITAZIONE
    il binomio di newton è una formula che calcola la potenza ennesima di un binomio ( (a + b) ^ n) con la seguente formula

    ma non lo capisco :(

    Potresti per favore farmi un esempio di input ouput scrivendomi cosa risulta inserendo un determinato dato? Dovrebbe bastare grazie :)

    EDIT: ho controllato su wikipedia. Se non ho capito male questa funzione sviluppa semplicemente le potenze di binomio giusto? (senza sapere i valori di x e y)

    mi sono spiegato male? >_>
    In input n, e se vuoi farlo più complesso i coefficienti di a e b, ed eventualmente anche la parte letterale dei singoli monomi (invece di a, metti bc o simili..)
    a e b rimangono variabili..anzi parametri in questo caso
     
    Top
    .
  6. Guglielmoqwerty
     
    .

    User deleted


    No, la spiegazione della formala è ottima, non manca niente, forse hai solo dato per scontato che tutti conoscessero bene lo scopo della formula. (E grazie per aver specificato che servono anche i coefficienti, non ci avevo pensato)

    Comunque adesso ho capito, appena ho tempo mi metto al lavoro :)
     
    Top
    .
  7.  
    .
    Avatar

    Senior Member

    Group
    Staff
    Posts
    10,796

    Status
    Anonymous
    Ti segnalo un errore, non è chiamata "disposizione semplice" ma "combinazione semplice" o "coefficiente binomiale".
    Colgo l'occasione per linkare un mio articolo: https://solopc.forumcommunity.net/?t=55434437 l'avevo postato su Syra per un Contest, ma non l'avevo postato anche qui.


    Comunque appena ho un attimo di tempo lo scrivo. ;)
     
    Top
    .
  8. Dodiz
     
    .

    User deleted


    modificato :D
     
    Top
    .
  9. Guglielmoqwerty
     
    .

    User deleted


    Ok, ho finalmente finito:

    Download da Dropbox



    Supporta solo binomi della forma (x+y)^n con inserimento di n. In compenso ho accelerato il calcolo del fattoriale di un numero (a scapito di un po' di memoria) e documentato la classe. Forse l'unica scelta non-OO è quella di non creare una classe interna CoefficenteBinomiale ma di calcolarlo con un metodo.
     
    Top
    .
  10.  
    .
    Avatar

    Senior Member

    Group
    Staff
    Posts
    10,796

    Status
    Anonymous
    Buona l'idea del calcolo del fattoriale in quel modo. Purtroppo in effetti va a scapito della memoria, in quanto se n valesse 100 occuperesti 400byte solo per l'array.
    Ti conviene utilizzare StringBuilder al posto di String nel metodo risolvi(). Un meccanismo della Heap permette comunque a Java di utilizzare gli oggetti creati in precedenza, ma vedo molti assegnamenti e concatenazioni... quindi eviterei ed utilizzerei StringBuilder.

    Osservando la OOP direi invece che sarebbe stato meglio utilizzare una classe con costruttore privato e metodo statico, chiamata ad esempio Fattoriale. Ma per un esercizio così, va bene anche in questo modo.
    Visto il modo in cui hai "legato" l'array di fattoriali con la Combinazione non avrei creati classi interne. Magari una privata, ma non avrebbe avuto molto significato.
     
    Top
    .
  11. Guglielmoqwerty
     
    .

    User deleted


    CITAZIONE (RootkitNeo @ 4/11/2013, 02:04)
    Buona l'idea del calcolo del fattoriale in quel modo. Purtroppo in effetti va a scapito della memoria, in quanto se n valesse 100 occuperesti 400byte solo per l'array.

    Ma comunque mi sembra che 400byte (o 3200bit :P ) contro al calcolare il fattoriale di 100 numeri è un buon guadagno.
    Altrimenti, visto che i fattoriali vengono utilizzati in ordine, si potrebbe conservare solo l'ultimo prodotto e un indice. Così il tutto si ridurrebbe a 64 bit (o 8 byte)
    CITAZIONE
    Ti conviene utilizzare StringBuilder al posto di String nel metodo risolvi(). Un meccanismo della Heap permette comunque a Java di utilizzare gli oggetti creati in precedenza, ma vedo molti assegnamenti e concatenazioni... quindi eviterei ed utilizzerei StringBuilder.

    Fatto, così va bene? (Il link è sempre lo stesso. W dropbox ^_^ )
    CITAZIONE
    Osservando la OOP direi invece che sarebbe stato meglio utilizzare una classe con costruttore privato e metodo statico, chiamata ad esempio Fattoriale. Ma per un esercizio così, va bene anche in questo modo.
    Visto il modo in cui hai "legato" l'array di fattoriali con la Combinazione non avrei creati classi interne. Magari una privata, ma non avrebbe avuto molto significato.

    Oh, quindi il coefficiente binomiale ha altre applicazioni? Grazie per la delucidazione :) Comunque non credo che il metodo statico sia la scelta migliore (dal punto di vista delle prestazioni) perchè in questo caso dovrei calcolarmi manualmente il valore ogni volta :(
     
    Top
    .
  12. uomo in verde
     
    .

    User deleted


    Premessa: non sono un buon programmatore, per cui le mie considerazioni potrebbero essere decisamente turpi. Detto questo: non sarebbe meglio trovare un'alternativa all'utilizzo dei coefficienti binomiali, che risultano dispendiosi in termini di tempistiche di calcolo (volevo dire costo computazionale, ma credo direi una cazzata)? Una proprietà che agli appassionati di matematica fa sempre piacere ricordare è che i coefficienti dello sviluppo di Newton di un binomio di grado n corrispondono esattamente ed ordinatamente ai termini numerici dell'n-sima riga del Triangolo di Tartaglia, di cui non disquisisco qui in quanto la pagina di Wikipedia esiste e ne illustra le caratteristiche credo meglio di come farei io. Il mio pensiero è: non sarebbe più ottimale implementare un albero binario che generi una versione "troncata" del Triangolo di Tartaglia e poi pescare i coefficienti dalle foglie? Mi rimetto alle vostre risposte, sicuramente ne sapete più di me :-)
     
    Top
    .
  13. Guglielmoqwerty
     
    .

    User deleted


    CITAZIONE (uomo in verde @ 24/2/2014, 22:20)
    Premessa: non sono un buon programmatore, per cui le mie considerazioni potrebbero essere decisamente turpi. Detto questo: non sarebbe meglio trovare un'alternativa all'utilizzo dei coefficienti binomiali, che risultano dispendiosi in termini di tempistiche di calcolo (volevo dire costo computazionale, ma credo direi una cazzata)? Una proprietà che agli appassionati di matematica fa sempre piacere ricordare è che i coefficienti dello sviluppo di Newton di un binomio di grado n corrispondono esattamente ed ordinatamente ai termini numerici dell'n-sima riga del Triangolo di Tartaglia, di cui non disquisisco qui in quanto la pagina di Wikipedia esiste e ne illustra le caratteristiche credo meglio di come farei io. Il mio pensiero è: non sarebbe più ottimale implementare un albero binario che generi una versione "troncata" del Triangolo di Tartaglia e poi pescare i coefficienti dalle foglie? Mi rimetto alle vostre risposte, sicuramente ne sapete più di me :-)

    Ovviamente esiste anche il triangolo di tartaglia (infatti non capivo lo scopo dell'esercizio perchè avevo presente quello XD ). Lo scopo dell'esercizio penso sia trovare un algoritmo non troppo esoso per calcolare il fattoriale, perchè usare
    F(n) = n*F(n-1) con F(1)=1
    sarebbe da pazzi. Comunque anche implementare il triangolo di tartaglia potrebbe essere un'idea :)

    I termine dovrebbe (da notare il condizionale) essere giusto.

    PS: Il mio file è stato spostato: Download Dropbox Aggiornato
     
    Top
    .
12 replies since 1/11/2013, 18:38   293 views
  Share  
.