我对Modelica标准库(Modelica.Fluid.Utilities.cubicHermite)中的CubicHermite函数有疑问。
我对该功能有以下输入。 输入Real x“Abscissa value”;
input Real x1 "Lower abscissa value";
input Real x2 "Upper abscissa value";
input Real y1 "Lower ordinate value";
input Real y2 "Upper ordinate value";
input Real y1d "Lower gradient";
input Real y2d "Upper gradient";
output Real y "Interpolated ordinate value";
我有点困惑,如何计算y1d和y2d值?
答案 0 :(得分:2)
据我所知,你问的是如何计算导数y1d(y1点的导数)和y2d(y2点的导数)。然而,简短的答案是你想要的(例如,简单的斜率:(y(i+1)-y(i))/(x(i+1)-x(i))
)。只要确保你的选择适合这种情况。
虽然可能会更有帮助,但我建议您查看建筑物库here中CubicHermite功能的实施情况。
计算导数是函数调用" splineDerivatives"可以在Github上找到代码here。
splineDerivatives似乎也有一个有用的例子,即考虑数据集边缘和数据集内的衍生物。
更新
我找到了一个Mathworks pdf here,它描述了他们使用立方Hermite样条和他们使用的两种方法叫做#34; pchip" (第3.4节)和" spline" (第3.5节)。