我正在尝试对 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 (.^)。
但我并不想按元素计算。
任何评论/见解都会有帮助。谢谢你。
我认为,在你的最后一行中,你指的是通用的
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
希望有帮助,祝你好运!
您将符号数学(
syms
和 sum
)与数值函数混合来计算积分 (integarl
)。虽然这是可能的,但这通常不是一个好主意,因为您最终会遇到数值解的精度问题和符号数学工具箱的糟糕性能。如果您想要数值解,请勿使用符号工具箱中的任何函数。如果您想使用符号数学工具箱求解它,也许获得分析结果,请使用符号工具箱中的 int
。
解释您的案例中发生的情况。
integral
评估多个 y 值的函数以计算积分,类似于 fun([0,.5,1])
。您的函数计算 y^1.2 这是不可能的,在这种情况下您需要逐元素运算。
另一个问题是,您分配的第一个
y
未使用。定义 y
的下一行中的 fun
是一个新变量。
这个答案不包含解决方案,因为我不知道是否需要符号或数字解决方案。