2014 dxdy logo

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

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


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


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

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

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

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

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



Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Условие остановки метода Симпсона
Сообщение09.11.2009, 00:59 


06/11/09
35
Каир, но родом из России
Здравствуйте.

Я пишу программу, в которой необходимо интегрирование. Я решил использовать метод Симпсона. Взять четвертую( или третью, если нет четвертой) производную от подынтегральной функции не представляется возможным. Поэтому нужен другой способ проверки точности приближения. В одном из источников нашел следующий метод: если $|I(h) - I(h/2)| < 15*eps/16$, где $I(h) $ - это приближенное значение интеграла, вычисленного с использованием шага h, то шаг h подходит. В противном случае уменьшаем шаг вдвое... Это назвали методом Рунге. В моем случае, такой способ вызывает переполнение памяти. Есть ли еще способ?

 Профиль  
                  
 
 Re: Условие остановки метода Симпсона
Сообщение09.11.2009, 01:11 
Заслуженный участник


09/08/09
3438
С.Петербург
Sayid в сообщении #259916 писал(а):
В моем случае, такой способ вызывает переполнение памяти.
Извините, это как?
Что в методе Симпсона может вызывать переполнение памяти? Там же динамической памяти вообще не надо, насколько я помню.
Вы на каком языке пишите?

 Профиль  
                  
 
 Re: Условие остановки метода Симпсона
Сообщение09.11.2009, 01:28 


06/11/09
35
Каир, но родом из России
Как это ни странно, я пишу на Java. В этом языке вообще переполнение памяти редкость =). Оно вызвано следующим - отрезок разбивается на такое большое число узлов (порядка 300 000), что размер "динамического массива" для значений функции в этих узлах превышает всякие допустимые размеры (собственно он, конечно, имеет такой же размер, но вот тип long очень тяжеловесен).

 Профиль  
                  
 
 Re: Условие остановки метода Симпсона
Сообщение09.11.2009, 01:32 
Заслуженный участник
Аватара пользователя


06/10/08
6422
Sayid в сообщении #259926 писал(а):
Как это ни странно, я пишу на Java. В этом языке вообще переполнение памяти редкость =). Оно вызвано следующим - отрезок разбивается на такое большое число узлов (порядка 300 000), что размер "динамического массива" для значений функции в этих узлах превышает всякие допустимые размеры (собственно он, конечно, имеет такой же размер, но вот тип long очень тяжеловесен).

Зачем нужен этот массив?
Сумму с вдвое меньшим шагом можно пересчитывать из исходной суммы, используя O(1) памяти, вычисляя эти значения "на лету".

 Профиль  
                  
 
 Re: Условие остановки метода Симпсона
Сообщение09.11.2009, 01:37 


06/11/09
35
Каир, но родом из России
хорошо, Вы не могли сказать, как это сделать?

 Профиль  
                  
 
 Re: Условие остановки метода Симпсона
Сообщение09.11.2009, 01:37 
Заслуженный участник


09/08/09
3438
С.Петербург
Xaositect в сообщении #259929 писал(а):
Сумму с вдвое меньшим шагом можно пересчитывать из исходной суммы, используя O(1) памяти, вычисляя эти значения "на лету".
И исходную сумму можно считать, используя O(1) памяти, вычисляя значения интегрируемой функции на лету.
Или там специфика подинтегральной функцией какая-то?

 Профиль  
                  
 
 Re: Условие остановки метода Симпсона
Сообщение09.11.2009, 01:38 
Заслуженный участник
Аватара пользователя


06/10/08
6422
Это будет выглядеть примерно так:
$S = f(x_0) + 4S_{odd} + 2S_{even} + f(x_N)$ - это формула Симпсона
$S_{odd,\frac{h}{2}}$ вычисляем как $\sum_{i=0}^{N-1} f(x_{2*i+1})$ циклом.
а $S_{even,\frac{h}{2}} = S_{odd,h} + S_{even, h}$

-- Пн ноя 09, 2009 01:39:03 --

