Somme """"scientifique"""""

ecolopolo

XLDnaute Nouveau
Bonjour

Je voudrais faire une somme "scientifique".... A savoir que j'ai une expression en fonction de X... et je voudrais faire la somme de la même expression de 1 à i.... Pour être clair, je voudrais approximer la fonction exponentielle par les Développements limités...

Je voudrais mettre les valeurs de x dans la colonne A1

puis faire la somme

Exp= ((x puiss 0)/ O factoriel)+((x puiss 1)/ 1 factoriel)+((x puiss 2)/ 2 factoriel)+((x puiss 3)/ 3 factoriel)+...+((x puiss i)/ i factoriel)

Mais plutôt que de m'amuser à écrire je sais pas combien de fois l'expression telle qu'elle est là, il doit bien y avoir moyen de d'indiquer à excel....

Pour i de 1 à 20 faire... (xpuissance i/ i factoriel)....

Si une telle fonction existe, pourriez vous me donner le nom en anglais... je suis à l'étranger!!!

Merci bcp de votre aide!!!
 

Jacques87

XLDnaute Accro
Re : Somme """"scientifique"""""

Bonjour,

Je ne sais pas si je réponds à ta question, mais voici un petit programme qui te calcule :

Exp= ((x puiss 0)/ O factoriel)+((x puiss 1)/ 1 factoriel)+((x puiss 2)/ 2 factoriel)+((x puiss 3)/ 3 factoriel)+...+((x puiss i)/ i factoriel)

