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:
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