單一浮點數值不存在導數。 導數定義為函數在某點的瞬間變化率,需要函數關係或至少兩個相鄰數據點。對於孤立的浮點數 x,無法計算導數。
若擁有 離散數據點序列 (x₀,y₀), (x₁,y₁), ..., (xₙ,yₙ),可使用數值微分方法估算導數:
f'(xᵢ) ≈ (yᵢ₊₁ - yᵢ) / (xᵢ₊₁ - xᵢ)
f'(xᵢ) ≈ (yᵢ - yᵢ₋₁) / (xᵢ - xᵢ₋₁)
f'(xᵢ) ≈ (yᵢ₊₁ - yᵢ₋₁) / (xᵢ₊₁ - xᵢ₋₁)
f'(xᵢ) ≈ (yᵢ₋₂ - 8yᵢ₋₁ + 8yᵢ₊₁ - yᵢ₊₂) / (12h) // 等間距 h
// 假設數據存儲於 CArray xValues, yValues
// 使用中心差分計算內部點導數
CArray derivatives;
int n = xValues.GetSize();
derivatives.SetSize(n);
if (n >= 3) {
// 邊界點使用前向/後向差分
derivatives[0] = (yValues[1] - yValues[0]) / (xValues[1] - xValues[0]);
derivatives[n-1] = (yValues[n-1] - yValues[n-2]) / (xValues[n-1] - xValues[n-2]);
// 內部點使用中心差分
for (int i = 1; i < n-1; ++i) {
double dx = xValues[i+1] - xValues[i-1];
double dy = yValues[i+1] - yValues[i-1];
derivatives[i] = (dx != 0) ? dy / dx : 0; // 防除零
}
} else if (n == 2) {
double slope = (yValues[1] - yValues[0]) / (xValues[1] - xValues[0]);
derivatives[0] = derivatives[1] = slope;
}
x 等間距,可使用更高效的差分格式x、y 單位明確,導數單位為 y單位/x單位將計算結果綁定到圖表控件(如 MSChart、ChartCtrl、或自繪 OnPaint),提供導數曲線可視化。工具提示顯示具體點的 x, y, y' 值,增強可用性。