Come implemento un elevazione ad un esponente con cifre decimali, avendo già implementato l'elevazione a esponente intero e le operazioni di base?
Idee?![]()
Come implemento un elevazione ad un esponente con cifre decimali, avendo già implementato l'elevazione a esponente intero e le operazioni di base?
Idee?![]()
Windows Xp
[Java]
[PHP]Notepad++
[Fortran90-77]elf90 g77
[C++ /WinAPI] DevC++ VisualC++
Io ho tirato fuori questo:
Solo in questo modo tengo conto solo di una cifra decimale e se volessi tenere conto anche delle altre avrei comunque una approx. numerica non indifferente....ci sono altri modi?codice:X^(a,b) = (X^a)*radice10°di(X^b) es: 3^3.7 = 3^3*radicedecimadi(3^7)![]()
Windows Xp
[Java]
[PHP]Notepad++
[Fortran90-77]elf90 g77
[C++ /WinAPI] DevC++ VisualC++
Ehm... veramente...
3^(3.7) = 3 ^ (37/10) = radice10(3^37).
Ciao.![]()
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
Quindi?![]()
è la stessa cosa, cercavo un metodo diverso, ora che ci penso non posso neppure passare per le radici...qualcosa che si risolva tipo tramite sommatorie....chessò sviluppo in qualche serie... :master:
Windows Xp
[Java]
[PHP]Notepad++
[Fortran90-77]elf90 g77
[C++ /WinAPI] DevC++ VisualC++
curiosando in Math, ho trovato quello che cerchi:
static double pow(double a, double b)
Returns the value of the first argument raised to the power of the second argument.
:master: ma il secondo argomento di pow è un int!
Anche a me interesserebbe una soluzione matematica che semplifichi il problema, magari appunto con una sommatoria...![]()
altrimenti l'algoritmo da seguire è quello che mette in evidenza l'esempio di Lele:
prendi l'esponente e lo dividi per 10 fino a che non hai un intero
e fai in modo che ti trovi radice 10 di 3 elevato 37
No è un double il secondo argomento di pow. A me funziona...
codice:class b{ public static void main(String[] args){ System.out.println(Math.pow(3,3.7)); } }
Uhm... se esiste un modo per calcolare un esponente con cifre decimali sono ben lieto di apprenderlo... per ora non conosco metodi diversi da quello utilizzato da me e Xadoom (che sono praticamente la stessa cosa)...
Quello che mi viene in mente è che si può tentare di approssimare la radice mediante algoritmi di approssimazione come il metodo dicotomico (da evitare), il metodo delle secanti o il metodo delle tangenti di Newton... ma io non mi spingo oltre!
Ciao.![]()
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
Il metodo pow() funziona anche con un double, comunque a me serviva reimplemntarlo daccapo in quanto stavo scrivendo una classe per i numeri complessi...poi sfogliando il libro di analisi ecco la soluzione:
E quindi avendo già implementato l'operatore Log() il problema si è risolto da se. Ma il bello che tutto ciò vale anche per i numeri reali.codice:a^b = exp[b*Log(a)] //a,b reali o complessi, con a>0![]()
Windows Xp
[Java]
[PHP]Notepad++
[Fortran90-77]elf90 g77
[C++ /WinAPI] DevC++ VisualC++