Matlab插值代码uu = polyval(polyfit(x,u,N),xx)的Maple写法是什么
原Matlab代码功能为:先对离散点集
x、u做N阶多项式拟合,再将拟合得到的多项式在xx的点位上计算取值,得到插值结果uu,代码如下:uu = polyval(polyfit(x,u,N),xx); % 插值网格数据
对应Maple实现
Maple中需要用到CurveFitting工具包的PolyFit方法做多项式拟合,再用eval方法对拟合后的多项式做点位计算,完全对等的实现逻辑如下:
分步写法
# 加载工具包(仅需运行一次) with(CurveFitting): # 1. 拟合N阶多项式,t为多项式的自变量符号 p := PolyFit(x, u, N, t); # 2. 将多项式代入xx点位计算插值结果 uu := eval(p, t = xx);
单行合并写法(和原Matlab一行代码的逻辑完全对应)
uu := eval(CurveFitting:-PolyFit(x, u, N, t), t = xx);
补充说明
CurveFitting:-PolyFit对应Matlab的polyfit,入参依次为自变量离散点、因变量离散点、拟合阶数、多项式自变量符号eval对应Matlab的polyval,用于将多项式代入指定的自变量值计算结果- 如果你不需要手动指定拟合阶数,只是要做满阶多项式插值,也可以直接调用更简便的内置插值方法:
该方法默认使用uu := interp(x, u, xx);length(x)-1阶多项式做插值,无需手动指定阶数。
内容的提问来源于stack exchange,提问作者user1846458
相关产品推荐
相关产品推荐

