[MATHS, Pascal], puissance x

, puissance x [MATHS, Pascal] - Programmation

Marsh Posté le 30-05-2001 à 16:25:52    

Salut,
Je cherche une fonction permettant d'élever un nombre à une puissance x où x n'est pas obligé d'être entier.
Si ça existe, je n'ai pas trouvé.
Si ça n'existe pas, comment le programmer.
Merci

Reply

Marsh Posté le 30-05-2001 à 16:25:52   

Reply

Marsh Posté le 30-05-2001 à 16:27:39    

Rappel mathematique :
a^x = exp(x*ln(a))

Reply

Marsh Posté le 30-05-2001 à 16:44:53    

Merci, je ne savais pas : je n'ai pas appris encore en Maths les exponentielle et les ln (d'ailleurs je ne sais pas comment on fait.

Reply

Marsh Posté le 30-05-2001 à 16:48:56    

Je pense que exp et ln existent en Pascal donc ca devrait passer.
Question bete : pourquoi tu veux faire des puissances non entieres si tu sais pas ce que sait ? :??:
(parce que la definition des puissances non entieres en maths c'est ce que j'ai ecrit au dessus)

Reply

Marsh Posté le 30-05-2001 à 17:01:39    

C pour les fréquences des sound.
Et j'ai besoin de fraction x/12 donc pas entière.
et la formule a besoin de nombres comme ça.
Voila

Reply

Marsh Posté le 30-05-2001 à 19:42:27    

Je@nb> De mémoire, la fonction logarithme népérien (notée ln en maths) s'appelle Log() en Pascal, et la fonction logarithme décimal (notée log en maths) s'appelle Log10() en Pascal.
 
Dans la formule que t'a donnée tgrx, c'est bien le logarithme népérien qu'il faut utiliser, ce qui nous donne :

Code :
  1. function Power(a, x : real) : real;
  2. begin
  3.    Power := Exp(x * Log(a));
  4. end; /* Power */
 

[edit]--Message édité par BifaceMcLeOD--[/edit]

Reply

Marsh Posté le 30-05-2001 à 22:45:00    

Juste pour dire que je suis tout emu de voire du Pascal quel langage clair et symple a maitriser.  :sweat: Je verse une larme ....

Reply

Marsh Posté le 31-05-2001 à 00:12:54    

Ah ben non, ya encore mieux ! :D

Code :
  1. function Power(a, x : in Double) returns Double is
  2. begin
  3.    return Math.Exp(x * Math.Log(a));
  4. end Power;

Reply

Marsh Posté le 31-05-2001 à 00:17:10    

Ah, au fait, Je@nb, il y a une petite contrainte dans la formule que tgrx t'a donnée, et que tu découvriras quand tu verras les fonctions logarithmes en cours : ces fonctions ne sont définies qu'entre zéro (exclu) et plus l'infini. La formule de calcul de a^x ne marche donc pas quand a est négatif...

Reply

Marsh Posté le 31-05-2001 à 00:19:38    

BifaceMcLeOD je pense que le return n'existe pas en PAscal en effet il faut faire plutot Power:=.... mais peut etre utilisais tu du ADA !

Reply

Marsh Posté le 31-05-2001 à 00:19:38   

Reply

Marsh Posté le 31-05-2001 à 00:37:21    

Le mot-clé "returns" non plus n'existe pas en Pascal. ;)
Et effectivement, c'était de l'Ada.  :crazy:  :D  
 
Tu remarqueras quand même la première implémentation que j'ai donnée fait bien "Power := ...".

Reply

Marsh Posté le 31-05-2001 à 00:40:06    

:D Z avais taison le return n'existe pas en Pascal! J'avais pas vu que le post avec Power:=... etait de toi! :p  :D

Reply

Marsh Posté le 31-05-2001 à 08:51:00    

BifaceMcLeOD a écrit a écrit :

Ah, au fait, Je@nb, il y a une petite contrainte dans la formule que tgrx t'a donnée, et que tu découvriras quand tu verras les fonctions logarithmes en cours : ces fonctions ne sont définies qu'entre zéro (exclu) et plus l'infini. La formule de calcul de a^x ne marche donc pas quand a est négatif...




oui mais a^x n'a de sens que si x est entier ou a positif...
de meme que 0^0 n'a pas de sens...

Reply

Marsh Posté le 31-05-2001 à 10:24:29    

dun pt de vue Math, 0^0 c tres sensé, tout kom a^x ou x<0.. non ?
Mon nivo de math est tres faible.. alors... :D


---------------
"C'est le boulot qu'on ne commence jamais qui est le plus long à terminer"
Reply

Marsh Posté le 31-05-2001 à 10:32:35    

0^0 n'a absolument aucun sens mathematiquement parlant :
0^x = 0 x<>0  
x^0 = 1 x<>0
 
ensuite a^x = (1/a)^(-x) donc peu importe que x soit >0 ou < 0...
par contre si x n'est pas entier a doit etre positif ou alors a verifier a cas par cas : si x=1/3 c'est une racine cubique...
mais c'est toujours discutable... car en fait il faut passer par des complexes et alors il y a plusieurs solutions...

Reply

Marsh Posté le 31-05-2001 à 17:53:03    

Merci mais en tout cas ça marche
function puis(n,x : real) : real;
 begin
    puis:=exp(x*ln(n));
 end;
 
Par cotnre je ne sais pas mais la fonction lnexiste et je trouve juste

 

[edit]--Message édité par Je@nb--[/edit]

Reply

Marsh Posté le 31-05-2001 à 17:59:53    

Bah si la fonction ln existe, c'est tranquille, pas de souci ;)

Reply

Marsh Posté le 31-05-2001 à 18:44:58    

BENB a écrit a écrit :

 
oui mais a^x n'a de sens que si x est entier ou a positif...
de meme que 0^0 n'a pas de sens...




Pas tout à fait exact : (-1)^n a du sens...
 
En fait, si je me souviens bien, a^b est défini dans l'ensemble des réels si l'une des conditions suivantes est respectée :
 - a > 0, b réel.
 - a = 0, b != 0.
 - a entier strictement négatif, et b entier positif ou nul.

Reply

Marsh Posté le 31-05-2001 à 18:56:47    

Ca marche aussi pour les valeurs suivantes :
 
a negatif, b sous la forme p/(2q+1), avec p et q entiers positifs

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed