2014 dxdy logo

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

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


Правила форума


В этом разделе нельзя создавать новые темы.

Если Вы хотите задать новый вопрос, то не дописывайте его в существующую тему, а создайте новую в корневом разделе "Помогите решить/разобраться (М)".

Если Вы зададите новый вопрос в существующей теме, то в случае нарушения оформления или других правил форума Ваше сообщение и все ответы на него могут быть удалены без предупреждения.

Не ищите на этом форуме халяву, правила запрещают участникам публиковать готовые решения стандартных учебных задач. Автор вопроса обязан привести свои попытки решения и указать конкретные затруднения.

Обязательно просмотрите тему Правила данного раздела, иначе Ваша тема может быть удалена или перемещена в Карантин, а Вы так и не узнаете, почему.



Начать новую тему Ответить на тему
 
 Чем лучше посчитать четырехэтажный неопределенный интеграл?
Сообщение03.12.2008, 22:29 
Экс-модератор


17/06/06
5004
Учебная задачка по численным методам доехала до решения краевой задачи для не очень уж глубокомысленного уравнения $x''''(t)=f(t)$ с краевыми условиями $x(1)=x'(0)=x''(1)=x'''(0)=0$.

Ясно, что решение выписывается в виде
$$\def\d{\,\mathrm{d}}
x(t)=\int_t^1\int_0^s\int_r^1\int_0^q f(p)\d p\d q\d r\d s$$

Функция $f:[0,1]\to\mathbb{R}$ бесконечно гладкая, знакопостоянная и монотонная на $[0,1]$, и вычисляется мгновенно.

Ну, собственно, вот и интересуюсь, как нормальные люди считают такие интегралы? Пришло в голову несколько вариантов - и интересно советы послушать. То есть пробовать все методы подряд не хочется, хотя, возможно, было бы полезно.

Мои мысли в хронологическом порядке:

Первая: так же, как и предыдущую задачку из этого практикума - Рунге-Куттом, а потом пристреливаться.

Вторая: Просто прогнать четыре раза какую-нибудь квадратурную формулу.

Третья: Считать этот интеграл кратным, и шарахнуть Монте-Карлой.

Четвертая: Сочинить что-нибудь сеточное типа
$x(t_{i+2})-4x(t_{i+1})+6x(t_i)-4x(t_{i-1})+x(t_{i-2})=f(x_i)$, $i=3,\ldots,N-2$
(ну узлы, скажем, равномерные, и в этом случае я тут просто какой-то множитель забыл типа $N^{-4}$)
$x(t_N)=0$, $x(t_{N-2})-2x(t_{N-1})+x(t_N)=0$,
$x(t_2)-x(t_1)=0$, $x(t_4)-3x(t_3)+3x(t_2)-x(t_1)=0$.

Какой из методов предпочтительнее? Хотелось бы что-нибудь не очень заумное, но чтобы и точность была не совсем уж бестолковая. :roll:

 Профиль  
                  
 
 
Сообщение03.12.2008, 23:06 
Заслуженный участник


22/01/07
605
Ну, конктретно такой интеграл имело бы смысл преобразовать к виду
$$
x(t)=\int_0^1K(t,p)f(p)\, dp,
$$
где $K(t,p)$ имеет (скорее всего, но я не проверял) простой вид.
Например, если бы все условия были бы с одной стороны, то
$$
\int_0^t\int_0^s\int_0^r\int_0^q f(p)d pd qd rd s=\frac16\int_0^t(t-p)^3f(p)\, dp.
$$

 Профиль  
                  
 
 
Сообщение04.12.2008, 10:35 
Экс-модератор


17/06/06
5004
Ух ты как клёво :D

Вот что вышло:
$$x(t)=(1-t)\int_0^1\frac{1-r^2}2 f(r)\,dr-\frac{(1-t)^3}6\int_0^1f(p)\,dp+\int_t^1\frac{(s-t)^3}6f(s)\,ds$$

Ну я еще попроверяю, конечно. Прежде всего, при помощи сравнения с каким-нибудь глупым методом, который уже написан :)

