powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Численное интегрирование
25 сообщений из 62, страница 1 из 3
Численное интегрирование
    #38651604
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте.
Ниже приведён мой кусок кода. Прежде чем программировать дальше, прокомментируйте некоторые моменты, пожалуйста.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
double integrand(double x)//подынтегральная функция
{
	return x*x*x;//Есть смысл сделать эту функций inline-функцией,или это произойдёт автоматически и не стоит заморачиваться ?
}
double a = 1.0;
double b = 3.0;
int N = 1000000000;//10^9, ~71 секунда
double tau = (b - a) / N;
double res = 0;

int main(int argc,char** argv)
{
	for (double i = a; i < b; i += tau)//правда что раньше инкрементом могло быть только целое число ?
	{
		//printf("%f \n", i);//как сильно он замедляет работу
		res += integrand(i);
	}
	res = res*tau;
	printf("integral calculated by rectangles= %f \n", res);
	return 0;
}



Очевидно, данный кусок кода подходит только для непрерывных функций неотрицательных на [a,b]. Меня пока больше волнует три вопроса:
1. Если смысл делать функцию double integrand(double ) inline функцией ?
2. Вероятно есть смысл написать функцию для вычисления интегралов, которая будет принимать другую функцию. Разобрать указатели на функции для этого ?
3. Как мне ускорить эту программу? 70 секунд очень много(1 вопрос из этих соображений).
...
Рейтинг: 0 / 0
Численное интегрирование
    #38651606
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да, это метод прямоугольников
...
Рейтинг: 0 / 0
Численное интегрирование
    #38651607
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Нет. Вообще забудь про inline модификатор. Он свое уже отжил.
2. ээээ ..... э?
3. Математикой.
...
Рейтинг: 0 / 0
Численное интегрирование
    #38651611
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl 3. Математикой.
меня интересует данный конкретный алгоритм. То есть никак уже не ускоришь ?
...
Рейтинг: 0 / 0
Численное интегрирование
    #38651613
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercuryWhite Owl 3. Математикой.
меня интересует данный конкретный алгоритм. То есть никак уже не ускоришь ?
Если только распараллелить. Запустить столько потоков, сколько ядер у твоего процессора.
...
Рейтинг: 0 / 0
Численное интегрирование
    #38651645
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl 2. ээээ ..... э?
Вроде-бы сделал, разобрался немного. Так лучше, правда ?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
double f(double x)//подынтегральная функция
{
	return x*x*x;//Есть смысл сделать эту функций inline-функцией,или это произойдёт автоматически и не стоит заморачиваться ?
}

double int_by_rec(double(*integrable_function)(double), double a, double b, int nunmber_of_segments)
{
	double res = 0;
	double tau = (b - a) / nunmber_of_segments;
	for (double i = a; i < b; i += tau)
	{
		res += (*integrable_function)(i);
	}
	res *= tau;
	return res;
}

int main(int argc,char** argv)
{
	printf("integral calculated by rectangles= %f \n", int_by_rec(f,1.0,3.0,1000000000));
	return 0;
}



Dima T Если только распараллелить. Запустить столько потоков, сколько ядер у твоего процессора.

Не очень с этим знаком, пока не буду туда лезть. И ядер у меня очень мало(одно и два, на разных машинах), а ноутбук вообще раз в два дня показывает синий экран :D
...
Рейтинг: 0 / 0
Численное интегрирование
    #38651648
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
double(*integrable_function)(double), 


если я не ошибся, то очень красивый синтаксис =^_^=
...
Рейтинг: 0 / 0
Численное интегрирование
    #38651684
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercury,

на сколько я смутно помню, nunmber_of_segments надо выбирать динамически, задавая точность интегрирования. nunmber_of_segments увеличивается до тех пор, пока не будет достигнута нужная точность.
...
Рейтинг: 0 / 0
Численное интегрирование
    #38651894
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Икс в кубе прекрасно интегрируется аналитически. Поэтому задача - вырождается.

Вот если-бы в integrand стояла более сложная и интересная фукнция - ее можно
было-бы покрутить на предмет распараллеливаний или табличных вычислений.
А так - ... одни каллбэки.
...
Рейтинг: 0 / 0
Численное интегрирование
    #38651991
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercury
Код: plaintext
1.
double int_by_rec(double(*integrable_function)(double), double a, double b, int nunmber_of_segments)


Лучше так:
Код: plaintext
1.
2.
typedef double integrable_function_t(double);
double int_by_rec(integrable_function_t* fn, double a, double b, int nunmber_of_segments)
...
Рейтинг: 0 / 0
Численное интегрирование
    #38652190
