Несобственный интеграл (численные методы) - VB
Формулировка задачи:
Доброго времени суток. Имеется вот такое задание :
нужно решить с использованием численных методов. Судя по по тому , что задано нормальное распределение, то решать придется методом Симпсона. Идея есть следующая...тупо по формуле просуммировать значения функции от точки d через какой-нибудь шаг (в соответствии с формулой умножать значение функции либо на 4 либо на 2 , для четного/нечетного по номеру слагаемых), но не понятно , что делать с бесконечностью....надо как-то задать конец цикла. Пробовал завязать все это на какой нибудь точности , что-то в духе разница 2-х интегралов при h и h/2 , деленная на 15 меньше заданной точности....Но , либо идея не годится, либо мозгов на реализацию не хватает....может есть какой-то альтернативный способ? Заранее спасибо.
Решение задачи: «Несобственный интеграл (численные методы)»
textual
Листинг программы
Function f(ByVal m As Double, ByVal d As Double, ByVal x As Double) As Double f = 1 / (2 * Sqrt(PI)) * Exp(-(x - m + d) ^ 2 / (2 * 0.5 ^ 2)) Return f End Function Sub Integral(ByVal m As Double, ByVal d As Double, ByVal E As Double, ByRef t As String, ByRef s As Double) Dim a, b, s1, h, x As Double Dim n, c As Integer a = 0 'нижний пределел интегрирования b = PI / 2 'верхний предел интегрирования t = "" 'строка для вывода хода решения n = 2 'кол-во разбиений h = (b - a) / n ' шаг s = (f(m, d, a) + 4 * f(m, d, (a + b) / 2) + f(m, d, b)) * (h / 3) t = (Format(h, "0.0000") & Space(5) & Format(n, "000") & Space(5) & Format(s1, "0.00000000000") _ & Space(5) & Format(s, "0.00000000000")) & vbNewLine Do n = 2 * n h = (b - a) / n s1 = s c = 4 x = a s = f(m, d, a) + f(m, d, b) For i = 1 To n - 1 x = x + h s = s + c * f(m, d, x) c = 6 - c Next s = s * (h / 3) t = t & (Format(h, "0.00000") & Space(5) & Format(n, "000") & Space(5) & Format(s1, "0.00000000000") _ & Space(5) & Format(s, "0.00000000000")) & vbNewLine Loop Until Abs((s - s1) / 15) < E ' условие окончания цикла DoLoop по оценке погрешности методом двойного просчета End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д