Radice ennesima

Sirya
Buongiorno!!! :-D
ho un problema: nel compilare un programma in pascal devo inserire una radice ennesima ma non so come fare. Qualcuno mi può suggerire come si indica o una procedura per calcolarla????
Grazie e buona giornata!

Risposte
TomSawyer1
$a^(1/n)$

Sirya
in pascal credo non si dica così altrimenti spiegati meglio

TomSawyer1
Devi elevare il numero alla 1/n, se vuoi calcolargli la radice ennesima.

Diravan
Pascals do not have an inbuilt power function. You have to write one yourself. The common, but non-general method is defining

function POWERFN(number, exponent: float): float;
begin
PowerFn := Exp(Exponent*Ln(Number));
end;

To make it general use:

(* Generalized power function by [ts] *)
{ Some modifications by jds }
function GenPowFn(Number, Exponent: float): float;
begin
if (Exponent = 0.0)
then GenPowFn := 1.0
else if Number = 0.0
then GenPowFn := 0.0
else if Abs(Exponent*Ln(Abs(Number))) > 87.498
then RunError(205) {Floating point overflow}
else if Number > 0.0
then GenPowFn := Exp(Exponent*Ln(Number))
else if (Number < 0.0) and (Frac(Exponent) = 0.0)
then if Odd(Round(Exponent))
then GenPowFn := -GenPowFn(-Number, Exponent)
else GenPowFn := GenPowFn(-Number, Exponent)
else RunError(207); {Invalid float-op}
end; (* genpowfn *)


Ho torvato questo non so se è giusto perchè non ho tempo di controllarlo comunque trovi un bel po di roba Qui

Sirya
grazie 1000!!! provo subito
buona serata!

Diravan
no exp è solo per base E

Sirya
function POWERFN(number, exponent: float): float;
begin
PowerFn := Exp(Exponent*Ln(Number));
end;

è geniale questa procedura, sto provando a farla funzionare ma non credo che sarà difficile.
Grazie veramente!!!!
buona serata!

Sirya
ce l'ho fatta... che fatica!!! :-D

freddofede
O in alternativa, si poteva provare ad implementare una versione "ad hoc" del metodo di Newton...

Sirya
lore:
O in alternativa, si poteva provare ad implementare una versione "ad hoc" del metodo di Newton...

il binomio di Newton (credo ti riferisca a quello, giusto?) non si può fare solo con esponenti naturali?

freddofede
Infatti non mi riferivo a quello ;-) ma a un metodo numerico per calcolare radici, che così a naso mi sarebbe sembrato carino da implementare in pascal, e che ad occhio mi sembra più decente di quello di sopra, e soprattutto più generale... se ti va bene quello non c'è problema, sennò potrei provare a postarti qualcosa.

Sirya
lore:
Infatti non mi riferivo a quello ;-) ma a un metodo numerico per calcolare radici, che così a naso mi sarebbe sembrato carino da implementare in pascal, e che ad occhio mi sembra più decente di quello di sopra, e soprattutto più generale... se ti va bene quello non c'è problema, sennò potrei provare a postarti qualcosa.


non lo conosco. per il programma di oggi va bene quella procedure ma mi interesserebbe sapere il metodo di cui parli, può sempre tornare utile. Se ti va leggo volentieri. Ovviamente...non è necessario che scrivi in linguaggio informatico, mi basta l'enunciato.

freddofede
"Sirya88":
[quote="lore"]Infatti non mi riferivo a quello ;-) ma a un metodo numerico per calcolare radici, che così a naso mi sarebbe sembrato carino da implementare in pascal, e che ad occhio mi sembra più decente di quello di sopra, e soprattutto più generale... se ti va bene quello non c'è problema, sennò potrei provare a postarti qualcosa.


non lo conosco. per il programma di oggi va bene quella procedure ma mi interesserebbe sapere il metodo di cui parli, può sempre tornare utile. Se ti va leggo volentieri. Ovviamente...non è necessario che scrivi in linguaggio informatico, mi basta l'enunciato.[/quote]

Scusa ieri non ho avuto tempo... beh se ti interessa teoricamente:

http://wikipedia.it/wiki/wiki/Metodo_di_Newton

L'idea è di trovare, con questo metodo, lo zero della funzione $x^n - alpha$, con $alpha > 0$ reale, che appunto risulta essere $root(n)(alpha)$. Sapendo in questo caso la funzione in ingresso si può implementare un codice ad hoc, che inseriti $alpha$ e $n$ ti renda la radice ennesima. Verrebbe fuori un programma penso molto migliore di quello di sopra... se vuoi puoi divertirti a implementarlo :-) .

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.