ДаВот
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SashaMercury, итого ваш компик показывает производительность в ~50Мфлопов. Это селерон 300МНz? Нынешние вурдалаки якобы показывают десятки гигафлоп вообще.
...
Рейтинг: 0 / 0
Численное интегрирование
    #38652224
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДаВотSashaMercury, итого ваш компик показывает производительность в ~50Мфлопов. Это селерон 300МНz? Нынешние вурдалаки якобы показывают десятки гигафлоп вообще.
Затестил код из первого поста на i7 3.5 ГГц (MSVC 2008) - 19 сек в дебаге, 1 сек. в релизе. Если в дебаге собирает, то не такой уж и тормозной.

PS SashaMercury, вот тебе еще один способ ускорить :)
...
Рейтинг: 0 / 0
Численное интегрирование
    #38652255
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv на сколько я смутно помню, nunmber_of_segments надо выбирать динамически, задавая точность интегрирования. nunmber_of_segments увеличивается до тех пор, пока не будет достигнута нужная точность.

Вероятно я вас не так понимаю, но данный метод, с математической точки зрения имеет погрешность O(tau^2)

mayton Икс в кубе прекрасно интегрируется аналитически. Поэтому задача - вырождается.

Вот если-бы в integrand стояла более сложная и интересная фукнция - ее можно
было-бы покрутить на предмет распараллеливаний или табличных вычислений.
А так - ... одни каллбэки.

Что значит "вырождается" в данном конкретном случае?

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

Dima T , проверю релиз завтра. Уже гонят (

Спасибо всем C:
...
Рейтинг: 0 / 0
Численное интегрирование
    #38652256
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercuryНе очень с этим знаком, пока не буду туда лезть. И ядер у меня очень мало(одно и два, на разных машинах), а ноутбук вообще раз в два дня показывает синий экран :D
Как вариант - перегревается. Купи подставку с кулером. И включи отладочную информанию на BSOD.
Тогда можно будет понять почему Windows ушел в ребут.
...
Рейтинг: 0 / 0
Численное интегрирование
    #38652270
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonКак вариант - перегревается. Купи подставку с кулером
Вполне возможно, особенно если подобные проги запускать.
Лучше разобрать и продуть радиаторы, там столько всего интересного скапливается.

Для начала можешь просто поставить какую-нибудь прогу, которая температуру проца покажет.
...
Рейтинг: 0 / 0
Численное интегрирование
    #38652320
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 26.05.2014 17:18, SashaMercury wrote:

> Вероятно я вас не так понимаю, но данный метод, с математической точки
> зрения имеет погрешность O(tau^2)

Кажется, ты глубоко неправ.
Или действительно не понимаешь.
O() то тут при чём?

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


Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Численное интегрирование
    #38652322
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересно можно-ли функцию Дирихле численно проинтегрировать
...
Рейтинг: 0 / 0
Численное интегрирование
    #38652353
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А компьютеры уже научились представлять иррациональные числа?
...
Рейтинг: 0 / 0
Численное интегрирование
    #38652437
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov, зри в кореть.

Код: plaintext
1.
иррациональное число == NOT рациональное



а рациональное представимо в виде дроби m/n из целых.

Так-то.
...
Рейтинг: 0 / 0
Численное интегрирование
    #38652492
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хорошо, перефразирую.
Иррациональные числа представимы в виде бесконечных непериодических десятичных дробей.
Уже появились компьютеры бесконечной разрядности?
...
Рейтинг: 0 / 0
Численное интегрирование
    #38652504
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovУже появились компьютеры бесконечной разрядности?
Вопрос к математикам и физикам. Как только появится практическое применение бесконечной разрядности - так и компьютеры появятся. Сегодня они просто не нужны.
...
Рейтинг: 0 / 0
Численное интегрирование
    #38652534
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LOL
...
Рейтинг: 0 / 0
Численное интегрирование
    #38652553
Фотография iv_an_ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovУже появились компьютеры бесконечной разрядности?В muLISP-е и иже с ним вещественные числа представляются парой числитель/знаменатель, точность вычислений можно регулировать, ограничивая число байт в знаменателе. Соответственно, часто можно узнать, врёт ли метод из-за ошибок округления, банально прогнав задачу пару-тройку раз с разными точностями :)
...
Рейтинг: 0 / 0
Численное интегрирование
    #38652563
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovА компьютеры уже научились представлять иррациональные числа?
что ты понимаешь под представлением?
"sqrt(2)" - чем не представление?
...
Рейтинг: 0 / 0
Численное интегрирование
    #38652575
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovХорошо, перефразирую.
Иррациональные числа представимы в виде бесконечных непериодических десятичных дробей.
Уже появились компьютеры бесконечной разрядности?
В тему

http://www.sql.ru/forum/1001013-1/zadachka-s-drobyami?hl=rational
...
Рейтинг: 0 / 0
25 сообщений из 62, страница 1 из 3
Форумы / C++ [игнор отключен] [закрыт для гостей] / Численное интегрирование
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]