Forum
>>
Principianti
>>
logaritmo
Pagina: 1
Esegui il login per scrivere una risposta.
Pagina: 1
Scritto da guinomeip |
2018-02-19 16:15:42 - logaritmo
|
ciao!
L'esercizio dice: " Il log₂ di un numero N è dato dal valore di M nell'equazione N = 2M Il valore di M è approssimativamente uguale al numero di volte che M può essere diviso per 2 finchè non diventa 0. Scrivete un ciclo che calcola questa approssimazione del log₂ di un numero N. " Chi mi aiuta a capire? |
|
Scritto da EL DIABLO |
2018-02-19 18:06:53 - Re: logaritmo
|
Vai a controllare, l'esercizio presumo dica (e se non lo dice sarà un errore di stampa):
" Il log₂ di un numero N è dato dal valore di M nell'equazione N = 2^M Il valore di M è approssimativamente uguale al numero di volte che N può essere diviso per 2 finchè non diventa 0. Scrivete un ciclo che calcola questa approssimazione del log₂ di un numero N. " Quidi per trovare M basta scrivere un ciclo che conti quante volte N può essere diviso per 2 finché non diventa 0. Sai cosa sono i logaritmi? |
|
Scritto da guinomeip |
2018-02-19 22:40:40 - Re: logaritmo
|
Per esempio, il logaritmo in base 2 di 16 è 4, perchè 2 elevato alla quarta è uguale a 16.
|
|
Scritto da EL DIABLO |
2018-02-19 23:03:19 - Re: logaritmo
|
Il log₂ (logaritmo in base 2) di un numero N (16) è dato dal valore di M (4) nell'equazione N = 2^M (16 = 2^4)
Per curiosità: l'esercizio era scritto come ho detto io? |
|
Scritto da guinomeip |
2018-02-20 10:03:51 - Re: logaritmo
|
No, allora deve essere un errore di stampa.
|
|
Scritto da guinomeip |
2018-02-21 11:22:07 - Re: logaritmo
|
ciao!
A me l'esercizio viene così: numero = int(input("Scegli un numero: ")) esponente = 0 num = numero while num > 1: num /=2 esponente += 1 if 2**esponente == numero and esponente == int(esponente): print("Il log₂ di", numero,"è",esponente,) print("2^",esponente,"è uguale a",2**esponente) else: esponente -= num print("Il log₂ di", numero, "è", esponente) print("2^",esponente,"più (",numero,"meno 2^",esponente,"), è uguale a\ ", int(2**esponente +(numero - 2**esponente))) --- Ultima modifica di guinomeip in data 2018-02-21 11:23:20 --- --- Ultima modifica di guinomeip in data 2018-02-21 11:28:21 --- |
|
Scritto da EL DIABLO |
2018-02-21 13:20:44 - Re: logaritmo
|
Modifica il messaggio. Come ripete sempre il buon Palmux: "per inserire il codice Python si utilizza il tasto code, che trovi subito prima della tavolozza dei colori".
|
|
Scritto da guinomeip |
2018-02-21 15:33:18 - Re: logaritmo
|
a me l'esercizio viene così:
numero = int(input("Scegli un numero: ")) esponente = 0 num = numero while num > 1: num /= 2 esponente += 1 if 2**esponente == numero and esponente == int(esponente): print("Il log₂ di", numero,"è",esponente) print("2^",esponente,"è uguale a",2**esponente) else: esponente -= num print("Il log₂ di", numero, "è", esponente) print("2^",esponente,"più (",numero,"meno 2^",esponente,"), è uguale a\ ", int(2**esponente +(numero - 2**esponente))) --- Ultima modifica di guinomeip in data 2018-02-21 15:33:34 --- --- Ultima modifica di guinomeip in data 2018-02-21 15:35:58 --- --- Ultima modifica di guinomeip in data 2018-02-21 15:36:45 --- |
|
Scritto da EL DIABLO |
2018-02-21 21:32:50 - Re: logaritmo
|
L'esercizio chiede di calcolare "l'approssimazione del log₂ di un numero N".
Poiché il ciclo calcola solamente quante volte il numero può essere diviso per 2, la variabile esponente è un numero intero, che indicherà il valore esatto solamente se il numero è potenza di 2. Se il numero scelto non è potenza di 2, la variabile esponente indicherà un'approssimazione, che può discostarsi parecchio dal valore reale in quanto priva di parte frazionaria. Chi ha scritto l'esercizio ha commesso anche questo errore: "Il valore di M è approssimativamente uguale al numero di volte che N può essere diviso per 2 finchè non diventa 0." Che dovrebbe essere scritto in questo modo: "Il valore di M è approssimativamente uguale al numero di volte che N può essere diviso per 2 finchè non diventa minore di 2." Nel ciclo è più figo quindi utilizzare l'operatore di divisione intera // e scrivere la condizione del ciclo >= 2. Quello che hai scritto dopo la clausola else è sbagliato, non avendo studiato i logaritmi hai fatto un pò di confusione. Il programma richiesto da questo "strano" esercizio quindi è questo: numero = int(input("Scegli un numero: ")) esponente = 0 num = numero while num >= 2: num //= 2 esponente += 1 if 2**esponente == numero and esponente == int(esponente): print("Il log₂ di", numero,"è",esponente) print("2^",esponente,"è uguale a",2**esponente) else: print("Il log₂ di", numero,"è",esponente,"privo di parte frazionaria.") print("2^",esponente,"è uguale a",2**esponente,"che è minore di",numero, "perché l'esponente è privo di parte frazionaria.") --- Ultima modifica di Ὅμηρος 蟒蛇 in data 2018-02-21 21:37:04 --- |
Pagina: 1
Esegui il login per scrivere una risposta.