Division euclidienne de polynomes

Soyez le premier à donner votre avis sur cette source.

Snippet vu 16 724 fois - Téléchargée 18 fois

Contenu du snippet

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

A voir également

Ajouter un commentaire

Commentaire

Abdelelansari
Messages postés
21
Date d'inscription
samedi 12 janvier 2008
Statut
Membre
Dernière intervention
29 mars 2008
-
Ton programme m'interesse bien mais est ce que tu peux le terminer pour qu'il soit utilisable et Merci

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.