.net 两个数组的导数

.net 两个数组的导数,.net,vb.net,.net,Vb.net,我正在尝试使用两个数组中的两个值计算dy/dx,到目前为止,我得到的代码是: 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, 3

我正在尝试使用两个数组中的两个值计算
dy/dx
,到目前为止,我得到的代码是:

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

我希望这段代码能将dy/dx的所有值存储到数组m中,但是当我运行我的代码时,我得到的结果是:3(dy/dx的最终值)

首先,您的声明不清楚,就像@Visual Vincent在评论中所说的那样。我认为应该是:

Dim m() As Double = New Double(16) {}
然后在循环中,您总是将新值分配给
Double
值。这条线应该是这样的:

m(i) = (y(i + 1) - y(i)) / (x(i + 1) - (x(i)))
编辑:

要将所有值写入控制台,请使用以下代码:

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

首先,您的声明不清楚,就像@VisualVincent在评论中所说的那样。我认为应该是:

Dim m() As Double = New Double(16) {}
然后在循环中,您总是将新值分配给
Double
值。这条线应该是这样的:

m(i) = (y(i + 1) - y(i)) / (x(i + 1) - (x(i)))
编辑:

要将所有值写入控制台,请使用以下代码:

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

阿巴斯的回答将解决你所问的问题,但也要记住预期的最终结果是什么。m不是很dy/dx,因为如果x的长度为16,则m的长度为15。m(0)并不对应于x(0)的近似斜率,而是对应于x(0.5)的近似斜率。

阿巴斯的回答将解决您所问的问题,但也要记住期望的最终结果是什么。m不是很dy/dx,因为如果x的长度为16,则m的长度为15。m(0)并不对应于x(0)的近似斜率,而是对应于x(0.5)的近似斜率。

这是否可以编译
m
是一个数组,但您将其视为一个
Double
。它甚至可以编译吗
m
是一个数组,但您将其视为一个
Double