【问题标题】: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 (.^)。

但我并没有尝试逐元素计算。

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

【问题讨论】:

  • 错误在哪一行? y 或你的 fun?

标签: 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】:

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

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

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

    此答案不包含解决方案,因为我不知道是否打算使用符号或数字解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-23
      • 1970-01-01
      • 2014-12-14
      • 2015-09-23
      • 1970-01-01
      • 2019-07-13
      相关资源
      最近更新 更多