2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




На страницу 1, 2  След.
 
 Неберущийся интеграл - как искать?
Сообщение28.01.2008, 14:59 
Возникла необходимость вычислить интеграл, аналитически, хоть как-нибудь. Интеграл по всей видимости не выражается через элементарные функции, значит, надо искать решение через специальные, или как-то по другому.
Интеграл вот такой:

$$\int_0^k sin(\frac {P_n(x)} {Q_m(x)}) dx$$
где P(x) и Q(x) - полиномы степени n и m соответственно.

Подозреваю =) что аналитического решения нет вообще, тогда, хотелось бы узнать методы или приемы для его вычисления, только не численно. Или в каком направлении копать...

 
 
 
 
Сообщение29.01.2008, 03:56 
Ну, если Q(x) не обращается в ноль на [0,k], то можно разложить в ряд и интегрировать почленно. Если, кроме того, P/Q - правильная дробь, то, используя представление
$$
\sin\left(\frac PQ\right) =
\sum_{j=0}^l\frac{(-1)^{j}}{(2j+1)!}\left(\frac PQ\right)^{2j+1}+r_{2l+1}(P/Q)
$$
и метод Остроградского, получаем:
$$
\int_0^k \sin\left(P(x)/Q(x)\right)dx=\frac{U_l(x)}{Q^{2l}(x)}\Big|_0^k+\int_0^k\frac{V_l(x)}{Q(x)}dx+
\int_0^k r_{2l+1}(P(x)/Q(x))dx.
$$
Последнее слагаемое стремится к нулю, когда $l\to\infty$. Поэтому представляет интерес, как себя ведут многочлены $U_l(x)$, $V_l(x)$ при $l\to\infty$. В частности $\deg V_l<\deg Q$, и возникает вопрос, а не стремится ли $V_l$ к какому-то многочлену $V$? Если вдруг да, то получим
$$
\int_0^k \sin\left(P(x)/Q(x)\right)dx=\lim_{l\to\infty}\frac{U_l(x)}{Q^{2l}(x)}\Big|_0^k+\int_0^k\frac{V(x)}{Q(x)}dx.
$$
В простейшем случае $P/Q=1/(x+a)$, $a>0$, $k>0$ это предположение верно, $V_l(x)\equiv1$ и решение представляется в виде ряда. Поскольку многочлены $U_l(x)$, $V_l(x)$ в методе Остроградского вычисляются методом неопределенных коэффициентов, то несложно запрограммировать их нахождение для данной функции $P/Q$ в какой-нибудь математической среде вроде Maple или Mathematica, и попробовать проверить, имеются ли у них какие-то хорошие свойства при $l\to\infty$. К примеру, можно взять сначала $1/(x^2+1)$ и посмотреть, имеет ли предел $V_l(x)$ и чему он равен. Если *вдруг* предел есть и выражается обозримым образом, то можно попробовать $1/(x^2+a^2)$, а также посмотреть свойства $U_l(X)$ и т.д.

Вряд ли конечно, можно расчитывать получить явные формулы для произвольных дробно-рациональных функций, но, в принципе, не исключено, что наблюдая за простейшими частными случаями, удастся найти какие-то процедуры, которые для данной $P/Q$ находят представление интеграла в виде рядов или чего-нибудь еще. :)

Если не удастся найти явные формулы, то можно, взяв достаточно большое l, чтобы остаток был мал (которое определяется максимумом $|P/Q|$ на [0,k] и заданной погрешностью), с помощью компьютера проинтегрировать многочлен Тейлора и получить приближенное значение.

 
 
 
 
Сообщение29.01.2008, 17:37 
Большое Спасибо за подробный ответ. Похоже что действительно такие интегралы решать надо через разложения в ряд, хотя видел как выражают неберущиеся интегралы через функцию Лапласа, интегральные синусы и т.п. - сейчас пытаюсь разобраться, нашел тут несколько подробных статей на эту тему.
$P/Q$ на самом деле не совсем произвольная дробно-рациональная функция, а именно: на отрезке [0,k] она принимает всего k значений, при чем эти значения изменяются в целых x, т.е. я этот интеграл могу вычислить простым суммированием от 0 до k для всех целых x. Вот. Но суть была именно в том, чтобы получить какое-либо аналитическое решение, которое бы сократило количество арифметических операций, например, чтобы можно было применить формулу для нахождения определенного интеграла.
Про метод Остроградского попробую что-нибудь поискать...
В любом случае спасибо!

 
 
 
 