Maslov в сообщении #259931 писал(а):
И исходную сумму можно считать, используя O(1) памяти, вычисляя значения интегрируемой функции на лету.Или там специфика подинтегральной функцией какая-то?

Ну я про переход от одного шага к вдвое меньшему.

 Профиль  
                  
 
 Re: Условие остановки метода Симпсона
Сообщение09.11.2009, 01:47 


06/11/09
35
Каир, но родом из России
Спасибо, преобразование я учту.

Очень странно, что с таким огромным числом шагов сходится, даже при очень малой точности вычислений - $eps = 0.001$. Программу я проверял и перепроверял. Ошибки не вижу. Правильный ли это критерий остановки?

 Профиль  
                  
 
 Re: Условие остановки метода Симпсона
Сообщение09.11.2009, 01:55 
Заслуженный участник


09/08/09
3438
С.Петербург
Sayid в сообщении #259934 писал(а):
с таким огромным числом шагов сходится, даже при очень малой точности вычислений - $eps = 0.001$

У Вас же абсолютная точность в формуле останова, поэтому ничего нельзя сказать в отношении того, много это $eps = 0.001$ или мало. Значение интеграла-то какое получается?

 Профиль  
                  
 
 Re: Условие остановки метода Симпсона
Сообщение09.11.2009, 01:57 


06/11/09
35
Каир, но родом из России
значение порядка $0.32.......$

-- Пн ноя 09, 2009 02:03:24 --

 Профиль  
                  
 
 Re: Условие остановки метода Симпсона
Сообщение09.11.2009, 02:03 
Заслуженный участник


09/08/09
3438
С.Петербург
С таким огромным количеством шагов точность вычисления интеграла должна быть вполне приличной, поэтому мне кажется довольно естественным, что её оказывается достаточно для того, чтобы обеспечить такой "нетребовательный" критерий останова.

 Профиль  
                  
 
 Re: Условие остановки метода Симпсона
Сообщение09.11.2009, 02:04 


06/11/09
35
Каир, но родом из России
вообще мне нужно реализовать метод Ритца для решения ОДУ второго порядка. Координатная система такова: $(1-x^2)*Pn(x) $,где $Pn(x)$ - это многочлен Якоби (1,1). Там вылазит энергетическое скалярное произведение. (http://www.math.spbu.ru/user/pan/Page3-8.htm) Вот как раз там мне и нужно интегрировать. И для каждого узла я перестраиваю эти несчастные многочлены Якоби. Так что процесс весьма и весьма трудоемкий!

 Профиль  
                  
 
 Re: Условие остановки метода Симпсона
Сообщение09.11.2009, 07:45 
Заслуженный участник


11/05/08
32166
Ну, 300 000 -- это в любом случае многовато, машинная точность должна исчерпаться тысячах где-то на пятнадцати. Но главное не в этом. Зачем такая точность интегрирования, если метод Ритца сам по себе -- груб?

 Профиль  
                  
 
 Re: Условие остановки метода Симпсона
Сообщение09.11.2009, 12:11 


06/11/09
35
Каир, но родом из России
Почему груб? Он ведь дает точность до 4 порядка. Не метод Гаусса, конечно, но ведь и не метод прямоугольников.

А какую точность посоветовали бы Вы? И почему?

 Профиль  
                  
 
 Re: Условие остановки метода Симпсона
Сообщение09.11.2009, 12:28 
Заслуженный участник
Аватара пользователя


23/08/07
5420
Нов-ск
Sayid в сообщении #259934 писал(а):
Очень странно, что с таким огромным числом шагов сходится, даже при очень малой точности вычислений - $eps = 0.001$.
Под малой точностью подразумеваете большое $\varepsilon$ или маленькое?
Метод симпсона обычно сходится с четвертым порядком (може быстрее, может медленнее). Какие результаты и на сколько они отличаются при разбиении на 20 и 40 подынтервалов? Откуда токое огромное число шагов 300000?

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 22 ]  На страницу 1, 2  След.

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



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

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


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

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