2017-07-12 3 views
0

Ich versuche, berechnet dy/dx zwei Werte von zwei Arrays mit der Code ich bis jetzt habe, ist:Derivative von zwei Arrays

Module Module1 

    Sub Main() 

     Dim x = {0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0, 13.0, 14.0, 15.0} 
     Dim y = {0.0, 0.0, 0.0, 1.0, 1.0, 2.0, 3.0, 7.0, 15.0, 23.0, 31.0, 39.0, 47.0, 55.0, 61.0, 64.0} 
     Dim m() As Double 

     For i = 0 To x.Length - 2 
      m = (y(i + 1) - y(i))/(x(i + 1) - (x(i))) 
     Next 

     Console.WriteLine(m) 
     Console.ReadLine() 

    End Sub 

End Module 

Ich hatte gehofft, dass dieser Code alle Werte von dy/dx speichern würde in das Array m, aber wenn ich meinen Code alles, was ich bekomme, ist: 3 (der endgültige Wert von dy/dx)

+2

Kompiliert das überhaupt? 'm' ist ein Array, aber Sie behandeln es wie eine einzelne' Double'. –

Antwort

2

Zunächst ist Ihre Erklärung nicht klar, wie @Visual Vincent in einem Kommentar angegeben. Ich denke, es sollte sein:

Dim m() As Double = New Double(16) {} 

Dann in der Schleife, sind Sie immer den neuen Wert auf den Double Wert zuweisen. Hier ist, was sollte diese Zeile wie folgt aussehen:

m(i) = (y(i + 1) - y(i))/(x(i + 1) - (x(i))) 

Edit:

Um alle Werte auf die Konsole, die Verwendung folgenden Code zu schreiben:

For Each d As Double In m 
    Console.WriteLine(d) 
Next 
0

Abbas Antwort wird das Problem beheben Sie gefragt etwa, sondern auch im Hinterkopf, was das gewünschte Endergebnis ist. m ist nicht ganz dy/dx, denn wenn x die Länge 16 hat, wird m die Länge 15 haben. m (0) entspricht nicht der ungefähren Steigung von x (0), sondern eher der ungefähren Steigung von x (0,5).