【问题标题】:How can I evaluate an integration to a number?如何评估与数字的集成?
【发布时间】:2011-01-18 21:38:17
【问题描述】:

我有一些这样设置的功能:

f(x):=1-2**-x$
g(y):=integrate(f(x), x, 0, y)$

并对其进行评估:

f(1)$float(%);
g(1)$float(%);

但是对于 g(1),我得到的是符号答案而不是数字答案。使用 float() 试图得到一个数字答案,但它只是将积分中的所有项都变成了浮点数。

我怎样才能得到 g(1) 作为一个数字?

【问题讨论】:

  • 你在使用Wolfram Mathematica吗?

标签: math evaluation symbolic-math maxima


【解决方案1】:

为什么不直接做(根据定积分的定义):

f(x):=1-2**-x$
gg(x):=''(integrate(f(x), x))$
g(y):=gg(y) - gg(0)$

'' (quote-quote) 运算符用于在赋值之前强制评估 := 的右侧。

【讨论】:

    【解决方案2】:

    如果您只对数值解感兴趣,那么您可以使用数值积分。 例如,您可以使用quad_qag (f(x), x, a, b, key, [epsrel, epsabs, limit])

    我试过了:

    f(x) := 1-2^(-x);
    g(y):= quad_qag(f(x), x, 0, y, 3, epsrel=10d-8)$
    g(1);
    

    返回:

    [0.27865247955552,3.093663986714272*10^-15,31,0]
    

    第一项是数值解,

    第二项是近似的相对误差,

    第三个条目是实现解决方案所需的迭代次数,

    最后一项是错误代码;错误代码是

    • 0 如果没有遇到问题;
    • 1 如果完成的子间隔过多;
    • 2 如果检测到过度舍入误差;
    • 3 如果发生极坏的被积函数行为;
    • 6 如果输入无效。

    顺便说一句,精确解是 1-1/(2*log(2)),大约是 0.27865。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-23
      • 2019-05-01
      • 2014-09-15
      • 2016-08-26
      • 1970-01-01
      • 2016-06-27
      • 2020-10-31
      • 1970-01-01
      相关资源
      最近更新 更多