интеграция гиперполической функции в клене - PullRequest
0 голосов
/ 25 февраля 2019

Я пытаюсь оценить эту функцию в клене

enter image description here

, но я продолжаю получать этот ответ, почему клен не интегрируется должным образом.Я попытался численно интегрировать его, и он работает, но мне тоже нужно аналитическое решение.

1 Ответ

0 голосов
/ 25 февраля 2019
restart;

sig := x->(exp((x-t)/a)-exp((-x-t)/a))
          /(exp((x-t)/a)+exp((-x-t)/a)):

new := convert(simplify(convert(expand(sig(x)),trigh)),tanh);

                     new := tanh(x/a)

simplify(expand(convert(sig(x) - new, exp)));

                           0

Итак, вы изначально написали int(f*sig(x)/x,x).

Вы не указали, что f является функцией x, и как простая константа это не очень важно и может простобыть вытянутым перед интегралом как постоянный фактор.Если f является некоторой функцией x, то вам действительно нужно указать, что это такое!

Давайте рассмотрим int(sig(x)/x,x=c..d).Используя упрощение new, то есть просто

Q := Int( new/x, x=c..d );

      Q := Int(tanh(x/a)/x, x = c .. d)

QQ := IntegrationTools:-Change(Q, y=x/a, y);

     QQ := Int(tanh(y)/y, y = c/a .. d/a)

Вы сказали, что хотели «аналитическое решение», под которым я понимаю, что вы имеете в виду явную формулу для результата символической интеграции.Но что вы хотите, если интеграл не (математически) не имеет точного символьного результата в замкнутой форме?

Будете ли вы довольны (точным, символическим) приближением ряда?

H := (a,ord,c,d)
     -> int(convert(series(eval(new/x,:-a=a),x,ord),
                    polynom),x=c..d):

# order 5
H(a, 5, c, d);

                      3    3     /  5    5\
            d - c   -c  + d    2 \-c  + d /
            ----- - -------- + ------------
              a          3            5    
                      9 a         75 a     

Для конкретного примера, принимая a=2 и (точное) приближение ряда порядка 25, тогда интеграл от x=0 до x=1 оценивается как точное рациональное.

evalf(H(2, 25, 0, 1));

                      0.4868885956

Вотчисловая интеграция для тех же значений,

evalf(Int( eval(new/x,a=2), x=0..1 ));

                      0.4868885956

Специализированная числовая квадратура может быть такой же хорошей, как последовательное приближение для различных приложений, но, конечно, это будет зависеть от того, что вы собираетесь делать с результатом.

Возникает вопрос: что вы надеетесь сделать с некоторым предполагаемым «аналитическим результатом», который вы не можете сделать с помощью функции черного ящика, которая генерирует числовое приближение с плавающей точкой?Зачем вам «нужен» «аналитический результат»?

Кстати, еще один способ упростить его (если приведенная выше конструкция new не удалась в вашей версии Maple):

new := convert(simplify(expand( numer(sig(x))/exp(-t/a) ))
               /simplify(expand( denom(sig(x))/exp(-t/a) )),
               compose,trigh,tanh);

                                /x\
                     new := tanh|-|
                                \a/
...