1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
| Option Explicit
Sub trouve_zero()
''''''''Dimensionnement des variables pour la fonction '''''''
Dim fonction As Single
Dim a As Single
Dim cst As Single
''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''Définition du critére de précision (cdp) '''''''''''''
Dim cdp As Single
cdp = 1 * 10 ^ (-1) 'choisir le degré de précision
''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''Dimensionnement des variables de la boucle ''''''''''
Dim x As Single
Dim i As Single
Dim max As Single
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''' Début de la boucle For '''''''''''''''''''''''''''''
max = 10 '''' borne maximale de x
x = 0 '''initialisation de x
For i = 1 To max * (1 / cdp) ''''la plage de x est [cdp ; 1000]
x = cdp * i
fonction = f(a, x, cst)
If Sgn(fonction + cdp) <> Sgn(fonction) Then '''' La boucle tourne tant que le signe de f(x-cdp) est le même que celui de f(x+cdp)
Exit For
End If
Next
'''''''' Fin de la boucle ''''''''''''''''''''''''''''''''
If x = max Then
MsgBox "Il n'y a pas de solution sur l'intervalle [" & cdp & " ; " & max & "] pour f(x) = " & a & " *x + " & cst & " = 0."
'''''Message d'erreur si il n'y a pas de solution dans l'intervalle choisie
Else
MsgBox " La solution pour f(x) = " & a & " * x + " & cst & " = 0 est x = " & x & " à " & cdp & " prés."
''''' Message quand la macro trouve la solution'''''''''''
End If
End Sub
'''''''' Définition de la fonction '''''''''''''''''
Function f(a As Single, x As Single, cst As Single) As Single
a = -Rnd() ''''''' Définition de la pente négative aléatoirement '''''''
cst = Rnd() '''''' Définition de la constante positive aléatoirement ''''''
f = a * x + cst '''''' fonction affine simple '''''
End Function |
Partager