Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Матан v.0.1.doc
Скачиваний:
15
Добавлен:
01.04.2025
Размер:
3 Мб
Скачать
☆

6.3 Метод Ромберга

Можно вычислить приближение Симпсона по особым линейным комбинациям формул трапеций.

а b a b

T — площадь под T — площадь под

20 = 1 трапецией 21 = 2 трапециями

T =

a b a b

T — площадь под T — площадь под

22 = 4 трапециями 23 = 8 трапециями

Пусть промежуток интегрирования разбит на 2к равных частей и для этого разбиение по формуле трапеций получено значение Т0(к). Значение Т0(к) совпадают со значениями вычисляемого интеграла, если интегрируемая функция линейна, то есть f (x) является многочленом 1-й степени. По формуле:

Tm(k) = , называемой формулой Ромберга, построим следующую Т - схему:

T0(0)

T1(0)

T0(1) T2(0)

T1(1) T3(0)

T0(2) T2(1) T4(0)

T1(2) T3(1)

T0(3) T2(2)

T1(3)

T0(4)

Для интегрируемых по Риману функций все столбцы и все наклонные строки Т — схемы сходятся к искомому значению интеграла. Выпишем явные формулы для следующего фрагмента Т — схемы:

T0(0)

T1(0)

T0(1) T3(0)

T2(1)

T0(2)

1. k = 0; 2k = 20 = 1 часть, то есть (b - a). T0(0) = [f (x0) + f (x4)], так как при k = 2; 2k = 22 = 4 части xi = a + i * , i = 0, 1, 2, 3, 4.

2. T0(1) = * [f (x0) + f (x2)] + * [f (x2) + f (x4)] = [f (x0) + 2f (x2) + f (x4)]k = 1 → 2k = 21 = 2 части

3. T1(0) = = = =

=

= .

4. T0(2) =

5. T1(1) =

= = =

формула Симпсона (парабол)

6. T2(0) =

=

= -

формула Ньютона — Котеса

Задача: Известно, что

π

Определить приближённо число π, проведя для указанного интеграла 4 итерации по Ромбергу.

Дополнение 1:

3[ ] = 2

6

=

.

Так как и симметричен, то:

; ,

.

Дополнение 2. Изложим последовательность действий при решении задач методом Ромберга:

1. В качестве первого приближения вычисляется значение площади трапеции, основания которой проведены через границы промежутка интегрирования. Полученное значение заносится в матрицу приближений как:

.

2. Затем запускается цикл. На каждом его круге шаг уменьшается вдвое. На первом обороте цикла вычисляется приближение по методу трапеций из того условия, что интервалов интегрирования уже два. Полученное более точное, приближение заносится в первую строку нулевого столбца. На втором круге шаг уменьшается в четыре раза относительно первоначального, и соответственно трапеций будет просуммировано четыре. Новое приближение занесено во вторую строку. И так далее, до тех пор, пока не будет выполнено условие остановки цикла. В качестве условия остановки цикла в методе Ромберга используют критерий разности двух последних приближений. В этом случае, если разность по модулю окажется меньше заданной точности, то цикл остановится и в качестве ответа будет выдано последнее приближение.

Sub Rombeg() 'начало программы

Dim Result As Double 'задание типа параметра результата

Dim T() As Double 'задание типа параметра

Dim D As Double 'задание типа параметра длины отрезка

Dim S As Double 'задание типа параметра суммы

Dim H As Double 'задание типа параметра расстояния

Dim X As Double 'задание типа параметра х

Dim M As Double 'задание типа параметра

Dim N As Integer 'задание типа параметра

Dim I As Integer 'задание типа параметра переменной в цикле

Dim J As Integer 'задание типа параметра переменной в цикле

A = InputBox("введите нижний предел") 'диалог запроса нижнего предела

B = InputBox("введите верхний предел") 'диалог запроса верхнего предела

K = InputBox(" введите число разбиений") 'диалог запроса числа разбиений

ReDim T(1 To K + 1) 'объявление массива

D = B - A 'вычисление длины отрезка

T(1) = f(A) + f(B) / 2 'вычисление Т(1)

N = 1 'присвоение N значение 1

I = 1 'присвоение I значение 1

Do 'начало цикла

S = 0 'присвоение сумме значение 0

N = 2 * N 'увеличение N в двое

H = D / N 'вычисление расстояния

J = 1 'присвоение J значение 1

Do 'начало цикла

X = A + J * H 'вычисление х координаты

S = S + f(X) 'вычисление суммы

J = J + 2 'увеличение переменной на 2

Loop Until Not J <= N 'конец цикла с условием

T(I + 1) = (2 * S / N + T(I)) / 2 'вычисление последующего Т

M = 1 'присвоение M значение 1

J = I 'присвоение J значение I

Do 'начало цикла

M = 4 * M 'увеличение M в 4 раза

T(J) = T(J + 1) + (T(J + 1) - T(J)) / (M - 1) 'вычисление Т(J)

J = J - 1 'уменьшение J на 1

Loop Until Not J >= 1 'конец цикла с условием

I = I + 1 'увеличение I на 1

Loop Until Not I <= K 'конец цикла с условием

Result = T(1) * D 'вычисление результата

c = MsgBox(Result, 0, "Результат") 'выведение сообщения на экран

End Sub 'конец программы

Function f(X) 'объявление ф-ии

f = 4 / (1 + X * X) 'ф-ия задана уравнением

End Function 'конец объявления