cs_alejandro20
Messages postés3Date d'inscriptionjeudi 10 avril 2008StatutMembreDernière intervention10 avril 2008
-
10 avril 2008 à 12:15
cs_alejandro20
Messages postés3Date d'inscriptionjeudi 10 avril 2008StatutMembreDernière intervention10 avril 2008
-
10 avril 2008 à 17:53
bonjour,
voila j'essaye de creer une interface pour calculer le zero par dichotomie d'une fonction ln ou exp
le probleme c que je cherche a verifier f(a)*f(b)<0 qlq soit a et b
en gros je cherche une fonctionn aleatoire qui pourrait me donner des entiers négatifs et positifs a et b :
et en plus a la fin j'obtiens un encadrement avec mes valeurs initialisées c et d (1 et 4)
je suis debutante soyez indulgent
merci d'avance
je suis en galere, ca marche pas
Public Class calculzero
Dim c, d As Decimal
Dim epsilon As Decimal
Dim a, b, x, m As Decimal
Private Sub cmdcalculzero_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdcalculzero.Click
a = Val(projet1.txta.Text)
b = Val(projet1.txtb.Text)
epsilon = Val(txtepsilon.Text)
Dim f_m, f_d As Double
Dim f_c As Double
c = 1
d = 4
If projet1.optln.Checked = True Then
f_c = (a * Math.Log(c) + b)
f_d = (a * Math.Log(d) + b)
f_m = (a * Math.Log(m) + b)
ElseIf projet1.optexp.Checked = True Then
f_c = (a * Math.Exp(c) + b)
f_m = (a * Math.Exp(m) + b)
f_d = (a * Math.Exp(d) + b)
End If
Do While f_c * f_d > 0
Randomize()
c = CInt(Int((50 * Rnd()) + 1))
d = CInt(Int((-50 * Rnd()) + 1))
Loop
Do While (c - d) > 2 * epsilon
m = (c + d) / 2
If projet1.optln.Checked = True Then
f_m = (a * Math.Log(m) + b)
ElseIf projet1.optexp.Checked = True Then
f_m = (a * Math.Exp(m) + b)
End If
If f_c * f_m > 0 Then
c = m
Else
d = m
End If
Loop
If c < d Then
txtresultatzero.Text = c & " < k < " & d
Else
txtresultatzero.Text = d & " < k < " & c
End If
End Sub
Private Sub cmdquittercalculzero_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdquittercalculzero.Click
Me.Close()
End Sub
End Class
cs_alejandro20
Messages postés3Date d'inscriptionjeudi 10 avril 2008StatutMembreDernière intervention10 avril 2008 10 avril 2008 à 17:52
oui pas faux pour exp!!!!!!
je c pas ou ca bug
merci d'avance !!
Public Class calculzero
Dim i As Integer
Dim c, d As Decimal
Dim MilieuInterval As Decimal
Dim epsilon As Decimal
Dim a, b, x, m As Decimal
Private Sub cmdcalculzero_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdcalculzero.Click
a = Val(projet1.txta.Text)
b = Val(projet1.txtb.Text)
epsilon = Val(txtepsilon.Text)
a = Val(projet1.txta.Text) ' lecture des valeurs entrées par l'utilisateur dans une autre feuille projet1'
b = Val(projet1.txtb.Text)
epsilon = Val(txtepsilon.Text)
Dim f_m, f_d As Double
Dim f_c As Double
'Je sais pas si il faut initialiser c et d et m pour que ca marche'
f_c = (a * Math.Log(c) + b)
f_d = (a * Math.Log(d) + b)
f_m = (a * Math.Log(m) + b)
Do While f_c * f_d > 0 ' il faut trouver deux nombres c et d tel que f_c*f_d<0 car comme ln est continue entre les deux il y aura le zero"
Dim changement_signe As Integer
Randomize()
changement_signe = Rnd() * (-1) + 1 'on aura 0 ou 1 au hasard
If changement_signe = 0 Then
c = CInt(Int((100 * Rnd() + 1)))
d = CInt(Int((100 * Rnd() + 1)))
Else : c = CInt(Int((100 * Rnd() + 1))) * (-1)
d = CInt(Int((100 * Rnd() + 1))) * (-1)
End If
Loop
f_c = (a * Math.Log(c) + b)
f_d = (a * Math.Log(d) + b)
Do While (c - d) > 2 * epsilon ' precision de l'encadrement'
m = (c + d) / 2 ' determination du milieu de l'intervalle [c,d] pour un encadrement plus precis'
f_m = (a * Math.Log(m) + b)
If f_c * f_m > 0 Then
c = m
Else
d = m
End If
Loop
If c < d Then
txtresultatzero.Text = c & " < k < " & d ' affichage de l'encadrement trouvé'
Else
txtresultatzero.Text = d & " < k < " & c
End If
End Sub
Private Sub cmdquittercalculzero_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdquittercalculzero.Click
Me.Close()
End Sub
End Class
cs_alejandro20
Messages postés3Date d'inscriptionjeudi 10 avril 2008StatutMembreDernière intervention10 avril 2008 10 avril 2008 à 17:53
oui pas faux pour exp!!!!!!
je c pas ou ca bug
merci d'avance !!
Public Class calculzero
Dim epsilon As Decimal
Dim a, b, x, m As Decimal
Private Sub cmdcalculzero_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdcalculzero.Click
a = Val(projet1.txta.Text) ' lecture des valeurs entrées par l'utilisateur dans une autre feuille projet1'
b = Val(projet1.txtb.Text)
epsilon = Val(txtepsilon.Text)
Dim f_m, f_d As Double
Dim f_c As Double
'Je sais pas si il faut initialiser c et d et m pour que ca marche'
f_c = (a * Math.Log(c) + b)
f_d = (a * Math.Log(d) + b)
f_m = (a * Math.Log(m) + b)
Do While f_c * f_d > 0 ' il faut trouver deux nombres c et d tel que f_c*f_d<0 car comme ln est continue entre les deux il y aura le zero"
Dim changement_signe As Integer
Randomize()
changement_signe = Rnd() * (-1) + 1 'on aura 0 ou 1 au hasard
If changement_signe = 0 Then
c = CInt(Int((100 * Rnd() + 1)))
d = CInt(Int((100 * Rnd() + 1)))
Else : c = CInt(Int((100 * Rnd() + 1))) * (-1)
d = CInt(Int((100 * Rnd() + 1))) * (-1)
End If
Loop
f_c = (a * Math.Log(c) + b)
f_d = (a * Math.Log(d) + b)
Do While (c - d) > 2 * epsilon ' precision de l'encadrement'
m = (c + d) / 2 ' determination du milieu de l'intervalle [c,d] pour un encadrement plus precis'
f_m = (a * Math.Log(m) + b)
If f_c * f_m > 0 Then
c = m
Else
d = m
End If
Loop
If c < d Then
txtresultatzero.Text = c & " < k < " & d ' affichage de l'encadrement trouvé'
Else
txtresultatzero.Text = d & " < k < " & c
End If
End Sub
Private Sub cmdquittercalculzero_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdquittercalculzero.Click
Me.Close()
End Sub
End Class