主要内容

参数化功能

概述

本主题解释如何存储或访问传递给MATLAB的数学函数的额外参数®函数的功能,如fzero积分

MATLAB函数函数在一定范围内计算数学表达式。它们被称为函数函数,因为它们是接受函数句柄(指向函数的指针)作为输入的函数。这些函数中的每一个都期望你的目标函数有特定数量的输入变量。例如,fzero而且积分接受只有一个输入变量的函数句柄。

假设你想找出三次多项式的零点x3.+bx+c对于不同的系数值b而且c.尽管您可以创建一个接受三个输入变量的函数(xb,c),则不能将需要所有这三个输入的函数句柄传递给fzero.但是,您可以利用匿名函数或嵌套函数的属性为其他输入定义值。

使用嵌套函数进行参数化

定义参数的一种方法是使用嵌套函数-一个完全包含在程序文件中另一个函数中的函数。对于本例,创建一个名为findzero.m它包含父函数findzero还有一个嵌套函数

函数Y = findzero(b,c,x0) Y = fzero(@poly,x0);函数Y = poly(x) Y = x^3 + b*x + c;结束结束

嵌套函数定义了带有一个输入变量的三次多项式,x.父函数接受参数b而且c作为输入值。筑巢的原因findzero嵌套函数共享其父函数的工作空间。因此,函数可以访问的值b而且c你传递给findzero

求一个0的多项式b = 2而且c = 3.5,用起点x0 = 0,你可以致电findzero从命令行:

x = findzero (2, 3.5, 0)
x = -1.0945

使用匿名函数参数化

访问额外参数的另一种方法是使用匿名函数.匿名函数是可以在单个命令中定义的函数,而不需要创建单独的程序文件。他们可以使用当前工作区中可用的任何变量。

例如,创建一个描述三次多项式的匿名函数的句柄,并找到零:

b = 2;c = 3.5;Cubicpoly = @(x) x^3 + b*x + c;x = fzero (cubicpoly, 0)
x = -1.0945

变量cubicpoly是匿名函数的函数句柄,该函数只有一个输入,x.控件后面的圆括号中显示了匿名函数的输入@创建函数句柄的符号。因为b而且c是否在您创建时的工作区中cubicpoly,匿名函数对这些系数不需要输入。

你不需要创建一个中间变量,cubicpoly,表示匿名函数。的调用中包含函数句柄的整个定义fzero

b = 2;c = 3.5;X = fzero(@(X) X ^3 + b* X + c,0)
x = -1.0945

您还可以使用匿名函数调用在函数文件中定义的更复杂的目标函数。例如,假设您有一个名为cubicpoly.m对于这个函数定义:

函数Y =立方多边形(x,b,c) Y = x^3 + b*x + c;结束

在命令行中定义b而且c,然后打电话fzero使用调用的匿名函数cubicpoly

b = 2;c = 3.5;X = f0 (@(X)立方多边形(X,b,c),0)
x = -1.0945

请注意

要更改参数的值,必须创建一个新的匿名函数。例如:

b = 10;c = 25;X = fzero(@(X) X ^3 + b* X + c,0);

相关的话题

Baidu
map