集成功能的功能

时间:2015-12-02 11:40:59

标签: matlab integration symbolic-math

我正在努力将功率总和提升到1.2的功率。

问题是这个整合(((t ^ 1)+(t ^ 2)+(t ^ 3))^(1.2))从0到1,相对于t。

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

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

但我不是在尝试计算元素。

任何评论/见解都会有所帮助。谢谢。

2 个答案:

答案 0 :(得分:3)

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

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

输出:

1.1857

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

答案 1 :(得分:1)

您正在使用数字函数混合符号数学(symssum)来评估积分(integarl)。虽然有可能,但它通常不是一个好主意,因为您最终会遇到数值解决方案的精度问题以及符号数学工具箱的糟糕性能。如果需要数字解决方案,请不要使用符号工具箱中的任何函数。如果您想使用符号数学工具箱解决它,可能会获得分析结果,请使用符号工具箱中的int

解释你案件中发生的事情。 integral评估多个y值的函数以计算积分,例如fun([0,.5,1])。你的函数计算y ^ 1.2这是不可能的,你想在这种情况下进行逐元素操作。

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

这个答案不包含解决方案,因为我不知道是否有符号或数字解决方案。