GRANDEATH
39 / 39 / 1
Регистрация: 13.09.2009
Сообщений: 108
|
||||||
#1 | ||||||
Вычисление интеграла - C++08.10.2009, 21:35. Просмотров 4638. Ответов 24
Метки нет Все метки)
(
Считаю интеграл на промедутке от -1 до 3... Интеграл a*a*a*a. Точность вычисления 0.00001... Код выполняется 10-12 секунд. Это нормально или можно оптимизировать? Метод вычисления прямоугольники или трапеции ( в принципе без разницы.. И там и там где-то 10 сек. ) На других функциях ( y = sin x, y = x) менее чем за 150 миллисекунд. Что можете сказать? Приложу код на С++, но это не важно, важен алгоритм...
Код
0
|
|
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
|
08.10.2009, 21:35 |
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Вычисление интеграла (C++):
24
Вычисление интеграла - C++ Вычисление интеграла - C++ вычисление интеграла - C++ Вычисление интеграла - C++ Вычисление интеграла - C++ Вычисление определенного интеграла. - C++ |
GRANDEATH
39 / 39 / 1
Регистрация: 13.09.2009
Сообщений: 108
|
|
10.10.2009, 14:19 [ТС] | #16 |
Спасибо за код, но она все равно считает не 2 секудны..У меня тоже 11 шагов.... Начальное дельта... Ты думаешь его стоит сделать поменьше?
Уменьшил до 0.000001... Хуже стало.. Увеличил - никак.. Практически все тоже..
0
|
odip
![]() 7161 / 3223 / 58
Регистрация: 17.06.2009
Сообщений: 14,164
|
|
10.10.2009, 14:24 | #17 |
Начальное не влияет. Все время счета уходит на маленькие delta ! Честно говоря не знаю что делать. Пробовал делать delta*= 0.6; delta*= 0.7; Тогда вообще за 0 сек считает. Но подбирать delta для каждой задачи это как-то странно ![]() Суть в том, что мы имеем плохую сходимость. И кривой метод. Думаю можно ничего не делать - если объяснишь почему медленно считает ![]() Кстати возможно что метод трапеций будет лучше.
1
|
GRANDEATH
39 / 39 / 1
Регистрация: 13.09.2009
Сообщений: 108
|
|
10.10.2009, 14:34 [ТС] | #18 |
Я вот тоже думал что в сходимости проблема... Такое предчувствие, что надо было задавать уменьшение в зависимости от разницы между fabs(S1 - S2) и eps... Не да ладно... У меня код выполняется 4 секунды... Трапеции вроде тоже не лучше... Ай нет... Хуже... По моему начальному коду - первый метод - 3.8 сек... Трапеции (2-й метод) 7.5 секунд.. Ума не приложу, где подвох...
0
|
odip
![]() 7161 / 3223 / 58
Регистрация: 17.06.2009
Сообщений: 14,164
|
|
10.10.2009, 14:59 | #19 |
http://ru.wikipedia.org/wiki/Численное_интегрирование
Тут написано что все плохо. И есть другие методы - лучшей точности при том же кол-ве вычислений f(x) ! Но если тебе нужно считать именно заданными методами (прямоугольников и трапеций) - то ничего сделать нельзя.
1
|
GRANDEATH
39 / 39 / 1
Регистрация: 13.09.2009
Сообщений: 108
|
|
10.10.2009, 15:03 [ТС] | #20 |
Ну вообщем понятно)) Спс за разьяснения. По крайней мере будет уверенность в том что написал нормально)))
![]()
0
|
Sonnick
0 / 0 / 0
Регистрация: 18.11.2015
|
||||||
27.10.2009, 16:59 | #21 | |||||
люди плиз помогите, нужно сделать прогу чтоб решала интеграл от синуса, косинуса и x в любой степени, и хотя бы 2 методами(прописать чтоб выбрать метод) трапеции и Гаусса, мне дали текст карявой проги пытался исправить(с иксом не правильно высчитывает), половину проблем убрал, но не могу понять по какому он методу сейчас считает,
0
|
GRANDEATH
39 / 39 / 1
Регистрация: 13.09.2009
Сообщений: 108
|
|
27.10.2009, 20:35 [ТС] | #22 |
У меня - все считает...4 функции, каждая двумя методами. Немного переделай. И все) Код я выкладывал. См эту тему стр 2 вроде..
0
|
Sonnick
0 / 0 / 0
Регистрация: 18.11.2015
|
|
27.10.2009, 20:42 | #23 |
а чего переделать?)))я имею ввиду что именно?)
0
|
GRANDEATH
39 / 39 / 1
Регистрация: 13.09.2009
Сообщений: 108
|
|||||||||||||||||||||||||||||||
27.10.2009, 21:17 [ТС] | #24 | ||||||||||||||||||||||||||||||
Добавлено через 4 минуты
то есть пусть надо найти интеграл от y = x*x. В первой
0
|
DevilVergil
0 / 0 / 0
Регистрация: 27.03.2010
Сообщений: 1
|
|
31.03.2010, 01:03 | #25 |
GRANDEATH, в принципе, выполнение кода может занять 10-12 сек., в зависимости от того, как написать функцию. Хочешь оптимизировать - попробуй поменять класс памяти для наиболее значимых элементов, но при такой точности...Ведь обращение идет не к одной функции. При твоем подходе вряд ли что то поможет, нужно коренным образом перестроить программу.
0
|
31.03.2010, 01:03 | |
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
|
31.03.2010, 01:03 |
Привет! Вот еще темы с ответами:
25
Вычисление определенного интеграла! - C++ Вычисление интеграла и табуляция - C++ Вычисление значения интеграла - C++
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |