我有一些功能是这样设置的:
f(x):=1-2**-x$
g(y):=integrate(f(x), x, 0, y)$
并评估它们:
f(1)$float(%);
g(1)$float(%);
但是对于 g(1),我得到的是符号答案而不是数字答案。使用 float() 试图获得一个数字答案,但它只是将积分中的所有项转换为浮点数。
我怎样才能得到 g(1) 作为一个数字?
我有一些功能是这样设置的:
f(x):=1-2**-x$
g(y):=integrate(f(x), x, 0, y)$
并评估它们:
f(1)$float(%);
g(1)$float(%);
但是对于 g(1),我得到的是符号答案而不是数字答案。使用 float() 试图获得一个数字答案,但它只是将积分中的所有项转换为浮点数。
我怎样才能得到 g(1) 作为一个数字?
为什么不这样做(根据定积分的定义):
f(x):=1-2**-x$
gg(x):=''(integrate(f(x), x))$
g(y):=gg(y) - gg(0)$
'' (quote-quote) 运算符用于在赋值之前强制评估 := 的右侧。
如果您只对数值解感兴趣,那么您可以使用数值积分。例如,您可以使用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]
第一项是数值解,
第二项是近似的相对误差,
第三个条目是实现解决方案所需的迭代次数,
最后一项是错误代码;错误代码是
顺便说一句,确切的解是 1-1/(2*log(2)),大约是 0.27865。