2016-08-19 13 views
1

私は、Modelica標準ライブラリ(Modelica.Fluid.Utilities.cubicHermite)のCubicHermite関数に関する質問があります。Modelicaキュービックエルミート補間

私は以下の機能への入力を持っています。 入力Real x "横座標値";

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の値を計算する方法は少し混乱していますか?

答えて

2

私はあなたの質問を理解しているので、導関数y1d(点y1の微分)とy2d(点y2の微分)の計算方法を尋ねています。短い答えは好きです(例:単純なスロープ:(y(i+1)-y(i))/(x(i+1)-x(i)))。あなたの選択が事件に適切であることを確かめてください。

建物のライブラリhereでCubicHermite関数の実装を見てみることをお勧めします。

派生物は、Github hereでコードが見つかる「splineDerivatives」の関数呼び出しで計算されます。

splineDerivativesは、データセットのエッジだけでなくデータセット内の派生物も考慮に入れた有益なケースがあるようです。

更新:

私はキュービックエルミートスプラインと「Pチップ」(3.4節)と「スプライン」(3.5節)と呼ばれる彼らは使用する2つの方法の使用を説明Mathworks社のPDF hereを発見しました。

+0

具体的には、Modelica.Fluid.Utilities.cubicHermite_withDerivative(デリバティブのないものは使用されません)の使用を見ると、Modelica.Fluid.Pipes.BaseClasses.WallFriction.LaminarAndQuadraticTurbulent.Internal.dp_fric_of_m_flowで使用されています。 y1dとy2dは境界での導関数(ddp_fric_dm_flow)の値と一致します(.m_flow_laminarとm_flow_turbulentの場合)。 –