有没有一种方法可以在不定义eg l=log(f(x)的情况下在Matlab中集成函数的log,f(x)?

有没有一种方法可以在不定义eg l=log(f(x)的情况下在Matlab中集成函数的log,f(x)?,matlab,integration,Matlab,Integration,我有以下代码: x = 0:0.001:2.5; gamma_l = @(x) 2*x; 我想整合以下内容: integral( log(gamma_l), 0 , 0.6 ) 但它给了我一个错误: 类型的输入参数的未定义函数“log” “函数句柄” 我知道我可以定义: gamma_l_l = @(x) log(2*x); integral( gamma_l_l, 0 , 0.6 ) 因为它是这样工作的。但是,我想知道为什么第一种情况不起作用。以及是否有一种方法可以在不定义新函数的情况下集

我有以下代码:

x = 0:0.001:2.5;
gamma_l = @(x) 2*x;
我想整合以下内容:

integral( log(gamma_l), 0 , 0.6 )
但它给了我一个错误:

类型的输入参数的未定义函数“log” “函数句柄”

我知道我可以定义:

gamma_l_l = @(x) log(2*x);
integral( gamma_l_l, 0 , 0.6 )

因为它是这样工作的。但是,我想知道为什么第一种情况不起作用。以及是否有一种方法可以在不定义新函数的情况下集成函数。

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

result = integral(@(x) log(gamma_l(x)), 0, 0.6);

第一种情况不起作用,因为
log()
需要数字作为输入,而您不是给它一个数字,而是给它一个函数句柄。函数句柄的对数没有定义。谢谢,@Ander!那么您认为最有效的(仅此)是方法是定义另一个函数?在积分中没有定义复合函数的方法吗?Gnovice的答案是应该如何处理;)