Как я могу оценить интеграцию с номером? - PullRequest
3 голосов
/ 19 января 2011

У меня есть несколько функций, настроенных так:

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

и оценил их:

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

но для g (1) я получил символический ответ вместо числового ответа. Использование float () было попыткой получить числовой ответ, но оно просто превратило все слагаемые в интеграле в float.

Как я могу получить g (1) как число?

Ответы [ 2 ]

3 голосов
/ 19 января 2011

Почему бы просто не сделать (по определению определенного интеграла):

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

'' (quote-quote) оператор используется для принудительного вычисления правой части: = перед присваиванием.

0 голосов
/ 15 сентября 2013

Если вас интересует только численное решение, вы можете использовать числовое интегрирование.Например, вы можете использовать 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.

...