![]() Главная страница Случайная страница Разделы сайта АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Правило Рунге оценки погрешности
Приведем сводку квадратурных формул с остаточными членами [7]. Формула трапеций: Формула Симпсона: Рассмотрим на примере общей формулы Симпсона (6.16) правило Рунге для оценки погрешности. Пусть подынтегральная функция четырежды непрерывно дифференцируема. Тогда формула остаточного члена имеет вид:
где ξ — некоторое число из отрезка [ a, b ]. Предположим, что производная y IV(x) изменяется на этом отрезке медленно, и приближенно можно записать остаточный член в виде Отсюда получим формулу для оценки погрешности
Уточненное значение интеграла по формуле Симпсона вычисляется с учетом поправки
Для формулы трапеций также можно применить правило Рунге. Так как формула остаточного члена общей формулы трапеций может быть представлена в виде Отсюда получим формулу для оценки погрешности
Теперь для интеграла можно записать по правилу Рунге формулу трапеций с поправкой
Замечание. Здесь необходимо подчеркнуть, что описанное правило Рунге применимо только тогда, когда выполняются указанные выше условия для функции y (x) — существование производной соответствующего порядка и её ограниченность, точнее говоря, возможность приближенного представления погрешности в виде Пример 6.4. Вычислить интеграл Забиваем Сайты В ТОП КУВАЛДОЙ - Уникальные возможности от SeoHammer
Каждая ссылка анализируется по трем пакетам оценки: SEO, Трафик и SMM.
SeoHammer делает продвижение сайта прозрачным и простым занятием.
Ссылки, вечные ссылки, статьи, упоминания, пресс-релизы - используйте по максимуму потенциал SeoHammer для продвижения вашего сайта.
Что умеет делать SeoHammer
— Продвижение в один клик, интеллектуальный подбор запросов, покупка самых лучших ссылок с высокой степенью качества у лучших бирж ссылок. — Регулярная проверка качества ссылок по более чем 100 показателям и ежедневный пересчет показателей качества проекта. — Все известные форматы ссылок: арендные ссылки, вечные ссылки, публикации (упоминания, мнения, отзывы, статьи, пресс-релизы). — SeoHammer покажет, где рост или падение, а также запросы, на которые нужно обратить внимание. SeoHammer еще предоставляет технологию Буст, она ускоряет продвижение в десятки раз, а первые результаты появляются уже в течение первых 7 дней. Зарегистрироваться и Начать продвижение Решение в Excel. Используем результаты вычислений в примере 6.1. Для вычисления интеграла по формуле трапеций с разбиением отрезка [1, 2] на n = 5 частей получим таблицу 6.5. Таблица 6.5
По формуле (6.23) получим Найдем относительную погрешность этого значения Применение правила Рунге позволило уменьшить относительную погрешность со значения 0, 001 до значения 0, 0000036. Составим функции для вычисления интегралов с автоматическим выбором шага. С помощью меню «Сервис — Макроc — Редактор Visual Basic» откроем окно редактора, выполним команду «Insert — Module» и введем программы Function f(x): f = 1 / x: End Function Function Int_tr(a, b, n) s = 0: h = (b - a) / n: x = a For i = 1 To n - 1: x = x + h: s = s + f(x): Next i Int_tr = h * (s + (f(a) + f(b)) / 2) End Function Function Int_tr_eps(a, b, eps) n = 2: sh = Int_tr(a, b, n) 1 s2h = sh: n = 2 * n: sh = Int_tr(a, b, n): serr = (sh - s2h) / 3 If Abs(serr) > eps Then GoTo 1 Int_tr_eps = sh + serr End Function Введем в ячейку D 15 формулу =Int_tr_eps(1; 2; 0, 00001), получим значение 0, 693147181322587, которое имеет 8 верных знаков (точное значение интеграла 0, 693147180559945). Приведем аналогичные функции для вычисления интеграла методом Симпсона с автоматическим выбором шага: Option Explicit Function f(ByVal x) As Double f = 1 / x End Function Function Int_Simpson(ByVal a, ByVal b, ByVal n) As Double Dim s, x, h, h2 As Double Dim i As Integer s = 0: h = (b - a) / n: h2 = h * 2: x = a For i = 0 To n - 2 Step 2 s = s + f(x) + 4 * f(x + h) + f(x + h2): x = x + h2: Next i Int_Simpson = h * s / 3: End Function Function Int_Simpson_eps(ByVal a, ByVal b, ByVal eps) As Double Dim sh, s2h, serr As Double Dim n As Integer n = 4: sh = Int_Simpson(a, b, n) 1 s2h = sh: n = 2 * n: sh = Int_Simpson(a, b, n): serr = (sh - s2h) / 15 If Abs(serr) > eps Then GoTo 1 Int_Simpson_eps = sh + serr: End Function Введем в ячейку D 16 формулу =Int_Simpson_eps(1; 2; 0, 000000000001), получим результат, который совпадает с точным. Замечание. Чтобы добиться максимально возможной точности, надо в функциях использовать переменные двойной точности. Приведем программы на языке C ++ для вычисления интеграла методом Симпсона: #include < iostream.h> #include < math.h> double f(double x); typedef double (*PF)(double); double Simpson(PF f, double a, double b, const int n); double Simpson_eps(PF f, double a, double b, double eps); Сервис онлайн-записи на собственном Telegram-боте
Попробуйте сервис онлайн-записи VisitTime на основе вашего собственного Telegram-бота:— Разгрузит мастера, специалиста или компанию; — Позволит гибко управлять расписанием и загрузкой; — Разошлет оповещения о новых услугах или акциях; — Позволит принять оплату на карту/кошелек/счет; — Позволит записываться на групповые и персональные посещения; — Поможет получить от клиента отзывы о визите к вам; — Включает в себя сервис чаевых. Для новых пользователей первый месяц бесплатно. Зарегистрироваться в сервисе int main(){ double a, b, y, eps; PF pf; int n; cout < < " \n a = "; cin > > a; cout < < " \n b = "; cin > > b; cout < < " \n n = "; cin > > n; cout < < " \n eps = "; cin > > eps; pf = f; y = Simpson(pf, a, b, n); cout < < " \n n = " < < n< < " integral = " < < y; y = Simpson_eps(pf, a, b, eps); cout < < " \n eps = " < < eps< < " integral = " < < y; cout < < " \n Press any key & Enter "; cin > > a; return 0; } double f(double x){ double r; r = sin(x); return r; } double Simpson(PF f, double a, double b, const int n){ double s, h, h2, x; int i, n2; s = 0; h = (b-a)/n; h2 = h*2; x = a; n2=n/2; for (i = 0; i< n2; i++){ s = s+f(x)+4*f(x+h)+f(x+h2); x = x+h2; } s = h*s/3; return s; } double Simpson_eps(PF f, double a, double b, double eps){ typedef double (*PY)(double); PY py; double s, sh, s2h, serr; int n; n = 4; py = f; sh = Simpson(py, a, b, n); do{ s2h = sh; n = 2*n; sh = Simpson(py, a, b, n); serr = (sh-s2h)/15; }while(fabs(serr) > eps); s = sh + serr; return s; } Программа Simpson(pf, a, b, n) вычисляет интеграл по формуле Симпсона применяя деление отрезка интегрирования на n частей, а программа Приведем результат счета:
|