Сообщение29.01.2008, 17:56 
Аватара пользователя
Desich1024 писал(а):
$P/Q$ на самом деле не совсем произвольная дробно-рациональная функция, а именно: на отрезке [0,k] она принимает всего k значений...


А что, разве такие бывают? Приведите пример хотя бы одной (отличной от константы).

 
 
 
 
Сообщение29.01.2008, 20:40 
Профессор Снэйп писал(а):
Desich1024 писал(а):
$P/Q$ на самом деле не совсем произвольная дробно-рациональная функция, а именно: на отрезке [0,k] она принимает всего k значений...


А что, разве такие бывают? Приведите пример хотя бы одной (отличной от константы).


А почему бы им не быть? Просто до них еще дело не дошло, надо с интегралом сначала разобраться... Ну а вообще это будет обычное частное двух полиномов с коеэффициентами, при чем коеэффициентов будет ~k, или больше. Вы наверное слышали про аппроксимацию Эрмита-Паде и про ее свойство хорошо приближать функции с разрывами? Вот, по задумке, поэтому и используется дробно-рациональная функция. График у нее будет что-то наподобие ступенек на отрезках [x, x+1], для целых x.

 
 
 
 
Сообщение30.01.2008, 00:46 
Хотя, вобще-то, понял юмор. Я имел ввиду: $k$ РАЗЛИЧНЫХ значений на промежутке [0,k]. А вообще значений у функции будет бесконечность. Но такую функцию, которая имеет ВСЕГО $k$ значений, думаю, тоже построить возможно.

 
 
 
 
Сообщение30.01.2008, 01:46 
Может, имеет смысл привести исходную постановку задачи?
Скажем, если речь идет о суммировании значений какой-то гладкой функции от 0 до k, то для этого есть формула Эйлера (Эйлера-Маклорена), там как раз сумма заменяется на интеграл. Аппроксимация ступенчатой функции, а затем поиск приближенного значения интеграла всяко не будет быстрее. И параметров, чтобы получить сколько-нибудь приемлемую точность, надо будет брать гораздо больше k.

 
 
 
 
Сообщение30.01.2008, 04:21 
Аватара пользователя
 !  Desich1024
Правила форума не допускают транслитерации. Исправьте, пожалуйста. Если у Вас проблемы с клавиатурой, Вы всегда можете использовать, например, translit.ru.

 
 
 
 
Сообщение30.01.2008, 07:32 
Аватара пользователя
Так ничего и не понял.

Что такое аппроксимация Эрмита-Паде, я не знаю. Зато знаю другое. Если $P(x)$ и $Q(x)$ --- полиномы (с действительными коэффициентами), то на отрезке $[0,k]$ (отрезок действительной прямой, $k > 0$) функция $f(x) = P(x)/Q(x)$ будет либо равна константе (в случае, если $P(x) = cQ(x)$), либо принимать бесконечно много значений. Разрывы она может иметь только в точках, являющихся корнями полинома $Q(x)$, причём каждый такой разрыв будет либо устранимым, либо разрывом второго рода (с вертикальной асимптотой).

Может быть имелось в виду, что та функция, которую аппроксимируют полиномами, является ступенчатой и принимает всего $k$ значений на отрезке $[0,k]$ (число $k$, надо полагать, целое)?

 
 
 
 
Сообщение31.01.2008, 00:38 
Gafield писал(а):
Может, имеет смысл привести исходную постановку задачи?... Аппроксимация ступенчатой функции, а затем поиск приближенного значения интеграла всяко не будет быстрее.

Дело в том, что в подинтегральном выражении содержится, скажем, некий параметр $a$, который менят свое значение в процессе функционирования алгоритма, а вот сам интеграл, в общем-то не меняется (если не считать параметр $a$). При этом интеграл достаточно вычислить один раз, а затем, уже в оптимизированном выражении, менять значение параметра. При этом все затраты на аппроксимацию и т.п. становятся незначительными, по сравнению с тем, если бы мы вычисляли сумму (интеграл) каждый раз. Вот, собственно, и вся задача.

