public static void CalculateDerivatives(this Dictionary<double, double> inputPoints, out Dictionary<double, double> firstDerivatives, out Dictionary<double, double> secondDerivatives)
{
var inputPointsXArray = inputPoints.Keys.ToArray();
var inputPointsYArray = inputPoints.Values.ToArray();
spline1dinterpolant akimaSplineToDifferentiate;
alglib.spline1dbuildakima(inputPointsXArray, inputPointsYArray, out akimaSplineToDifferentiate);
firstDerivatives = new Dictionary<double, double>();
secondDerivatives = new Dictionary<double, double>();
foreach (var pair in inputPoints)
{
var xPoint = pair.Key;
double functionVal, firstDeriv, secondDeriv;
alglib.spline1ddiff(akimaSplineToDifferentiate, xPoint, out functionVal, out firstDeriv, out secondDeriv);
firstDerivatives.Add(point, firstDeriv);
secondDerivatives.Add(point, secondDeriv);
}
}
{
var inputPointsXArray = inputPoints.Keys.ToArray();
var inputPointsYArray = inputPoints.Values.ToArray();
spline1dinterpolant akimaSplineToDifferentiate;
alglib.spline1dbuildakima(inputPointsXArray, inputPointsYArray, out akimaSplineToDifferentiate);
firstDerivatives = new Dictionary<double, double>();
secondDerivatives = new Dictionary<double, double>();
foreach (var pair in inputPoints)
{
var xPoint = pair.Key;
double functionVal, firstDeriv, secondDeriv;
alglib.spline1ddiff(akimaSplineToDifferentiate, xPoint, out functionVal, out firstDeriv, out secondDeriv);
firstDerivatives.Add(point, firstDeriv);
secondDerivatives.Add(point, secondDeriv);
}
}
No comments:
Post a Comment