嵌套的matlab积分函数句柄
matlab integral function handle nested
我在 Matlab 中集成嵌套函数句柄时遇到问题:
fun = @(x,y) 2*x*y;
y = @(x,a) 5*a*x;
int = integral(@(x)fun(x,y(x,5)),0,2)
实际的嵌套更深,实际的功能更复杂,但这个例子几乎描述了我的问题,它抛出“错误使用*
内部矩阵尺寸必须一致。'
这个问题的原因是 MATLAB 试图向您传递一个向量,期望您的函数 return 一个值向量。试试这个(注意点乘积的使用):
fun = @(x,y) 2*x.*y;
y = @(x,a) 5*a.*x;
int = integral(@(x)fun(x,y(x,5)),0,2)
这是相关 MATLAB 文档的摘录:
For scalar-valued problems, the function y = fun(x)
must accept a vector argument, x
, and return a vector result, y
. This generally means that fun must use array operators instead of matrix operators. For example, use .* (times) rather than * (mtimes). If you set the 'ArrayValued' option to true, then fun must accept a scalar and return an array of fixed size.
我在 Matlab 中集成嵌套函数句柄时遇到问题:
fun = @(x,y) 2*x*y;
y = @(x,a) 5*a*x;
int = integral(@(x)fun(x,y(x,5)),0,2)
实际的嵌套更深,实际的功能更复杂,但这个例子几乎描述了我的问题,它抛出“错误使用* 内部矩阵尺寸必须一致。'
这个问题的原因是 MATLAB 试图向您传递一个向量,期望您的函数 return 一个值向量。试试这个(注意点乘积的使用):
fun = @(x,y) 2*x.*y;
y = @(x,a) 5*a.*x;
int = integral(@(x)fun(x,y(x,5)),0,2)
这是相关 MATLAB 文档的摘录:
For scalar-valued problems, the function
y = fun(x)
must accept a vector argument,x
, and return a vector result,y
. This generally means that fun must use array operators instead of matrix operators. For example, use .* (times) rather than * (mtimes). If you set the 'ArrayValued' option to true, then fun must accept a scalar and return an array of fixed size.