Matlab快速入门之非线性函数的运算

4.3
(3)

本文主要介绍Matlab中的非线性函数的运算方法,主要包括函数句柄复合函数等内容。下面,正式开始介绍。

Matlab快速入门之非线性函数的运算

函数句柄

可以创建任何 MATLAB® 函数的句柄,并将该句柄用作引用该函数的一种方式。函数句柄通常在参数列表中传递给其他函数,然后,其他函数可以使用该句柄执行或计算相应函数。

在 MATLAB 中,使用 at 符号 @ 在函数名称前面构造函数句柄。下面的示例为 sin 函数创建一个函数句柄,并将其赋值给变量 fhandle

fhandle = @sin;

您可以按照使用函数名称调用函数的相同方式,通过函数句柄来调用函数。语法为:

fhandle(arg1, arg2, ...);

下面显示的函数 plot_fhandle 接收函数句柄和数据,使用函数句柄生成 y 轴数据,并对数据绘图:

function plot_fhandle(fhandle, data)
plot(data, fhandle(data))

当调用带有如下 sin 函数的句柄和参数的 plot_fhandle 时,得到的计算结果会生成正弦波图:

plot_fhandle(@sin, -pi:0.01:pi)

复合函数

名为“复合函数”的函数类与标量变量的非线性函数配合使用。也就是说,某个函数基于另一个函数运行。复合函数包括

  • 找零
  • 优化
  • 求积
  • 常微分方程

MATLAB 通过定义非线性函数的文件来表示非线性函数。例如,以下是 matlab/demos 文件夹中的 humps 函数的简化版本:

function y = humps(x)
y = 1./((x-.3).^2 + .01) + 1./((x-.9).^2 + .04) - 6;

使用以下命令在区间 0 ≤ x ≤ 1 中的一组点处计算此函数

>> x = 0:.002:1;
>> y = humps(x);

然后,使用以下命令绘制该函数:

plot(x,y)
Matlab快速入门之非线性函数的运算

此图形表明,该函数在 x = 0.6 附近具有局部最小值。函数 fminsearch 会求最小值,即此函数采用此最小值时的 x 值。fminsearch 的第一个参数是此函数达到最小值时的函数句柄,第二个参数是猜测的最小值的大致位置:

>> p = fminsearch(@humps,.5)

p =

    0.6370

要在极小值处计算此函数,

>> humps(p)

ans =

   11.2528

数值分析采用求积积分来区别定积分的近似数值和常微分方程的数值积分。MATLAB 正交例程包括 quad 和 quadl。下面的语句计算此图形中曲线下方的面积,并生成

>> Q = quadl(@humps,0,1)

Q =

   29.8583

最后,此图形表明该函数在此区间中永远不会为零。这样,如果使用下面的语句,搜索零,则会在此区间外部找到一个零:

>> z = fzero(@humps,.5)

z =

   -0.1316
Matlab快速入门之非线性函数的运算

共计3人评分,平均4.3

到目前为止还没有投票~

很抱歉,这篇文章对您没有用!

让我们改善这篇文章!

告诉我们我们如何改善这篇文章?

文章目录

转载文章,原文出处:MathWorks官网,由古哥整理发布

如若转载,请注明出处:https://iymark.com/articles/3311.html

(0)
微信公众号
古哥的头像古哥管理团队
上一篇 2022年09月28日 21:54
下一篇 2022年10月01日 22:54

你可能感兴趣的文章

发表回复

登录后才能评论
微信小程序
微信公众号