.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
。