Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 其它 > 资料存档
资料存档 资料存档
回复
 
主题工具 显示模式
旧 2019-12-10, 20:48   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
帖子 有人可以解释mkpp和ppval函数的行为吗?

如果我在MATLAB中执行以下操作:

ppval(mkpp(1:2, [1 0 0 0]),1.5) ans = 0.12500 这应该构造一个多项式f(x) = x^3并将其评估为x = 1.5 。那为什么给我1.5^3 = .125的结果呢?现在,如果将第一个参数中定义的域更改为mkpp , mkpp得到以下信息:

> ppval(mkpp([1 1.5 2], [[1 0 0 0]; [1 0 0 0]]), 1.5) ans = 0 因此,无需更改功能,我就可以更改答案。太棒了

谁能解释这是怎么回事?将第一个参数更改为mkpp会如何改变我得到的结果?



回答:

MKPP函数将移位多项式,以便x = 0将在您提供给它的相应范围的开始处开始。在第一个示例中,多项式x^3移至范围[1 2] ,因此,如果您要在[0 1]的未移位范围内评估多项式,则必须执行以下操作:

>> pp = mkpp(1:2,[1 0 0 0]); %# Your polynomial >> ppval(pp,1.5+pp.breaks(1)) %# Shift evaluation point by the range start ans = 3.3750 %# The answer you expect 在第二个示例中,您将一个多项式x^3移至范围[1 1.5]而另一个多项式x^3移至范围[1.5 2] 。在x = 1.5处计算分段多项式,将得出零值,该值出现在第二个多项式的开始处。

如下所示可以帮助可视化正在制作的多项式:

x = linspace(0,3,100); %# A vector of x values pp1 = mkpp([1 2],[1 0 0 0]); %# Your first piecewise polynomial pp2 = mkpp([1 1.5 2],[1 0 0 0; 1 0 0 0]); %# Your second piecewise polynomial subplot(1,2,1); %# Make a subplot plot(x,ppval(pp1,x)); %# Evaluate and plot pp1 at all x title('First Example'); %# Add a title subplot(1,2,2); %# Make another subplot plot(x,ppval(pp2,x)); %# Evaluate and plot pp2 at all x axis([0 3 -1 8]) %# Adjust the axes ranges title('Second Example'); %# Add a title



更多&回答...
poster 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛禁用 表情符号
论坛启用 [IMG] 代码
论坛启用 HTML 代码



所有时间均为北京时间。现在的时间是 21:26


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.