有没有一种方法可以在Matlab中积分函数f(x)的对数,而无需定义例如l = log(f(x)?

问题描述 投票:0回答:1

我有以下代码:

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 )

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

matlab numerical-integration
1个回答
5
投票

您的变量

gamma_l
是一个匿名函数,并且
log
函数并非设计为接受函数句柄作为输入。相反,您需要定义第二个匿名函数,该函数对给定值进行评估
gamma_l
,然后将数字结果传递给
log
,如下所示:

result = integral(@(x) log(gamma_l(x)), 0, 0.6);
© www.soinside.com 2019 - 2024. All rights reserved.