cs_carpe_diem
Messages postés10Date d'inscriptionsamedi 8 avril 2006StatutMembreDernière intervention16 mai 2006
-
13 avril 2006 à 17:39
delphineba
Messages postés2Date d'inscriptionjeudi 27 juillet 2006StatutMembreDernière intervention31 juillet 2006
-
31 juil. 2006 à 10:35
salut tt le monde,
j'ai besoin de résoudre une équation pour trouver le taux de rendemnt actuariel voila le code que j 'ai utilisé sur vb6 mais l'appel de la fonction ne fonctionne pas
Fonction
Dim ValPres As Double
Dim ValPresDerivee As Double
Dim v As Double
Dim ErreurMaximale As Double
Function NewtonRaphson(CashFlow() As Double, i As Double) As Double
ErreurMaximale = 0.0000001
ValPres = 1
While Abs(ValPres) > ErreurMaximale
ValPres = 0
ValPresDerivee = 0
v = 1 / (1 + i)
For t = LBound(CashFlow(), 1) To UBound(CashFlow(), 1)
ValPres = ValPres + CashFlow(t) * v ^ t
ValPresDerivee = ValPresDerivee - t * CashFlow(t) * v ^ (t + 1)
n'aurais-tu pas changé de pseudo? ce n'est pas grave si oui, mais tu n'y pas obligé(e)?
Donc, il faut écrire, pour l'appel :
Dim CashFlow() As Double ' à déclarer dans la section déclarations (en dehors de la sub ou function)
Private Sub Command1_Click()
Dim i As Double ' ajoutes cette ligne
n = DTPicker3.Year - DTPicker1.Year ' ! 2 ans d'écart minimum
ReDim CashFlow(n) ' ajoutes cette ligne
For j = 1 To n - 1
CashFlow(j) = Val(tx_facial.Text) * nominal.Text
Next j
CashFlow(n) = Val(tx_facial.Text) * nominal.Text + nominal.Text
rdt.Text = NewtonRaphson(CashFlow, prix.Text)' modifies cette ligne
End Sub
essaies de progresser la prochaine fois, et écris le message d'erreur que tu obtiens, et son n° (ça nous fait moins de boulot), merci d'avance.
Notes bien que je ne sais pas si, fonctionnellement, cela fait bien ce que tu veux que cela fasse (à cause des contradictions en appel et prototype), si tu as l'algorithme spécifié littéralement (ou algébriquement), donnes-le nous.
De plus, les 4 lignes :
Dim ValPres As Double
Dim ValPresDerivee As Double
Dim v As Double
Dim ErreurMaximale As Double
devraient être écrites dans NewtonRaphson, comme suit
Function NewtonRaphson(CashFlow() As Double, i As Double) As Double
Dim ValPres As Double
Dim ValPresDerivee As Double
Dim v As Double
Dim ErreurMaximale As Double
'...
End Function
à+
rvblogn<SUP>
</SUP><SUP>Je veux ton bien... et je l'aurais... mais jamais avant la page 4
</SUP>
cs_carpe_diem
Messages postés10Date d'inscriptionsamedi 8 avril 2006StatutMembreDernière intervention16 mai 2006 17 avril 2006 à 19:01
salut
en fait j'ai pas changé de pseudo, on est un binome qui travaille sur le mm sujet
on va essayer avec vos instructions
on vous remercie énormément pour votre aide
on soustrait les années de 2 dates, avec un résultat en année, là :
n = DTPicker3.Year - DTPicker1.Year ' ! 2 ans d'écart minimum
ReDim CashFlow( n ) ' ajoutes cette ligne
déjà, le plus petit résultat possible est 0 (on ne connait pas le type de n, mais la plus petite dimension pour un tableau est 0 [dans la ligne du Redim]).
ensuite, on va itérer de 1 à n-1, là :
For j = 1 To n - 1
CashFlow(j) = Val(tx_facial.Text) * nominal.Text
Next j
et si n vaut zéro, on va itérer de 1 à -1!
voilà,
à+
rvblog<sup>n
Je veux ton bien....et je l'aurais....mais jamais avant la page 4 des derniers échanges</sup>
Vous n’avez pas trouvé la réponse que vous recherchez ?