Modelica 三次 hermite 插值
Modelica Cubic hermite interpolation
我对 Modelica 标准库 (Modelica.Fluid.Utilities.cubicHermite) 中的 CubicHermite 函数有疑问。
我对该函数有以下输入。
输入实数 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值怎么计算?
据我了解你的问题,你问的是如何计算导数y1d(y1点的导数)和y2d(y2点的导数)。简短的回答是你想要的(例如,简单的斜坡:(y(i+1)-y(i))/(x(i+1)-x(i))
)。请确保您的选择适合案例。
虽然可能会更有帮助,但我还是建议您查看建筑库中 CubicHermite 函数的实现 here。
计算的导数是对 "splineDerivatives" 的函数调用,其代码可在 Github here.
上找到
splineDerivatives 似乎也有有用的案例,可以考虑数据集边缘和数据集内的导数。
更新:
我找到了一个 Mathworks pdf here,其中描述了他们对三次厄米特样条的使用以及他们使用的两种方法,称为 "pchip"(第 3.4 节)和 "spline"(第 3.5 节)。
我对 Modelica 标准库 (Modelica.Fluid.Utilities.cubicHermite) 中的 CubicHermite 函数有疑问。
我对该函数有以下输入。 输入实数 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值怎么计算?
据我了解你的问题,你问的是如何计算导数y1d(y1点的导数)和y2d(y2点的导数)。简短的回答是你想要的(例如,简单的斜坡:(y(i+1)-y(i))/(x(i+1)-x(i))
)。请确保您的选择适合案例。
虽然可能会更有帮助,但我还是建议您查看建筑库中 CubicHermite 函数的实现 here。
计算的导数是对 "splineDerivatives" 的函数调用,其代码可在 Github here.
上找到splineDerivatives 似乎也有有用的案例,可以考虑数据集边缘和数据集内的导数。
更新:
我找到了一个 Mathworks pdf here,其中描述了他们对三次厄米特样条的使用以及他们使用的两种方法,称为 "pchip"(第 3.4 节)和 "spline"(第 3.5 节)。