cms做淘宝客网站,seo对网络推广的作用是,泰安住房和城乡建设厅网站,网站开发语言总结有哪些本博客向您介绍如何存储或访问向 MATLAB 复合函数#xff08;如 fzero 或 integral#xff09;传递的数学函数的额外参数。 MATLAB 复合函数基于某个值范围计算数学表达式。这些函数之所以称为复合函数是因为它们是接受函数句柄#xff08;函数的指针#xff09;作为输入… 本博客向您介绍如何存储或访问向 MATLAB 复合函数如 fzero 或 integral传递的数学函数的额外参数。 MATLAB 复合函数基于某个值范围计算数学表达式。这些函数之所以称为复合函数是因为它们是接受函数句柄函数的指针作为输入的函数。这些函数的每一个都要求目标函数具有特定数量的输入变量。例如 fzero 和 integral 接受恰好具有一个输入变量的函数的句柄。 假设您需要在系数 b 和 c 具有不同的值时计算三次多项式 x3 bx c 的零点。尽管您可以创建接受三个输入变量x、b 和 c的函数但无法将需要所有这三个输入的函数句柄传递给 fzero。不过您可以利用匿名函数或嵌套函数的属性来定义其他输入的值。 1.使用嵌套函数参数化 定义参数的一种方法是使用嵌套函数 - 完全包含于程序文件中另一个函数内的函数。对于此示例将创建一个名为 findzero.m 的文件该文件包含父函数 findzero 和嵌套函数 poly function y findzero(b,c,x0)
y fzero(poly,x0);
function y poly(x)
y x^3 b*x c;
end
end 该嵌套函数定义具有一个输入变量 x 的三次多项式。父函数接受参数 b 和 c 作为输入值。将 poly 嵌套于findzero 内的原因是嵌套函数共享其父函数的工作区。因此 poly 函数可以访问您传递给 findzero 的 b 和 c 的值。 要求 b 2 和 c 3.5 时多项式的零点如果使用开始点 x0 0 则可以从命令行调用 findzero x findzero(2,3.5,0) x -1.0945 2.使用匿名函数进行参数化 访问额外参数的另一种方法是使用匿名函数。匿名函数是可以在单个命令中定义而无需创建一个单独程序文件的函数。这些函数可以使用当前工作区中可用的任何变量。例如创建用于描述三次多项式的匿名函数的句柄并求零点 b 2;
c 3.5;
cubicpoly (x) x^3 b*x c;
x fzero(cubicpoly,0) x -1.0945 变量 cubicpoly 是具有一个输入 x 的匿名函数的函数句柄。匿名函数的输入以包含在括号中的形式显示并紧跟用于创建函数句柄的 符号之后。由于在您创建 cubicpoly 时 b 和 c 位于工作区中因此匿名函数不需要这些系数的输入。无需为匿名函数创建中间变量 cubicpoly 。可以将函数句柄的整个定义包含在对 fzero 的调用中 b 2;
c 3.5;
x fzero((x) x^3 b*x c,0) x -1.0945 您也可以使用匿名函数调用在函数文件中定义的更复杂的目标函数。例如假设存在具有以下函数定义的名为 cubicpoly.m 的文件 function y cubicpoly(x,b,c)
y x^3 b*x c;
end 在命令行上定义 b 和 c 然后使用调用 cubicpoly 的匿名函数调用 fzero b 2;
c 3.5;
x fzero((x) cubicpoly(x,b,c),0) x -1.0945 注意 要更改参数的值必须创建一个新匿名函数。例如 b 10;
c 25;
x fzero((x) x^3 b*x c,0);