Radice ennesima
Buongiorno!!!
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!

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
$a^(1/n)$
in pascal credo non si dica così altrimenti spiegati meglio
Devi elevare il numero alla 1/n, se vuoi calcolargli la radice ennesima.
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
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
grazie 1000!!! provo subito
buona serata!
buona serata!
no exp è solo per base E
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!
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!
ce l'ho fatta... che fatica!!!

O in alternativa, si poteva provare ad implementare una versione "ad hoc" del metodo di Newton...
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?
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.

lore:
Infatti non mi riferivo a quelloma 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.
"Sirya88":
[quote="lore"]Infatti non mi riferivo a quelloma 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
