PDA

Visualizza la versione completa : [pascal, principiante] calcolare logaritmo


BananaBoat
01-01-2005, 11:48
Salve a tutti e buon anno,
sto provando a programmare in turbo pascal e volevo scrivere un programma per calcolare logaritmi.
ecco quello che ho scritto finora:


program LOGARITMO;
uses crt;
var A,B,Y:real;
begin
clrscr;
writeln;
writeln('LOGARITMO');
writeln;
write('Insersci la base del logaritmo: ');
readln(A);
writeln;
write('Inserisci l''argomento del logaritmo: ');
readln(B);
:fagiano:
writeln;
writeln('Il logaritmo in base ',A,' di ',B,' e'' ',Y);
writeln;
write('Premere un tasto qualsiasi per uscire');
repeat until keypressed;
end.

quindi manca la parte centrale, quella piu' importante :stordita:
mi date una mano?
grazie :ciauz:

BananaBoat
01-01-2005, 12:10
:confused: up

BananaBoat
01-01-2005, 12:49
mi sa che non e' cosi' semplice come pensavo (http://www2.polito.it/didattica/polymath/htmlS/argoment/APPUNTI/TESTI/Set_02/Cap18.html)

comas17
01-01-2005, 17:35
Così di primo acchito mi sembrerebbe invece che la cosa non sia così difficile...
Il logaritmo di un numero B in una base A (scelta a piacere e diversa dalle generiche base '10' e 'e') si può facilmente calcolare proprio utilizzando, per esempio, la funzione ln() che calcola il logaritmo naturale (base 'e') del numero.
Infatti è:

ln(B)/ln(A)

Cioè il logaritmo del numero B in base A è dato dal logaritmo (in base e) del numero B diviso per il logaritmo (sempre in base e) della base A

Nel tuo caso quindi (utilizzando la funzione ln() presente in turbo pascal) è

Y = ln(B) / ln(A)


Se invece vuoi calcolare il logaritmo SENZA utilizzare la funzione ln() devi pensare di utilizzare qualche algoritmo di calcolo numerico e la cosa è effettivamente un po' più complessa.
Prova ad esempio a vederti questo: http://www.vialattea.net/esperti/mat/log/

In fondo c'è la formula per calcolare ln(1+x)

BananaBoat
01-01-2005, 18:04
io volevo proprio farlo con le quattro operazioni, ma e' impossibile ... riprovero' quando saro' un po' piu' bravo.
altro problemino con pascal: e' possibile calcolare
B=radice n-esima di A, avendo sia n che A, ma facendo tutto utilizzando solo le quattro operazioni e non le funzioni del programma? in realta' dovrebbe essere semplice, perche' equivale a
A elevato 1/n=B, ma non riesco a impostare un ciclo, ad esempio
for I:=0 to 1 div N do
non funziona
:dhò:

Loading