Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VB-для курсового проектирования4.doc
Скачиваний:
16
Добавлен:
23.08.2019
Размер:
2.36 Mб
Скачать

1.2. Вычисление определенных интегралов

Цель работы: изучение методов численного интегрирования функций с заданными пределами и приобретение практических навыков по реализации их на ЭВМ.

1.2.1. Теоретическая часть

  • Алгоритм вычисления определенного интеграла методом Симпсона с переменным шагом интегрирования.

    • Разбивается отрезок интегрирования на 2n равных частей с шагом h=(b-a)/(2n).

    • На каждом отрезке, состоящих из трех точек на интервалах [x0,x2], [x2,x4],…[x2n-1,x2n], подынтегральная функция f(x) заменяется параболой в виде интерполяционной формулы Ньютона: .

    • Суммируя интервалы, получим , где f0 =f(a); f2n = f(b); fi - значение функции внутри отрезка.

    • Затем шаг интегрирования h уменьшается вдвое и производится оценка точности вычислений R двух последних циклов вычислений сумм площадей, которая сравнивается с величиной ε по условию R=|S2n-Sn|/15<ε.

    • Процесс вычисления площадей повторяется, если R будет ложно.

  • Алгоритм вычисления определенного интеграла методом трапеций с переменным шагом интегрирования.

    • Разбивается отрезок интегрирования на n равных частей с шагом h=(b-a)/n.

    • На каждом отрезке подынтегральной функции заменяется ломаными линиями, и вычисляются площади трапеций. Для вычисления интеграла используется формула .

    • Затем шаг интегрирования h уменьшается вдвое, и количество шагов увеличивается вдвое.

    • Производится оценка точности вычислений R двух последних циклов вычислений сумм площадей, которая сравнивается с величиной ε по условию R=|S2n-Sn|/3<ε.

    • Процесс вычисления площадей повторяется, если R будет ложно.

1.2.2. Практическая часть

Постановка задачи. Вычислить значение определенного интеграла методом Симпсона и трапеций с точностью и по формуле Ньютона - Лейбница y=F(b)-F(a), где .

    • Программный код вычисления определенного интеграла методом Симпсона.

Function F(x As Single) As Single

F = Sin(x)

End Function

Function FF(x As Single) As Single

FF = -Cos(x)

End Function

Private Sub Form_Load()

Dim ss As String

Caption = "Метод Симпсона"

a! = InputBox("введите левую границу интеграла",,0)

b! = InputBox("введите правую границу интеграла",,3.1415926)

e! = InputBox("введите погрешность",,0.000001)

n& = InputBox("введите количество шагов",,20)

pf! = FF(b) - FF(a)

i1! = 0 : i2! = 1

p! = (F(a) - F(b)) / 2

h! = (b - a) / (2 * n)

Do While Abs(i2 - i1)/15 > e

x! = a + h

s1! = 0 : s2! = 0

Do While x < b

s1 = s1 + F(x)

s2 = s2 + F(x + h)

x = x + 2 * h

Loop

i1 = i2

i2 = 2 * h / 3 * (p + 2 * s1 + s2)

h = h / 2

ss = ss & Format(i2, "#0.00000000") & vbCrLf

Loop

Text1 = ss & vbCrLf & "Integral = " & Format(i2, "#0.00000000") & _

vbCrLf & "Первообразная = " & Format(pf, "#0.00000000")

End Sub

Рис.4

    • Программный код вычисления определенного интеграла методом трапеций.

Function F(x As Single) As Single

F = Sin(x)

End Function

Function FF(x As Single) As Single

FF = -Cos(x)

End Function

Private Sub Form_Load()

Dim ss As String

Caption = "Метод трапеций"

a! = InputBox("введите левую границу интеграла",,0)

b! = InputBox("введите правую границу интеграла",,3.1415926)

e! = InputBox("введите погрешность",,0.00001)

n& = InputBox("введите количество шагов",,20)

i1! = 0 : i2! = 1 ‘ Начальные значения интегралов

y

Рис.5

0! = F(a)/2 : yn! = F(b)/2

h! = (b - a) / n

Do While Abs(i2 - i1)/3> e

x! = a

y! = 0

For i& = 1 To n - 1

x! = x + h

y! = y + F(x)

Next i

i1 = i2

i2 = h * (y + y0 + yn)

h = h / 2 : n = n * 2

ss = ss & Format(i2, "#0.00000000") & vbCrLf

Loop

ss = ss & vbCrLf & "Integral = " & Format(i2, "#0.0000000")

Text1 = ss & vbCrLf & "Первообразная = " & _

Format(FF(b) - FF(a), "#0.0000000")

End Sub

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]