Bonjour,

J'ai essayé de programmer un graph et une courbe de tendance de la forme y = ax^b
Pour la suite, j'ai besoin de récupérer les valeurs de a et b pour m'en servir dans d'autres calculs mais au lieu de la valeur j'obtiens NaN ...

Quelqu'un pourrait-il me dire où ça coince et comment faire pour convertir en nombre ?

Voilà où j'en suis dans mes recherches (voir la dernière partie du code)

Merci

Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
Private Sub BtnCourbe_Click(sender As Object, e As EventArgs) Handles BtnCourbe.Click
        'Effacer les courbes
        ChartEta.Series.Clear()
        ChartEta.Series.Add(New DataVisualization.Charting.Series())
        ChartEta.Series.Item(0).ChartType = False
        ChartEta.Series.Item(0).MarkerStyle = DataVisualization.Charting.MarkerStyle.Cross
        'Afficher les points d'etalonnage
        ChartEta.Visible = True
        For Each Ligne As DataGridViewRow In DataGridView2.Rows
            If Not IsNothing(Ligne.Cells.Item(1).Value) Then
                ChartEta.Series.Item(0).Points.AddXY(Ligne.Cells.Item(0).Value, Ligne.Cells.Item(2).Value)
            End If
        Next
        'Afficher la courbe
        ChartEta.Series.Add("Trendline")
        ChartEta.Series("Trendline").ChartType = SeriesChartType.Line
        ChartEta.DataManipulator.FinancialFormula(FinancialFormula.Forecasting, "Power,1,false,false", ChartEta.Series.Item(0), ChartEta.Series("Trendline"))
 
 
 
        'Afficher les valeurs a et b
        Dim CoupleXY As DataPoint
        Dim x1 As Double
        Dim x2 As Double
        Dim y1 As Double
        Dim y2 As Double
        Dim numerateur As Double
        Dim denominateur As Double
        Dim a As Double
        Dim b As Double
 
        For Each CoupleXY In ChartEta.Series("Trendline").Points
 
            If CoupleXY.XValue = 1 Then
                y2 = CoupleXY.YValues(0)
            Else
                x1 = CoupleXY.XValue
                y1 = CoupleXY.YValues(0)
 
            End If
            If x1 <> 0 And y2 <> 0 Then Exit For
 
            numerateur = (Math.Log(x2) * Math.Log(y1)) - (Math.Log(x1) * Math.Log(y2))
            denominateur = Math.Log(x2) - Math.Log(x1)
            a = 10 ^ (numerateur / denominateur)
            b = (Math.Log(y1) - Math.Log(a)) / Math.Log(x1)
 
            ' a = y2
            ' b = Math.Log(y1 / y2) / Math.Log(x1)
 
        Next
 
        Lbla.Text = a
        Lblb.Text = b
 
End Sub