|
|
◆ pchse()
| function pchse |
( |
n::Integer |
, |
|
|
x::Array{Float64} |
, |
|
|
f::Array{Float64} |
, |
|
|
d::Array{Float64} |
, |
|
|
incfd::Integer |
= 1 |
|
) |
| |
区分3次スプライン補間 ("not a knot"境界条件)
- 目的
- pchseは, 区分的エルミート補間式による3次スプライン補間のために, 既定の境界条件("not a knot"境界条件)を用いて与えられたデータの微分係数値を計算する.
得られた係数を使った3次スプライン補間関数値はpchfeまたはpchfdにより求めることができる.
- 戻り値
- info (Int32)
= 0: 正常終了
= -1: 入力パラメータ n の誤り (n < 2)
= -2: 入力パラメータ x の誤り (昇順でないなど)
= -3: 入力パラメータ f の誤り
= -4: 入力パラメータ d の誤り
= -5: 入力パラメータ incfd の誤り (incfd < 1)
- 引数
-
| [in] | n | データ点数. (n >= 2) |
| [in] | x | 1次元配列 (Float64, n)
独立変数値. x[]の要素は昇順でなければならない. |
| [in] | f | 1次元配列 (Float64, incfd*(n - 1) + 1)
補間される従属変数値. f[i*incfd]がx[i]に対応する値である (i = 0〜n-1). |
| [out] | d | 1次元配列 (Float64, incfd*(n - 1) + 1)
各データ点における微分係数値. これらの値により, 要求された境界条件による3次スプライン補間式が決定される. x[i]に対応する値はd[i*incfd]に格納される (i = 0〜n-1). dのその他の場所は変更されない. |
| [in] | incfd | (省略可)
f および d の要素間隔. このパラメータは主として2次元アプリケーションのために提供される. (incfd >= 1) (省略時 = 1) |
- 出典
- SLATEC (PCHIP) (pchspのドライバールーチン)
- 使用例
- 次の自然対数表を3次スプライン補間して, ln(0.115) および ln(0.125) を求める.
x ln(x)
------ ---------
0.10 -2.3026
0.11 -2.2073
0.12 -2.1203
0.13 -2.0402
------ ---------
function TestPchse()
n = 4
x = [ 0.1, 0.11, 0.12, 0.13 ]
y = [ -2.3026, -2.2073, -2.1203, -2.0402 ]
d = Vector{Cdouble}(undef, n)
println(info)
if info == 0
ne = 2
xe = [ 0.115, 0.125 ]
ye = Vector{Cdouble}(undef, ne)
info = pchfe(n, x, y, d, ne, xe, ye)
println(ye)
println(info)
end
end
function pchfe(n::Integer, x::Array{Float64}, f::Array{Float64}, d::Array{Float64}, ne::Integer, xe::Array{Float64}, fe::Array{Float64}, incfd::Integer=1, skip::Bool(keyword argument)=false) 区分3次エルミート(または3次スプライン)補間関数値
function pchse(n::Integer, x::Array{Float64}, f::Array{Float64}, d::Array{Float64}, incfd::Integer=1) 区分3次スプライン補間 ("not a knot"境界条件)
- 実行結果
> TestPchse()
0
[-2.1628499999999997, -2.079475]
0
|