mkpp
区分的多項式の作成
説明
例
区間 [0,4] で 3 次多項式、区間 [4,10] で 2 次多項式、区間 [10,15] で 4 次多項式をもつ区分的多項式を作成します。
breaks = [0 4 10 15]; coefs = [0 1 -1 1 1; 0 0 1 -2 53; -1 6 1 4 77]; pp = mkpp(breaks,coefs)
pp = struct with fields:
form: 'pp'
breaks: [0 4 10 15]
coefs: [3×5 double]
pieces: 3
order: 5
dim: 1
区間 [0,15] にある多数の点でこの区分的多項式を評価し、結果をプロットします。縦の破線を、多項式同士が接しているブレーク ポイントにプロットします。
xq = 0:0.01:15; plot(xq,ppval(pp,xq)) line([4 4],ylim,'LineStyle','--','Color','k') line([10 10],ylim,'LineStyle','--','Color','k')
2 つの 2 次多項式の間で切り替わる 4 つの区間をもつ区分的多項式を作成し、プロットします。
最初の 2 つのサブプロットは、2 次多項式とその正負を逆転したものを、区間 [-8,-4] および [-4,0] にシフトして示しています。この多項式は以下のようになります。
3 番目のサブプロットは、これら 2 つの 2 次式を 4 つの区間で交互に切り替えて作成した区分的多項式を示しています。多項式が接する点を示すために縦線が追加されます。
subplot(2,2,1) cc = [-1/4 1 0]; pp1 = mkpp([-8 -4],cc); xx1 = -8:0.1:-4; plot(xx1,ppval(pp1,xx1),'k-') subplot(2,2,2) pp2 = mkpp([-4 0],-cc); xx2 = -4:0.1:0; plot(xx2,ppval(pp2,xx2),'k-') subplot(2,1,2) pp = mkpp([-8 -4 0 4 8],[cc;-cc;cc;-cc]); xx = -8:0.1:8; plot(xx,ppval(pp,xx),'k-') hold on line([-4 -4],ylim,'LineStyle','--') line([0 0],ylim,'LineStyle','--') line([4 4],ylim,'LineStyle','--') hold off
入力引数
ブレーク ポイント。長さ L+1
のベクトルとして指定します。このベクトルには厳密に増加する要素があり、L
個の間隔のそれぞれについて開始と終了を表しています。
データ型: single
| double
多項式係数。L
行 k
列の行列として指定します。i 番目の行 coefs(i,:)
には、i 番目の区間 [breaks(i), breaks(i+1)]
についての k
次多項式が格納されます。言い換えれば、この多項式は coefs(i,1)*(X-breaks(i))^(k-1) + coefs(i,2)*(X-breaks(i))^(k-2) + ... + coefs(i,k-1)*(X-breaks(i)) + coefs(i,k)
です。
データ型: single
| double
次元。スカラーまたは整数のベクトルとして指定します。d
を指定すると、区分的多項式がサイズ d
の係数値をもつよう指定されます。
データ型: single
| double
出力引数
区分的多項式。構造体として返されます。この構造体は関数 ppval
とあわせて使用し、区分的多項式を 1 つ以上のクエリ点で評価します。これらの構造体には次のフィールドがあります。
フィールド | 説明 |
---|---|
form | "区分的多項式" の場合 |
breaks | 長さ |
coefs |
|
pieces | 区分の数 ( |
order | 多項式の次数 |
dim | ターゲットの次元 |
coefs
の多項式係数は各区間の局所的な係数であるため、従来の多項方程式で係数を使用するには対応するノット区間の下限端点を減算しなければなりません。言い換えれば、区間 [x1,x2]
の係数 [a,b,c,d]
について、対応する多項式は次のようになります。
拡張機能
使用上の注意および制限:
出力構造体
pp
は、MATLAB® のpp
構造体と異なります。MATLAB では、ppval
はコード ジェネレーターのpp
構造体を使用できません。コード生成については、ppval
は MATLAB で作成されたpp
構造体を使用できません。unmkpp
は MATLAB のpp
構造体をコード生成に使用できます。コード ジェネレーターで作成された
pp
構造体から MATLAB のpp
構造体を作成するには、以下のように実行します。コード生成では、
unmkpp
を使用して区分的多項式の詳細を MATLAB に返します。MATLAB では、
mkpp
を使用してpp
構造体を作成します。
d
を指定しない場合、coefs
は 2 次元で、固定数の列をもたなければなりません。この場合、列数は次数です。区分的定数多項式を定義するには、
coefs
が列ベクトルであるか、d
が 2 つ以上の要素を含んでいなければなりません。d
を指定し、d
が1
である場合、d
は定数でなければなりません。それ以外の場合、ppval
への入力が非スカラーである場合、ppval
の出力の形状が MATLAB のppval
と異なる場合があります。d
を指定する場合は、固定長でなければなりません。以下のステートメントのセットのいずれかでなければなりません。m = length(d)
およびnpieces = length(breaks) - 1
と仮定します。size(coefs,j) = d(j) size(coefs,m+1) = npieces size(coefs,m+2) = order
j
= 1,2,...,m。次元m+2
は固定長でなければなりません。m = length(d)
およびnpieces = length(breaks) - 1
と仮定します。2 番目の次元は固定長でなければなりません。size(coefs,1) = prod(d)*npieces size(coefs,2) = order
d
を指定しない場合、以下のステートメントに該当しなければなりません。m = length(d)
およびnpieces = length(breaks) - 1
と仮定します。2 番目の次元は固定長でなければなりません。size(coefs,1) = prod(d)*npieces size(coefs,2) = order
この関数はスレッドベースの環境を完全にサポートしています。詳細については、スレッドベースの環境での MATLAB 関数の実行を参照してください。
バージョン履歴
R2006a より前に導入
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)