Вопрос № 36. Численное интегрирование функций методом Симпсона (парабол). Оценка точности метода. Привести примеры.
1. Разбиваем отрезок [a; b] на n равных частей (n обязательно чётное!).
2. Находим шаг интегрирования. h = (b – a) / n
3. Наносим на ось Ох точки разбиения. x0 = a; x1 = a + h; x2 = a + 2h….xn = b
4. Из этих точек разбиения проводим перпендикуляр.
5. Проводим параболу через [f(x0); f(x2)], далее через [f(x2); f(x4)] и т.д.
6. x0∫x2f(x)dx = h/3 (f(x0) + 4f(x1) + f(x2))
x2∫x4f(x)dx = h/3 (f(x2) + 4f(x3) + f(x4))
x4∫x6f(x)dx = h/3 (f(x4) + 4f(x5) + f(x6))
x0∫x6f(x)dx = h/3 (f(a) + 4f(x1) + 2f(x2) + 4f(x3) + 2f(x4) + 4f(x5) + f(b))
c = 4
c = 2
a∫bf(x)dx = h/3 (f(a) + f(b) + c∑i=1n-1f(xi), где x0 = a, x1 = a + h и т.п.
a∫bf(x)dx = h/3 (f(a) + f(b) + c∑i=1n-1f(a + i•h)
c = 4 - формула для метода Симпсона.
c = 2
Однако одно приближенное значение не позволяет адекватно оценить точность интеграла. Поэтому необходимо найти второе приближённое значение интеграла. Для этого увеличим количество разбиений интервала [a; b] в 2 раза, т.е. n = 2n, в результате чего шаг h становится меньше в 2раза и вычисляется новое значение. Допустим, что S2 – второе приближённое значение, а S1 – первое. Проверяется условие |S2-S1| < ε. Если условие не выполняется, тогда на каждом шаге значение S1 считается предыдущим приближением, т.е. S1 присваивает S2 (S1 = S2), а S2 – последующим.
Итерационный процесс удвоения n и вычисление S2 продолжается до тех пор, пока |S2 – S1| < ε.
Метод Симпсона является самым точным методом, т.к. парабола на каждом интервале почти повторяет кривую подынтегральной ф-ции, на каждом интервале определяются новые коэффициенты a, b, c.
Const eps = 1E – 4
Function F(x As Double) As Double
F = sqr(1 – ¼ * (sin(x))^2)
End Function
Sub Simpson ( a As Double, b As Double, n As Integer, S2 As Double)
Dim S1 As Double
S2 = 0
Cells(1, 1) = “пред. зн. S1”
Cells(1, 3) = “посл. зн. S2”
Cells(1, 5) = “n”
p = 2
Do
h = (b - a) / n
S1 = S2
S2 = 0
c = 1
For i = 1 To n-1
S2 = S2 + F(a + i*h)*(c+3)
c = -c
Next i
S2 = h/3*(F(a) + F(b) + S2)
Cells(p, 1) = S1
Cells(p, 3) = S2
Cells(p, 5) = n
p = p + 1
n = 2*n
Loop Until Abs(S2 – S1) < eps
End Sub
Sub My_Pr()
Dim a As Double, b As Double, n As Integer, S2 As Double
a = 0
b = 1.57
n = 6
Simpson a, b, n, S2
Cells(20, 1) = “оконч. сумма = ” & Format (S2, “0.0000”)
End Sub
Вопрос № 36. Численное интегрирование функций методом Симпсона (парабо
Страница: 1
Сообщений 1 страница 1 из 1
Поделиться12009-11-19 13:14:58
Страница: 1