Gafield писал(а):
Скажем, если речь идет о суммировании значений какой-то гладкой функции от 0 до k, то для этого есть формула Эйлера (Эйлера-Маклорена), там как раз сумма заменяется на интеграл.

Ага, и вправду есть =) Это Вы прямо таки в точку попали! Нашел эту формулу, кажется как раз то что надо! =) Там правда много производных, но это все должно в итоге окупиться я думаю. До того как написать в форум, пытался найти что-то вроде "нахождение целочисленного интеграла", но безуспешно. Хотя интеграл в этой формуле также присутствует, задачу теперь можно упростить. Частное полиномов можно заменить на "просто" полином. Даже может быть, в таком случае, решение с разложением в ряд, будет допустимо.

Gafield писал(а):
И параметров, чтобы получить сколько-нибудь приемлемую точность, надо будет брать гораздо больше k.

В новой постановке задачи k параметров уже достаточно, что меня очень радует =) Т.е. теперь интеграл выглядит вот так:
$$\int_0^k sin(P_n(x))dx$$
где P(x) - полином степени n

В реальной задаче он может быть несколько сложнее =) но если такой решить не удастся, дальше можно тоже не мучаться =)

Добавлено спустя 27 минут 27 секунд:

Профессор Снэйп писал(а):
Если $P(x)$ и $Q(x)$ --- полиномы (с действительными коэффициентами), то на отрезке $[0,k]$ (отрезок действительной прямой, $k > 0$) функция $f(x) = P(x)/Q(x)$ будет либо равна константе (в случае, если $P(x) = cQ(x)$), либо принимать бесконечно много значений. Разрывы она может иметь только в точках, являющихся корнями полинома $Q(x)$, причём каждый такой разрыв будет либо устранимым, либо разрывом второго рода (с вертикальной асимптотой).

Ну я о таких разрывах и говорил, я же в следующем сообщении пояснил что всего значений - бесконечность, а вот различных значений, в общем случае, k. Т.е. представте себе ступеньчатую функцию, у которой длина всех ступенек - единица. На интервале [0,k] у нее будет k ступенек, соответственно k различных значений, и разрывы будут типа "сдвиг", т.е. насколько я помню, устранимые 1 рода.
Вот, а по поводу неустранимых разрывов, кажется, видел аппроксимацию также, дробно-рациональной функцией типа "Полином/Полином", но в любом случае надобность в этом уже отпала, достаточно одного полинома для рассматриваемой (в этом топике) задачи.

 
 
 
 
Сообщение31.01.2008, 02:14 
Хмм... исходной постановки так и нет. Если порядок многочлена равен двум, то вычисляется в специальных функциях. Если больше, то не знаю, но в общем случае вряд ли. Опять же, делая предположения, из предыдущего поста вроде следует, что надо приблизить некоторую функцию, зависящую от параметра, чтобы найти некоторое аналитическое приближение интеграла от ее синуса, причем, опять же, видимо, функция гладкая. А сама задача касается все же ряда. Какая должна быть точность, насколько велико может быть значение $k$, фиксировано оно или хочется аналитической зависимости и от него тоже и т.п., остается только гадать. Чтобы приблизить даже очень хорошую функцию, вроде косинуса, полиномом на отрезке [0,k] для большого k, надо опять же значительно больше коэффициентов, чем k. Если это затем раскладывать в ряд, то получится очень много операций. Это только для приближения синуса, а есть еще погрешность, связанная с остаточным членом в формуле Эйлера. Опять же, каков характер завиимости от $a$? Даже в случае аналитической зависимости функции от $x$ и $a$ без каких-то дополнительных предположений получить хорошеее приближение в аналитическом виде нереально. Это вопрос сложности описания или количества информации. Надеяться решить задачу в таком общем случае - это вроде того, что взяв файлы в 1Мb, надеяться сжимать их архиватором до 1Kb, чтобы было удобнее. Другое дело, что в каком-то конкретном случае, который реально требуется, может, в принципе, существует способ считать эту сумму от параметра проще, чем каждый раз в лоб. Но без точной постановки задачи это бессмысленно обсуждать.

 
 
 
 
Сообщение31.01.2008, 03:18 
Gafield писал(а):
Но без точной постановки задачи это бессмысленно обсуждать.