la valeur de X est à placer en "A2"
en "B2" tu donnes la valeur maximale à attribuer à I (attention I doit impérativement être inférieur à 170, sinon il y a dépassement de capacité

et en C3 tu obtiens le résultat après avoir cliqué sur le bouton

Dis moi si cela te va

Bon courage
 

edelweisseric

XLDnaute Occasionnel
Re : Somme """"scientifique"""""

Bonsoir le forum
Bonsoir ecolopolo
Bonsoir Jacques

En reprenant le code de Jacques :

Sub test()
Dim I As Integer
Dim exp As Double, X As Double, e As Double

X = Range("A2").Value
If Range("B2").Value > 170 Then
MsgBox "Dépassement de capacité, veuillez saisir un nombre compris entre 1 et 170"
Exit Sub
End If
fac = 1
For I = 0 To ActiveSheet.Range("B2").Value
y = Application.WorksheetFunction.Fact(I)
For a = 1 To n
Fact = Fact * a
Next a
e = (X ^ I) / y
exp = exp + e
Next I
Range("d3").Value = exp
End Sub

un peu plus court, si c'est bien cela que tu veux obtenir

A+

Cordialement
 

PhiBou

XLDnaute Junior
Re : Somme """"scientifique"""""

Bonsoir Ecolopolo, Jacques, Edelweisseric, Forum

Par formule

En B1 la valeur de x
en B2 le nombre d'itérations désirées

Calcul exponentielle (série de Taylor) en C1 par exemple :

=SOMME(B1^(LIGNE(INDIRECT("1:" &B2))-1)/FACT(LIGNE(INDIRECT("1:" &B2))-1))

Matricielle à valider avec CTRL + Maj + Entrée

Bonne soirée

PhiBou
 

ecolopolo

XLDnaute Nouveau
Re : Somme """"scientifique"""""

salut à vous

Merci Jacques87 & Edelweisseric pour vos réponses...

Jacques87, j'ai un prob avec ton programme... j'ai oublié de préciser que je suis sous mac... et en fait il me faut refaire les boutons et je n'arrive pas trouver la macro attachée à ton bouton! Merci bcp!

Je vais tenter la partie de edelweisseric!!

Merci bcp de votre aide!!
 

ODVJ

XLDnaute Impliqué
Re : Somme """"scientifique"""""

Bonsoir à tous,

une petite fonction récursive qui fonctionne (pour une fonction, c'est plutôt pas mal!) pour n'importe quelle fonction du moment qu'elle est exprimée en anglais, avec ! comme variable et en références RC:
Code:
Function [B]s_r(f As String, i_inf As Integer, i_sup As Integer)[/B]
'f est une fonction quelconque où la variable est remplacée par un !
'f doit être exprimée en anglais avec un référencement RC
'f est une chaîne de caractères
'exemple d'appel :
'=s_r("RC1^!/FACT(!)";0;20) pour obtenir l'exponentielle
'sur la base d'un x sur la même ligne en colonne 1
'=s_r("sin(!)";1;13) pour la somme de i%=1 à 13 des sinus de i%
If i_sup = i_inf Then
    s_r = s_r + Evaluate(WorksheetFunction.Substitute(f, "!", i_inf))
Else
    s_r = Evaluate(WorksheetFunction.Substitute(f, "!", i_sup)) + s_r(f, i_inf, i_sup - 1)
End If
End Function

les commentaires doivent être suffisants.

au fait, je l'ai appelée S_R pour Somme Récursive.

l'appel se fait de la façon suivante :
=S_R(mafonction, i_mini, i_maxi)
mafonction est un string, en anglais, référencé en RC avec ! comme variable
 
M

Mytå

Guest
Re : Somme """"scientifique"""""

Salut le Forum

La fonction =EXP(x) fait déjà le calcul

La fonction exponentielle exp x peut notamment être définie par son développement en série de MacLaurin. On a:



Mytå​
 

Jacques87

XLDnaute Accro
Re : Somme """"scientifique"""""

Bonjour à tous,

Ecopolo, à défaut de reprendre mon code, dans lequel je reconstruis la fonction "factoriel", utilise le code de edelweiseric qui évite de reconstruire cette fonction, l'utilise (car elle existait .... tu vois on ne connait pas tout, ce qui est un bien car sinon on ne progresserait jamais quel que soit nos connaissances)
De plus edelweiseric l'a insérée dans un module, donc tu ne seras pas obligé de construire un bouton (entre autres je ne connais pas les Mac) et tu pourras simplement appeler cette macro avec la barre de menu : "Outils" - "Macros" - "Macros ..." - "Test" - "Exécuter"

Bon courage
 

ecolopolo

XLDnaute Nouveau
Re : Somme """"scientifique"""""

Bonjour

Merci vrmt à tout le monde! Je vais jouer le boulet... j'ai tenté de suivre vos instructions, mais j'avoue que j'ai un peu de mal... j'ai dc ouvert le module VBA, j'ai inseré un nouveau module, j'ai placé le code comme prévu, j'ai ensuite enregistré la macro...
bon déjà premier prob, erreur de compilation, Dois-je placer des arguments dans sub test () ?
Ensuite, comment faire pour appeler la fonction depuis excel? Mes questions sont certainement stupides... dsl!!!
 

Jacques87

XLDnaute Accro
Re : Somme """"scientifique"""""

Bonsoir,

Pour créer ta macro tu copies intégralement le code de edelweiseric que je te redonne :

Sub test()
Dim I As Integer
Dim exp As Double, X As Double, e As Double

X = Range("A2").Value
If Range("B2").Value > 170 Then
MsgBox "Dépassement de capacité, veuillez saisir un nombre compris entre 1 et 170"
Exit Sub
End If
fac = 1
For I = 0 To ActiveSheet.Range("B2").Value
y = Application.WorksheetFunction.Fact(I)
For a = 1 To n
Fact = Fact * a
Next a
e = (X ^ I) / y
exp = exp + e
Next I
Range("d3").Value = exp
End Sub

Pour cela, une fois ton fichier ouvert :
ALT et F11
dans le Menu "Insertion"
choisir "MOdule"
dans la fenêtre de gauche : double clic sur Module1 (que tu viens de créer) afin de pouvoir accéder à la fenêtre de droite
enfin, coller le code de Edelweiseric dans cette fenêtre de droite

Mais il me semble que tout cela tu l'as déjà fait

Maintenant, en retournant dans l'environnement Excel, si tu regardes tes macros :
Outils
Macros
Macros ...

tu dois retrouver la macro que tu viens de coller, soit "Test"

tu clic dessus et choisis "Exécuter" pour la lancer

Maintenant si tu veux que cette manip soit automatisée il te faut l'appeler dans ton code au cas où tu aurais développé en VBA

exemple

début de ton code
...
test
...
suite de ton code

la macro "test" sera exécutée exactement lorque la ligne d'appel "test" sera atteinte

Autre possibilité : tu crées un bouton et tu lui colle le code d'elweiseric à condition de changer la première ligne : Sub test() en Private Sub CommandButton1_Click()

Bonne soirée
 

Discussions similaires

Statistiques des forums

Discussions
312 400
Messages
2 088 089
Membres
103 712
dernier inscrit
Charles authentique