2026a

# differentiate1


微分 FitResult 对象

函数库: TyCurveFitting

# 语法

fx = differentiate1(FO, X, order=1)
fx, fxx = differentiate1(FO, X, order=2)

# 说明

fx = differentiate1(FO, X, order=1) 在由向量 X 指定的给定点微分 FitResult 结构体 FO 并在 fx 中返回结果。该用法仅在指定 order=1 时使用。


fx, fxx = differentiate1(FO, X, order=2) 在由向量 X 指定的给定点微分 FitResult 结构体 FO 并在 fx 中返回结果以及在 fxx 中返回二阶导数。该用法仅在指定 order=2 时使用。示例

# 示例

使用 differentiate1 函数求曲线的导数

构造一个正弦基波信号。

using TyPlot
using TyCurveFitting
using TyMath
xdata = 0:.1:2*pi
y0 = sin.(xdata)

为信号加入响应高斯噪声。

rng = MersenneTwister(1234)
noise = 2*y0.*randn(rng, size(y0))
ydata = y0 + noise

使用自定义正弦波模型拟合数据。

f = fittype("a*sin(b*x)")
fit1 = fit(f,xdata,ydata,startpt=[1,1])

计算拟合在预测点的导数。

d1, d2 = differentiate1(fit1,xdata,order=2)

绘制数据、拟合及导数。

subplot(3,1,1)
plotfit(fit1,xdata,ydata)
subplot(3,1,2)
plot(xdata,d1,"m")
grid("on")
legend(["1st derivative"],loc="northeast")
subplot(3,1,3)
plot(xdata,d2,"c")
grid("on")
legend(["2nd derivative"],loc="northeast")

您也可以直接使用 plotfit 来计算与绘制导数如下:

figure()
plotfit(fit1,xdata,ydata,("fit","deriv1","deriv2"))

然而 plotfit 方法并不会像 differentiate1 方法一样返回数据值的导数。

# 输入参数

FO - FitResult 函数
FitResult

待微分函数,指定为 FitResult 结构体。

X - 微分点
数组

函数微分的求值点,指定为向量。

数据类型: Int | Float

order - 微分阶数
1(默认)| 2

函数微分阶数,指定为标量。当 order = 1 时,differentiate1 返回函数的一阶微分;当 order = 2 时,differentiate1 还返回函数的二阶微分。

数据类型: Int

# 输出参数

fx - 相对于 x 的一阶导数
向量

函数的一阶导数,以与 X 的大小相同的向量形式返回。

数据类型: Int | Float

fxx - 相对于 x 的二阶导数
向量

函数的二阶导数,以与 X 的大小相同的向量形式返回。

数据类型: Int | Float

# 提示

工具箱使用中心差分计算一阶导数。

其中 是工具箱计算导数的点, 为一个小数(阶数为 eps() 的三次根)。 为 fun 在 处的值, 为 fun 在 处的值,

# 另请参阅

fit | plotfit | integrate