Каталог решений - Простые алгоритмы численного интегрирования

Простые алгоритмы численного интегрирования

Простые алгоритмы численного интегрирования

В наличии

Представлены программы (без теории) на языке 1С8 для вычисления определенных интегралов по методам левых, правых и средних прямоугольников, методу трапеций и Симпсона. Статья может быть интересной для тех, кто не знал или подзабыл простые способы вычисления интегралов.

Категория:

Описание

Подробное изложение теоретической части алгоритмов и численного интегрирования вообще, можно найти практически в любой книге о численных методах, например — Е. А. Волков «Численные методы», ну или в Википедии -«https://ru.wikipedia.org/wiki/Численное_интегрирование». Особое внимание нужно уделить вопросам выбора узлов и шага интегрирования, обеспечения требуемой точности вычислений, а также применимости и целесообразности выбора того или другого метода.  

 

В качестве подинегральной функции рассмотрим «обычную» гладкую и непрерывную функцию (одного аргумента):

Функция Функция_1(х)
	Возврат х*х;
КонецФункции	

Так будет выглядеть вызов расчетных функций:

Процедура ВыполнитьРасчет()
	Число_шагов = 100; 	
	Х_нач 	= 0; 
	Х_кон 	= 5; 
	Сообщить("Метод левых прямоугольников	= " + РассчитатьЛевымиПрямоугольниками(Х_нач, Х_кон, Число_шагов));
	Сообщить("Метод правых прямоугольников	= " + РассчитатьПравымиПрямоугольниками(Х_нач, Х_кон, Число_шагов));
	Сообщить("Метод средних прямоугольников	= " + РассчитатьСреднимиПрямоугольниками(Х_нач, Х_кон, Число_шагов));
	Сообщить("Метод трапеций				= " + РассчитатьТрапециями(Х_нач, Х_кон, Число_шагов));
	Сообщить("Метод Симпсона				= " + РассчитатьСимпсона(Х_нач, Х_кон, Число_шагов));
КонецПроцедуры	

Таким образом, функция F(x)=x^2 интегрируется на интервале от Х_нач до Х_кон, число шагов фиксировано и равно 100 (вообще, для различных методов с целью обеспечения требуемой точности можно рассчитать минимально необходимое число шагов, но для наших ознакомительных целей берем именно фиксированное значение).

Важно также помнить, что при расчетах могут получаться числа с длинной дробной частью, работа с которыми занимает у 1С много времени и сильно тормозит вычисления. Поэтому, например, при определении функции имеет смысл вместо «Возврат F(X)» писать «Возврат Окр(F(X), 16)».

 

 

1) Метод левых прямоугольников:

Функция РассчитатьЛевымиПрямоугольниками(Х_нач, Х_кон, Число_шагов)
	Сумма = 0;
	h = (Х_кон-Х_нач)/Число_шагов;
	х = Х_нач;
	Для й=0 По Число_шагов-1 Цикл
		Сумма = Сумма + h*Функция_1(х);
		х = (х + h);
	КонецЦикла;	
	Возврат Сумма;
КонецФункции

2) Метод правых прямоугольников:

Функция РассчитатьПравымиПрямоугольниками(Х_нач, Х_кон, Число_шагов)
	Сумма = 0;
	h = (Х_кон-Х_нач)/Число_шагов;
	х = Х_кон;
	Для й=1 По Число_шагов Цикл
		Сумма = Сумма + h*Функция_1(х);
		х = (х - h);
	КонецЦикла;	
	Возврат Сумма;
КонецФункции

3) Метод средних прямоугольников:

Функция РассчитатьСреднимиПрямоугольниками(Х_нач, Х_кон, Число_шагов)
	Сумма = 0;
	h = (Х_кон-Х_нач)/Число_шагов;
	х = Х_нач;
	Для й=1 По Число_шагов Цикл
		Сумма = Сумма + Функция_1(х + 0.5*h);
		х = (х + h);
	КонецЦикла;	
	Возврат h*Сумма;
КонецФункции

4) Метод трапеций:

Функция РассчитатьТрапециями(Х_нач, Х_кон, Число_шагов)
	Сумма = 0;
	h = (Х_кон-Х_нач)/Число_шагов;
	х = Х_нач;
	Для й=0 По Число_шагов Цикл
		Если й=0 или й=Число_шагов Тогда
			Сумма = Сумма + 0.5*Функция_1(х);
		Иначе
			Сумма = Сумма + Функция_1(х);
		КонецЕсли;
		х = х + h;
	КонецЦикла;
	Возврат h*Сумма;
КонецФункции

5) Метод Симпсона:

Функция РассчитатьСимпсона(Х_нач, Х_кон, Число_шагов)
	Сумма = 0;
	h = (Х_кон-Х_нач)/Число_шагов;
	х = Х_нач;
	СуммаЧетных	= 0;
	СуммаНеЧетных = 0;
	Для й=0 По Число_шагов Цикл
		Если й=0 или й=Число_шагов Тогда
			Сумма = Сумма + Функция_1(х);
		Иначе
			Если й % 2 = 0 Тогда
				СуммаЧетных = СуммаЧетных + Функция_1(х);
			Иначе
				СуммаНеЧетных = СуммаНеЧетных + Функция_1(х);
			КонецЕсли;
		КонецЕсли;
		х = х + h;
	КонецЦикла;
	Возврат (h/3)*(Сумма + 2*СуммаЧетных + 4*СуммаНеЧетных);
КонецФункции

Итак, для рассматриваемого примера получились вот такие результаты:

Метод левых прямоугольников = 41,04375
Метод правых прямоугольников = 42,29375
Метод средних прямоугольников = 41,665625
Метод трапеций = 41,66875
Метод Симпсона = 41,6666666666666667

Точное же значение интеграла = 125/3 ~ 41,6(6). Чтож, неплохо. 

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

has been added to your cart:
Оформление заказа