mkpp
生成分段多项式
说明
示例
创建一个分段多项式,它在区间 [0,4] 内具有三次多项式,在区间 [4,10] 内具有二次多项式,在区间 [10,15] 内具有四次多项式。
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')

创建并绘制一个具有四个区间的分段多项式,这四个区间中,两个二次多项式交替出现。
前两个子图显示了一个二次多项式在 [-8,-4] 区间上的结果以及它在 [-4,0] 区间上的求反。多项式为
第三个子图显示将这两个二次多项式扩展到四个区间形成的分段多项式。添加垂直线是为了显示多项式汇合的点。
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 函数结合使用可计算一个或多个查询点处的分段多项式。该结构体包含以下字段。
| 字段 | 描述 |
|---|---|
form |
|
breaks | 包含严格递增元素的长度为 |
coefs |
|
pieces | 段数 |
order | 多项式的阶 |
dim | 目标的维度 |
由于 coefs 中的多项式系数是每个区间的本地系数,因此您必须减去对应节点区间的较低端点,以使用传统多项式方程中的系数。换言之,对于区间 [x1,x2] 上的系数 [a,b,c,d],对应的多项式为
扩展功能
用法说明和限制:
输出结构体
pp不同于 MATLAB® 中的pp结构体。在 MATLAB 中,ppval不能使用来自代码生成器的pp结构体。进行代码生成时,ppval不能使用 MATLAB 创建的pp结构体。unmkpp可以使用 MATLABpp结构体进行代码生成。要从代码生成器创建的
pp结构体中创建一个 MATLABpp结构体:在代码生成中,使用
unmkpp将分段多项式详细信息返回给 MATLAB。在 MATLAB 中,使用
mkpp创建pp结构体。
如果不提供
d,则coefs必须为二维且具有固定的列数。这种情况下,列数即为阶数。要定义分段常量多项式,
coefs必须为列向量,或者d必须包含至少两个元素。如果提供
d且d为1,则d必须为常量。否则,如果ppval的输入为非标量,则ppval的输出形状可能不同于 MATLAB 中的ppval。如果提供
d,则它必须具有固定长度。以下两组语句之一必须为 true:假定
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。第二个维度必须为固定长度。size(coefs,1) = prod(d)*npieces size(coefs,2) = order
如果不提供
d,以下语句必须为 true:假定
m = length(d),npieces = length(breaks) - 1。第二个维度必须为固定长度。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.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 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)