taita1
Messages postés9Date d'inscriptiondimanche 16 janvier 2005StatutMembreDernière intervention17 novembre 2009
-
8 déc. 2006 à 17:08
taita1
Messages postés9Date d'inscriptiondimanche 16 janvier 2005StatutMembreDernière intervention17 novembre 2009
-
8 déc. 2006 à 17:24
salut,
j'essaye de faire une petite application qui calcule la valeur de lamda par la méthode de newton (mes études en gestion de production), j'ai déclaré ma variable lamda "double", et à l'exécution,quand je tape un nombre décimal négatif, il me déclenche une exception, je ne sais pas quoi faire, aidez moi svp
voici le code:
Imports System.Console
Imports System.Math
Imports System
Module Module1
Sub Main()
Dim pdt As Integer
Dim a As Integer
Dim lamda As Double
Dim i As Integer
Dim nbrp As String
Dim nbra As String
Dim nbrl As String
Dim pa As Integer
'Dim somme As String
Dim pb As Integer
Dim pk As Double
Dim ps As Double
Dim eps = 0.001
Dim solution As String
Console.WriteLine("Saisissez le nombre de produits : ")
nbrp = Console.ReadLine
Console.WriteLine("Saisissez la valeur de A : ")
nbra = Console.ReadLine
Console.WriteLine("Saisissez la valeur de lamda : ")
nbrl = Console.ReadLine
pdt = Convert.ToInt32(nbrp)
a = Convert.ToInt32(nbra)
lamda = Convert.ToDouble(nbrl)
For i = 1 To pdt
Console.WriteLine("Saisissez la valeur de a : ")
pa = Convert.ToInt32(Console.ReadLine)
Console.WriteLine("Saisissez la valeur de bêta : ")
pb = Convert.ToInt32(Console.ReadLine)
Console.WriteLine("Saisissez la valeur de K : ")
pk = Convert.ToDouble(Console.ReadLine)
Console.WriteLine("Saisissez la valeur de S : ")
ps = Convert.ToDouble(Console.ReadLine)
Next
While (som1(lamda, pdt, pa, pk, pb, ps, a) >= eps)
lamda = fct(lamda, pdt, pa, pk, pb, ps, a)
End While
solution = Convert.ToString(lamda)
Console.WriteLine("lamda*=" + solution)
Console.ReadLine()
End Sub
Function som1(ByVal lamda As Double, ByVal pdt As Integer, ByVal pa As Integer, ByVal pk As Double, ByVal pb As Integer, ByVal ps As Double, ByVal a As Integer) As Double
Dim resultat = 0
Dim i As Integer
For i = 0 To pdt
resultat += pa * Sqrt((2 * pk * pb) / (ps - 2 * lamda * pa))
Next
resultat -= a
Return resultat
End Function
Function som2(ByVal lamda As Double, ByVal pdt As Integer, ByVal pa As Integer, ByVal pk As Double, ByVal pb As Integer, ByVal ps As Double) As Double
Dim resultat = 0
Dim i As Integer
For i = 0 To pdt
resultat += Pow(pa, 2) * (Sqrt(2 * pk * pb)) / Pow(ps - 2 * pa * lamda, 1.5)
Next
Return resultat
End Function
Function fct(ByVal lamda As Double, ByVal pdt As Integer, ByVal pa As Integer, ByVal pk As Double, ByVal pb As Integer, ByVal ps As Double, ByVal a As Integer) As Double
Return lamda - (som1(lamda, pdt, pa, pk, pb, ps, a) / som2(lamda, pdt, pa, pk, pb, ps))
End Function