本主题介绍如何存储或访问您传递给Matlab的数学函数的额外参数®函数的功能,如Fzero.
或者积分
.
MATLAB函数函数在数值范围内计算数学表达式。它们被称为函数函数,因为它们接受函数句柄(指向函数的指针)作为输入。每个函数都要求目标函数具有特定数量的输入变量。例如,Fzero.
和积分
接受只有一个输入变量的函数句柄。
假设您想找到立方多项式的零x3.+
bx+
c对于不同的系数值b和c.尽管可以创建一个接受三个输入变量的函数(x,b, 和c),则不能传递需要所有这三个输入的函数句柄Fzero.
.但是,您可以利用匿名函数或嵌套函数的属性来定义附加输入的值。
定义参数的一种方法是使用嵌套函数-a函数完全包含在程序文件中的另一个函数中。对于此示例,创建一个名为的文件findzero.m
它包含一个父函数findzero
和嵌套功能poly
:
函数Y = f0 (@poly,x0);函数Y = poly(x) Y = x^3 + b*x + c;结束结束
嵌套函数定义了一个只有一个输入变量的三次多项式,x
.父函数接受参数b
和c
作为输入值。筑巢的原因poly
在findzero
嵌套函数共享其父函数的工作区。因此,poly
的值b
和c
你传递给他们的findzero
.
求多项式的零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 = f (@(X) X ^3 + b* X + c,0)
x = -1.0945
还可以使用匿名函数调用函数文件中定义的更复杂的目标函数。例如,假设您有一个名为cubicpoly.m
用这个函数定义:
函数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 = f0 (@(X) X ^3 + b* X + c,0);