Main Content

fnzeros

説明

x = fnzeros(spline) は、スカラー値の一変量スプラインの基本区間における零点を求めます。スプラインの零点は、スプラインがゼロになる点または閉区間です。

x = fnzeros(spline,I) は、区間 I での 0 を求めます。

すべて折りたたむ

区分的な線形スプラインを作成し、プロットします。

spline = spmak(augknt(1:7,2),[1,0,1,-1,0,0,1]);
figure
fnplt(spline)

スプラインの根を求めます。スプラインには、ゼロとの接触、ゼロとの交差、ある区間でゼロの 3 種類の零点があります。

x = fnzeros(spline)
x = 2×3

    2.0000    3.5000    5.0000
    2.0000    3.5000    6.0000

左の端点では右向き三角形を、右の端点では左向き三角形を使用して、スプラインの根をプロットします。

nz = size(x,2);
hold on
plot(x(1,:),zeros(1,nz),'r>',x(2,:),zeros(1,nz),'r<','MarkerSize',10)
hold off

多数の局所的極値をもつスプラインを作成します。1 階微分の根を求めることで、スプラインの局所的極値を特定します。

spline = spmak(1:31,rand(1,25)-0.5); 
x = fnzeros(fnder(spline));

スプラインおよびその局所的極値をプロットします。

figure
fnplt(spline)
hold on
x = unique(x(:));
y = fnval(spline,x);
plot(x,y,'ro')
xlim([-Inf Inf])
hold off

非連続性の区分的な線形スプラインを作成し、プロットします。

 spline = spmak([0 0 1 1 2 2],[-1 1 -1 1]);
 figure
 fnplt(spline);

スプラインの根を求めます。根には x = 1 でゼロを通過するジャンプが含まれます。

x = fnzeros(spline)
x = 2×3

    0.5000    1.0000    1.5000
    0.5000    1.0000    1.5000

入力引数

すべて折りたたむ

スプライン。構造体として指定します。spline はスカラー値の一変量スプラインを表す必要があります。

データ型: struct

零点を検出する区間。2 要素の数値ベクトルとして指定します。

出力引数

すべて折りたたむ

スプラインの根の位置。2 行の行列として返されます。1 行目の要素は区間の左の端点で、2 行目の要素は右の端点です。各列には、単一区間の左の端点と右の端点が含まれています。根は昇順となっています。

区間には 3 つの異なるタイプがあります。

  • 端点が異なる場合、その区間全体でスプラインはゼロです。この場合、区間の内部にある可能性がある節点に関係なく最大区間が得られます。

  • 端点が同じで節点と一致する場合、スプラインはその点でゼロです。このスプラインは、この点でゼロと交差するか、ゼロに接するか、不連続です。

  • 端点が同じで節点と一致しない場合、スプラインはこの点でゼロクロッシングになります。

アルゴリズム

スプラインの根を求めるために、fnzeros はまずスプラインを B 型に変換します。そして、前処理を実行して不連続点を処理してから、[1]のアルゴリズムを使用します。

参照

[1] Mørken, Knut, and Martin Reimers. "An unconditionally convergent method for computing zeros of splines and polynomials." Mathematics of Computation 76, no. 258 (2007): 845-865.

バージョン履歴

R2006a より前に導入

参考

|