MATLAB 多项式

17 Mar 2025 | 5 分钟阅读

MATLAB 将多项式表示为行向量,包括按降幂排序的系数。 例如,方程 P(x) = x4 + 7x3 - 5x + 9 可以表示为 -

p = [1 7 0 -5 9];

多项式函数

polyfit

给定两个向量 x 和 y,命令 a=polyfit (x, y, n) 将 n 阶多项式拟合到数据点 (xi,yi) 并返回行向量 a 中 x 的 (n+1) 个系数。 系数按 x 的降幂排列,即 a=[a n a n-1…a 1 a 0 ]。

polyval

给定一个数据向量 x 和行向量 a 中多项式的系数,命令 y=polyval(a, x) 计算数据点 xi 处的多项式并生成值 yi,使得

yi=a(1) xn i+a(2) xi (n-1)+…+a(n)x+a(n+1)。

因此,向量 a 的长度为 n+1,因此,计算的多项式的阶数为 n。 因此,如果 a 的长度为 5 个元素,则要计算的多项式将自动确定为四阶。

如果需要误差估计,polyfitpolyval 都使用最佳参数。

示例:直线(线性)拟合

以下数据是从一项旨在测量给定弹簧的弹簧常数的实验中收集的。 将不同的质量 m 挂在弹簧上,并测量弹簧与其未拉伸配置的相应挠度 δ。

从物理学中,我们知道 F=kδ,这里 F=mg。 因此,我们可以从关系 k=mg/δ 找到 k。

在这里,我们将通过绘制实验数据、通过数据拟合最佳直线(我们知道 δ 和 F 之间的关系是线性的),然后测量最佳拟合线的斜率来找到 k。

m(g)5.00         10.00         20.00         50.00         100.00
δ(mm)15.5         33.07         53.39         140.24         301.03

通过数据拟合直线意味着我们想找到多项式系数 a1 和 a0(一阶多项式),使得 a1 xi+a0 给出 yi 的“最佳”估计。 在步骤中,我们需要以下

步骤 1: 找到系数 ak' s

a=polyfit(x, y, 1)

步骤 2: 使用拟合多项式在更精细的(更紧密间隔的)xj' s 处评估 y

y_fitted=polyval(a, x_fine)

步骤 3: 绘制并查看。 将给定的输入绘制为点,并将拟合的数据绘制为一条线

plot(x, y, 'o',x_fine, y_fitted);

以下脚本文件显示了通过给定弹簧实验数据进行直线拟合并找到弹簧常数所包含的所有步骤。

并绘制以下图形

MATLAB Polynomial

最小二乘曲线拟合

最小二乘曲线拟合过程可以在 MATLAB 中轻松实现,因为该技术会产生一组需要求解的线性方程。

大多数曲线拟合都是多项式曲线拟合或指数曲线拟合(包括幂律,例如,y=axb)。

两种最常用的函数是

  • y=aebx
  • y=cxd

1.ln (y)=ln (a) +bx 或 y =a0+a1 x,其中 y =ln(y), a1=b,且 a0=ln?(a)。

2. ln(y)=ln(c) +d ln (x) 或 y = a0+a1 x,其中 y = ln (y), a1=d,且 a0=ln?(c)。

现在我们可以在两种方法中使用 polyfit,只需使用一阶多项式来确定未知常数。

涉及的步骤如下

步骤 1:开发新输入: 通过获取原始输入的对数,开发新的输入向量 yx,如分配。 例如,为了拟合 y=aebx 类型的曲线,创建

ybar=log(y) 并保留 x,以及为了拟合 y=cxd 类型的曲线,创建 ybar=log(y)xbar=log(x)。

步骤 2:进行线性拟合: 使用 polyfit 找到线性曲线拟合的系数 a0 和 a1

步骤 3:绘制曲线: 根据获得的关系,从曲线拟合系数计算原始常数(例如,a,b)的值。 根据获得的关系,重新计算给定 x 处的 y 值,并绘制曲线以及原始数据。

下表显示了来自真空泵的时间与压力变化读数。 我们将拟合一条曲线,P(t)=P0 e-t/τ,通过数据,并确定未知常数 P0 和 τ。

t0             0.5         1.0         5.0         10.0         20.0
P760         625         528         85         14         0.16

通过取关系的双方的对数,我们有

MATLAB Polynomial

其中 P=ln(P), a1=MATLAB Polynomial-且 a0=ln?(P0 )。 因此,一旦我们有了 a1 和 a0,就可以轻松地计算出 P0 和 τ。

示例:创建脚本文件

并绘制以下图形

MATLAB Polynomial
下一个主题MATLAB 插值