有没有办法在Matlab中集成函数的日志f(x)而不定义例如l = log(f(x)?

Tec*_*con 3 integration matlab

我有以下代码:

x = 0:0.001:2.5;
gamma_l = @(x) 2*x;
Run Code Online (Sandbox Code Playgroud)

我想整合以下内容:

integral( log(gamma_l), 0 , 0.6 )
Run Code Online (Sandbox Code Playgroud)

但它给了我错误:

未定义函数'log'表示'function_handle'类型的输入参数.

我知道我可以定义:

gamma_l_l = @(x) log(2*x);
integral( gamma_l_l, 0 , 0.6 )
Run Code Online (Sandbox Code Playgroud)

因为它以这种方式工作.但是,我想知道为什么第一种情况不起作用.如果有一种方法可以在不定义新功能的情况下集成功能.

gno*_*ice 5

您的变量gamma_l是一个匿名函数,该log函数不是设计为接受函数句柄作为输入.相反,您需要定义第二个匿名函数来计算 gamma_l给定值,然后将数值结果传递给log,如下所示:

result = integral(@(x) log(gamma_l(x)), 0, 0.6);
Run Code Online (Sandbox Code Playgroud)