整合一个函数的函数

integrate function of a function

我正在尝试对提高到 1.2 次方的幂和进行积分。

问题是这个关于 t 从 0 到 1 积分 (((t^1)+(t^2)+(t^3))^(1.2))。

x=1:3
syms t
y=sum(t.^x)
fun=@(y) y^(1.2)
integral(fun,0,1)

输出为:使用 ^ 时出错 输入必须是标量和方阵。 要按元素计算 POWER,请改用 POWER (.^)。

但我并不是要逐元素计算。

任何 comment/insight 都会有所帮助。谢谢。

我认为,在您的最后一行中,您提到的通用 y 与您之前指定的 y 无关。因此,您需要 fun(y) 而不是 fun。然后,由于 fun 的输出是符号表达式,因此您需要使用 matlabFunction 将此表达式转换为函数句柄。因此,最终代码如下所示:

x=1:3
syms t
y=sum(t.^x)
fun=@(y) y^(1.2)
integral(matlabFunction(fun(y)),0,1)

输出:

1.1857

希望对你有所帮助,祝你好运!

您将符号数学(symssum)与计算积分的数值函数混合(integarl)。虽然这是可能的,但这通常不是一个好主意,因为您最终会遇到数值解决方案的精度问题和符号数学工具箱的不良性能。如果您需要数值解,请不要使用符号工具箱中的任何函数。如果你想用符号数学工具箱解决它,也许得到一个分析结果,使用符号工具箱中的int

解释你的情况。 integral 计算多个 y 值的函数以计算积分,类似于 fun([0,.5,1])。您的函数计算 y^1.2 这是不可能的,在这种情况下您需要按元素操作。

另一个问题是,您分配的第一个 y 未被使用。定义 fun 的下一行中的 y 是一个新变量。

此答案不包含解决方案,因为我不知道是否需要符号或数字解决方案。