3

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

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

并评估它们:

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

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

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

4

2 回答 2

3

为什么不这样做(根据定积分的定义):

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

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

于 2011-01-18T21:59:38.220 回答
0

如果您只对数值解感兴趣,那么您可以使用数值积分。例如,您可以使用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。

于 2013-09-14T23:30:18.007 回答