OK. Попробую описать поточнее. Тут, впринципе все примитивно довольно таки. Возьму самый простой вариант. Есть функция $f(x) = sin(a*x)$, где $a$ - параметр, $x$ - переменная. Есть $k$ различных значений, которые принимает переменная $x$. Надо вычислить сумму значений $f(x)$ в этих $k$ различных точках сначала при a1, потом при a2 и т.д. При чем, a2 мы узнаем только когда вычислим сумму $f(x)$ при a1. Число $k$ фиксировано с самого начала и не меняется, точно также как и значения $x$. Предлагается аппроксимировать все $k$ значений переменной $x$ полиномом степени $k$ на равномерной сетке от 0 до k, а затем заменить переменную $x$ некоторой функцией, т.е. полиномом получается, и найти интеграл, т.к. в такой постановке все новые $x$ будут с фиксированным шагом изменяться и возможно применить интеграл для вычисления суммы. Теоретически, после нахождения аналитически интеграла, возможно отдельно выделить параметр $a$, все остальное выражение, включая операции с коеэффициентами полинома и что там еще будет - посчитать и запомнить.
$k$ может быть довольно большим от, скажем 100, до 10000. Как вариант, можно взять вместо полинома тригонометрический ряд.
Возможно, я что-то упустил, скажите что уточнить.

 
 
 
 
Сообщение31.01.2008, 18:35 
С этого стоило начинать :)
Фактически переменная здесь получается $a$. Числа $x_i$ - параметры. В каких пределах меняются $x_i$ и $a$? Известно ли еще что-либо про них? Какова требуемая точность?

 
 
 
 
Сообщение31.01.2008, 21:01 
Gafield писал(а):
С этого стоило начинать :)

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

Gafield писал(а):
Фактически переменная здесь получается $a$. Числа $x_i$ - параметры.

Как бы да, если рассматривать задачу с точки зрения всех итераций $a_1... a_n$, но если рассматривать каждую итерацию в отдельности (заглянуть внутрь одной итерации), то все-таки $x$.

Gafield писал(а):
В каких пределах меняются $x_i$ и $a$? Известно ли еще что-либо про них? Какова требуемая точность?

Исходные $x_i$ заранее нормализуются так как нам удобнее, например на отрезке [-3.14, 3.14]. Затем аппроксимируем многочленом.
$a$ может быть любым, но известно, что $|a_{n+1}-a_n| <= b$. $b$ может экспоненциально возрастать или убывать в процессе работы алгоритма. Но лучше его не рассматривать пока. Вроде больше ничего не известно.
Точность должна стремиться к варианту как если бы мы вычисляли изначальную сумму.

 
 
 
 
Сообщение31.01.2008, 23:30 
При таких допущениях думаю, что упростить вычисление вряд ли получится. Дело в том, что сама задача сложная в том смысле, что имеется много параметров, т.е. надо учесть много информации. Даже при 10^2 слагаемых график суммы синусов на промежутке порядка нескольких сотен выглядит как какая-то случайная функция. И эту сложность просто переформулировкой не убрать, она присуща самой задаче. Скажем, при замене $x_i$ на многочлен порядка 10^4, получится интеграл от быстро осцилирующей функции на интервале [0,10^4] и существование простого ответа для него совсем не очевидно. Кроме того, в остаточном члене будут производные от многочлена в точке $x=10^4$. Получить результат с большой точностью таким образом невозможно.
В качестве примера, когда наоборот можно получить простое описание, рассмотрим ту же задачу, но при дополнительных условиях,что $x_i\in [-1,1]$ и требуется найти $a$ на отрезка [-1,1]. Разложение по формуле Тейлора даст ответ с требуемой точностью. Получается, что достаточно найти где-то десять моментов $m_j=\sum_i x_i^{2j+1}$, $j=0,1,...$. Итого: при малых $a$ можно достаточно точно описать решение, используя только несколько чисел $m_j$ (их можно найти заранее), а не сами $x_i$. То есть, количество информации, нужной для описания, невелико. Для произвольных $a$ результат существенно зависит от всех коэффициентов по отдельности, и придумать для сложной суммы другое выражение, дающее результат с той же точностью, вряд ли удастся.

 
 
 [ Сообщений: 20 ]  На страницу 1, 2  След.


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group