函数的积分函数

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

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

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

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

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

但我并不想按元素计算。

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

matlab symbolic-math numerical-integration symbolic-integration
2个回答
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
投票

您将符号数学(

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

解释您的案例中发生的情况。

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

另一个问题是,您分配的第一个

y
未使用。定义
y
的下一行中的
fun
是一个新变量。

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

© www.soinside.com 2019 - 2024. All rights reserved.