【问题标题】:integrate function of a function整合功能的功能
【发布时间】:2016-03-06 15:26:10
【问题描述】:
我正在尝试将幂和提高到 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 (.^)。
但我并没有尝试逐元素计算。
任何评论/见解都会有所帮助。谢谢。
【问题讨论】:
标签:
matlab
integration
symbolic-math
【解决方案1】:
我认为,在您的最后一行中,您引用了与您之前指定的 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
希望对你有帮助,祝你好运!
【解决方案2】:
您将符号数学(syms 和 sum)与数值函数混合以计算积分(integarl)。虽然有可能,但这通常不是一个好主意,因为您最终会遇到数值解的精度问题和符号数学工具箱的糟糕性能。如果您需要数值解,请不要使用符号工具箱中的任何函数。如果你想用符号数学工具箱解决它,也许得到一个解析结果,使用符号工具箱中的int。
解释你的情况发生了什么。 integral 评估您的函数以获得多个 y 值以计算积分,类似于 fun([0,.5,1])。您的函数计算 y^1.2 这是不可能的,在这种情况下您需要逐元素操作。
另一个问题是,您分配的第一个y 未使用。定义fun 的下一行中的y 是一个新变量。
此答案不包含解决方案,因为我不知道是否打算使用符号或数字解决方案。