非线性函数的运算
函数句柄
可以创建任何 matlab® 函数的句柄,并将该句柄用作引用该函数的一种方式。函数句柄通常在参数列表中传递给其他函数,然后,其他函数可以使用该句柄执行或计算相应函数。
在 MATLAB 中,使用 at 符号 @
在函数名称前面构造函数句柄。下面的示例为 sin
函数创建一个函数句柄,并将其赋值给变量 fhandle
:
您可以按照使用函数名称调用函数的相同方式,通过函数句柄来调用函数。语法为
fhandle(arg1, arg2, ...);下面显示的函数 plot_fhandle
接收函数句柄和数据,使用函数句柄生成 y 轴数据,并对数据绘图:
当调用带有如下 sin
函数的句柄和参数的 plot_fhandle
时,得到的计算结果会生成正弦波图:
功能函数
名为“接受函数句柄的函数”的函数类与标量变量的非线性函数配合使用。也就是说,某个函数基于另一个函数运行。接受函数句柄的函数包括
找零
优化
正交
常微分方程
MATLAB 通过定义非线性函数的文件来表示非线性函数。例如,以下是 matlab/demos
文件夹中的 humps
函数的简化版本:
使用以下命令在区间 0 ≤ x
≤ 1 中的一组点处计算此函数
然后,使用以下命令绘制该函数
plot(x,y)
此图形表明,该函数在 x = 0.6 附近具有局部最小值。函数 fminsearch
会求最小值,即此函数采用此最小值时的 x 值。fminsearch
的第一个参数是此函数达到最小值时的函数句柄,第二个参数是猜测的最小值的大致位置:
要在极小值处计算此函数,
humps(p) ans = 11.2528数值分析采用术语正交和积分来区别定积分的近似数值和常微分方程的数值积分。MATLAB 正交例程包括 quad
和 quadl
。语句
计算此图形中曲线下方的面积,并生成
Q = 29.8583最后,此图形表明该函数在此区间中永远不会为零。这样,如果使用
z = fzero(@humps,.5)搜索零,则会在此区间外部找到一个零
z = -0.1316