То есть, фактически, надо просто посчитать несколько интегралов вида $\int z^k f(z)\,dz$. И все они разные - одни от нуля, другие от $t$. :( Но все равно приятно, что погрешность не накапливается, да?

А такие интегралы уже как-нибудь тупо считать, да? Или для них вообще уже всё известно, наверное, есть готовые формулы хорошие?

 Профиль  
                  
 
 Re: Чем лучше посчитать четырехэтажный неопределенный интегр
Сообщение04.12.2008, 13:18 
Заслуженный участник
Аватара пользователя


23/08/07
5420
Нов-ск
$h=1/N$
$x'''_{i+1}=x'''_{i}+hf(x_{i+1/2})$
$x''_{i-1}=x''_{i}-h(x'''_{i-1}+x'''_{i})/2$
$x'_{i+1}=x'_{i}+h(x''_{i+1}+x''_{i})/2$
$x_{i-1}=x_{i}-h(x'_{i-1}+x'_{i})/2$

 Профиль  
                  
 
 
Сообщение04.12.2008, 16:52 
Экс-модератор


17/06/06
5004
TOTAL, ну это ж как-то тупо-прямолинейно очень ... Это я и [почти] сам написал :) При $N=100000$ погрешность чуть ли не в третьем знаке после запятой, а время становится ощутимое. Предыдущую задачу до точности $10^{-7}$ доводил почти мгновенно, а она была сложнее (в смысле уравнение кривее) ...

 Профиль  
                  
 
 
Сообщение04.12.2008, 17:14 
Заслуженный участник
Аватара пользователя


23/08/07
5420
Нов-ск
AD писал(а):
При $N=100000$ погрешность чуть ли не в третьем знаке после запятой, а время становится ощутимое.

Ради спортивного интереса и для проверки правильности программы. Какого порядка точности получается метод? Во сколько раз уменьшается погрешность при увеличении $N$ в два раза? (Должна в 4 раза.) Не надо такие большие $N$.

И еще. Пусть этот метод кажется хуже другого из другой задачи. А если сравнивать с другим методом для этой же задачи?

 Профиль  
                  
 
 
Сообщение04.12.2008, 17:41 
Экс-модератор


17/06/06
5004
TOTAL Н-даа ... :oops: Это я, собственно, брал не средние значения, а левые или правые. Теперь при $N=5$ уже неплохо :oops:

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

Сейчас еще какой-нибудь метод напишу что-ли ...

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

Метод действительно второго порядка :) , однако в первой задаче нам велели не ниже четвертого :)

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

А правильно ли я понимаю, что погрешность на предыдущих шагах будет $\overline{\overline{o}}$ от погрешности на последнем шаге, да?

 Профиль  
                  
 
 
Сообщение04.12.2008, 17:57 
Заслуженный участник
Аватара пользователя


23/08/07
5420
Нов-ск
AD писал(а):
А правильно ли я понимаю, что погрешность на предыдущих шагах будет $\overline{\overline{o}}$ от погрешности на последнем шаге, да?

На первом шаге погрешность $O(h^2)$. Она так и остается до самого конца.
На первом шаге несложно и более высокий порядок сделать, но вот сохранить его на следующих шагах уже тяжелее. Лично я (меня не заставляют считать с таким-то порядкам) считаю, что методы второго порядка в большинстве случаев самые хорошие. Они несравненно лучше методов первого порядка, а при переходе со второго на третий улучшение уже не столь ощутимое, хотя усложнение алгоритма, наоборот, существенное.

Программируйте альтернативный более крутой метод и устраивайте между ними соревнование.

 Профиль  
                  
 
 
Сообщение04.12.2008, 20:15 
Экс-модератор


17/06/06
5004
Так, у меня некоторое непонимание. Вот у нас формула Симпсона
$$\int_{x_{2i-2}}^{x_{2i}}f(p)\,dp\sim \frac{x_{2i}-x_{2i-2}}6\bigl(f(x_{2i-2})+4f(x_{2i-1})+f(x_{2i})\bigr)$$
обещает четвертый порядок. Пишу:
Код:
// данные берутся из f1, кладутся в f2
void integrate_lr(double *f1, double *f2, long n) {
   long i,k;
   f2[0]=0.;
   for (i=1; i<=n/2; ++i) {
      f2[i]=f2[i-1]+(f1[2*i-2]+4.*f1[2*i-1]+f1[2*i])/(double)(3*(n-1));
   }
}
Запускаю - порядок явно как будто первый. Че-то я не так пишу или так вообще нельзя?

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

Ну, ладно, надеюсь, дальше сам разберусь, поотлаживаю еще.

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

Короче, запрогал методом Gafieldа в форме меня, то есть по формуле
Цитата:
$$x(t)=(1-t)\int_0^1\frac{1-r^2}2 f(r)\,dr-\frac{(1-t)^3}6\int_0^1f(p)\,dp+\int_t^1\frac{(s-t)^3}6f(s)\,ds$$
, считая четыре однократных интеграла $\int z^kf(z)\,dz$, $k=0,1,2,3$, Рунге-Куттом 6-го порядка на шаге (то есть пятого в целом). Ответ сошелся :D.

То есть всем спасибо, буду просветляться дальше.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group