Re : Excel / Intégrales & Table de Gauss
Merci encore Job pour tes explications.
Je vais étudier de plus près ta macro et tenter de me remémorer les notions de dérivées & primitives bien lointaines dans mon cortex...
Pour suivre le fil sur les intégrales, j'en profite pour joindre cette macro que j'avais glanée quelque part (Codes-Sources si mes souvenirs sont bons), mais que je n'ai pas encore testée :
Sub Intégrale_Définie_Simpson()
'APPROXIMATION d'une intégrale définie:
'Formater A1 en texte et écrire une fonction en x,
'sans signe d'égalité.
'Écrire en A2 la borne inférieure
'Écrire en A3 la borne supérieure
'Écrire en A4 un nombre PAIR de sous-intervalles.
'Si la fonction est positive partout sur l'intervalle
'la réponse est une approximation de la superfice
'sous la courbe et au-dessus de OX.
'Si la fonction est négative partout sur l'intervalle
'la valeur absolue de la réponse est une approximation
'de la superfice sous la courbe et au-dessous de OX.
'Si votre fonction est un polynôme de degré inférieur
'à quatre, la réponse obtenue est EXACTE et dans ce cas
'DEUX sous-intervalles suffisent !
Dim x() As Double
Dim y() As Double
Dim somme As Double
px = [A2]: gx = [A3]
n = [A4]
If n / 2 - Int(n / 2) <> 0 Then
MsgBox "Simpson réclame un nombre pair de sous-intervalles.", _
vbExclamation, "Soyez raisonnable !"
Exit Sub
End If
ReDim x(1 To n + 1)
ReDim y(1 To n + 1)
pas = (gx - px) / n
f = [A1]
If Left(f, 1) = "-" Then f = Replace(f, "-", "(-1)*", 1, 1)
f1 = Replace(f, "x", px)
f2 = Replace(f1, ",", ".")
y(1) = Evaluate(f2)
For i = 1 To n
x(i + 1) = px + i * pas
f1 = Replace(f, "x", x(i + 1))
f2 = Replace(f1, ",", ".")
y(i + 1) = Evaluate(f2)
Next i
For i = 1 To n + 1
If i / 2 - Int(i / 2) = 0 Then
sp = sp + y(i)
Else
si = si + y(i)
End If
Next i
py = y(1): gy = y(n + 1)
somme = pas * (py + gy + 4 * sp + 2 * (si - py - gy)) / 3
MsgBox "Simpson, qui a utilisé " & n & " sous-intervalles." _
& Chr(10) & "Intégrale définie : " & somme, vbInformation, _
"Approximation de Monsieur Simpson"
End Sub
Sait-on jamais...
À+