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
# 提示
工具箱使用中心差分计算一阶导数。
其中