Ce code donne le quotient ou le reste de la division euclidienne d'un polynome par un autre. Je ne sais pas s'il est d'une grande importance mais je l'ai écris juste pour satisfaire ma curiosité .
Source / Exemple :
Function DivisionE(Dividende() As Double, Diviseur() As Double, Optional Reste As Boolean = False)
'Si Reste=false Cette fonction calcule le quotient de la division euclidienne de Dividende()/Diviseur()
'Si Reste=true Cette fonction calcule le reste de la division euclidienne de Dividende()/Diviseur()
'Dividende() est un tableau contenant les coéfficient du dividende dans l'ordre X0, X1, X2, .....
'Dividende() est un tableau contenant les coéfficient du diviseur dans l'ordre X0, X1, X2, .....
'ai et bi sont respectivement des copies du dividende et du diviseur
ReDim ai(0 To UBound(Dividende) - LBound(Dividende))
ReDim bi(0 To UBound(Diviseur) - LBound(Diviseur))
n = UBound(ai)
m = UBound(bi)
ReDim cij(0 To n - m + 1, 0 To m) 'Tableau intermédiaire
Dim Res() As Double 'Contiendra les coéfficients Résultats
'--------------------------------------------------------------------------
'Recopy des valeurs du dividende
For i = 0 To n
ai(i) = Dividende(LBound(Dividende) + i)
Next i
'Recopy des valeurs du diviseur
For i = 0 To m
bi(i) = Diviseur(LBound(Diviseur) + i)
Next i
For j = 0 To m
cij(0, j) = ai(n - j)
Next j
For i = 0 To n - m
If (i < n - m) Then
cij(i + 1, m) = ai(n - m - 1 - i)
Else
cij(i + 1, m) = 0
End If
For j = 0 To m - 1
cij(i + 1, j) = cij(i, j + 1) - cij(i, 0) * bi(m - 1 - j) / bi(m)
Next j
Next i
If Not Reste Then 'Il s'agit du quotient
ReDim Res(0 To n - m)
For i = 0 To n - m
Res(n - m - i) = cij(i, 0) / bi(m)
Next i
Else 'Il s'agit du reste de la division
ReDim Res(0 To m - 1)
For j = 0 To m - 1
Res(m - 1 - j) = cij(n + 1 - m, j)
Next j
End If
DivisionE = Res
End Function
Sub Division()
'EXEMPLE D'UTILISATION
Dim divde(0 To 3) As Double
Dim divsr(0 To 1) As Double
'QUOTIENT DE X3-10X2-10X+19 / X-1
divde(0) = 19
divde(1) = -10
divde(2) = -10
divde(3) = 1
divsr(0) = -1
divsr(1) = 1
QUOTIENT = DivisionE(divde(), divsr())
'RESTE DE X3+9X2+17X+13 / X+3
divde(0) = 13
divde(1) = 17
divde(2) = 9
divde(3) = 1
divsr(0) = 3
divsr(1) = 1
R = DivisionE(divde(), divsr(), True)
End Sub
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.