Modelica三次hermite插值
关于Modelica标准库(Modelica.Fluid.Utilities.CubicHermite)中的CubicHermite函数,我有一个问题 我对函数有以下输入。 输入实x“横坐标值”Modelica三次hermite插值,modelica,Modelica,关于Modelica标准库(Modelica.Fluid.Utilities.CubicHermite)中的CubicHermite函数,我有一个问题 我对函数有以下输入。 输入实x“横坐标值” 我有点困惑,如何计算y1d和y2d值?我理解你的问题,你问的是如何计算导数y1d(点y1处的导数)和y2d(点y2处的导数)。简短的回答是您想要的(例如,简单坡度:(y(i+1)-y(i))/(x(i+1)-x(i)))。只要确保你的选择适合这个案例 虽然可能会更有用一些,但我建议您看看在建筑物库中实现
我有点困惑,如何计算y1d和y2d值?我理解你的问题,你问的是如何计算导数y1d(点y1处的导数)和y2d(点y2处的导数)。简短的回答是您想要的(例如,简单坡度:
(y(i+1)-y(i))/(x(i+1)-x(i))
)。只要确保你的选择适合这个案例
虽然可能会更有用一些,但我建议您看看在建筑物库中实现CubicHermite功能的情况
计算的导数是对“SplineDerivations”的函数调用,其代码可以在Github上找到
SPLINEDERIVATION似乎也有考虑数据集边缘以及数据集中的导数的有用案例
更新:
我找到了一份Mathworks pdf,其中描述了他们对三次hermite样条曲线的使用,以及他们使用的两种方法,分别称为“pchip”(第3.4节)和“spline”(第3.5节)。特别是如果你看看Modelica.Fluid.Utilities.cubicHermite_with derivative的使用(不使用不带导数的方法)您会发现,它用于流动区域中m_流的Modelica.Fluid.Pipes.BaseClasses.WallFriction.LadrandQuadraticTurbulent.Internal.dp_fric_,y1d和y2d与边界处的导数(ddp_fric_dm_流)值相匹配(对于m_流的层流和m_湍流)。
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";