|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Лабораторная работа № 4. ИССЛЕДОВАНИЕ МЕТОДОВ ЧИСЛЕННОГО ИНТЕГРИРОВАНИЯ. Постановка задачи №2.Лабораторная работа № 4 ИССЛЕДОВАНИЕ МЕТОДОВ ЧИСЛЕННОГО ИНТЕГРИРОВАНИЯ Выполнила: Ванкова Ю. Группа: 84-03 Вариант №2
Постановка задачи №1. 1. С целью исследования формул численного интегрирования вычислите определенный интеграл от функции f(x) на отрезке x Є [a, b], а также для «осциллирующих» функций f(x) + cos10x и f(x) + cos100x на том же отрезке xЄ [a, b] на равномерной сетке. Вид функции f(x):
a=0, b=1. В работе используйте формулы: прямоугольников, трапеций, Симпсона. 2.Краткие сведения по численному интегрированию: a). Формула трапеций: Оценка погрешности: б). Формула Симпсона: Оценка погрешности: в). Формула прямоугольников: Оценка погрешности: 3.Точное значение интеграла: I= = = 0,693147180559945 I= +cos(10x)) = = 0,638745069471008 I= +cos(100x)) = = 0,688083524148848 4.Метод трапеции:
Метод прямоугольников:
Метод Симпсона:
Вывод:Методы трапеции и прямоугольников имеют 2-й порядок погрешности, а метод Симпсона 4-й. Постановка задачи №2. Реализовать и исследовать метод адаптивной квадратуры.
α=0,84
Рассмотрим несколько графиков зависимости g(x) и Т(х) при числе разбиений интервала равном 40. При меньшем разбиении графики для Т(х) будут аналогичны, а функция g(x) будет колебаться с большей амплитудой например как на этом рисунке: Графики при ε=0,1 Графики при ε=0,002
Графики при ε=0,0001
При уменьшении ε число рекурсий увеличивается. Точность вычисления интеграла этим методом находится в окрестности ε.
double VichInt(double a,double b,double x, double[] A,double[] B,double alfa, double eps,int iter, double met) { double I, I1, I2, IR1, IR2; double c=(a+b)/2.0; I=G(a, b, x, A, B, alfa, met); I1=G(a, c, x, A, B, alfa, met); I2=G(c, b, x, A, B, alfa, met); double pv = Math.Abs(I - I1 - I2); iter++; if (pv < eps) { return I; } else { IR1= VichInt (a,c,x, A,B,alfa, eps/2, iter, met); IR2= VichInt (c,b,x, A,B,alfa, eps/2, iter, met); return IR1+IR2; }}
static public double G(double a, double b, double x, double[] A, double[] B, double alfa, double met) { double m=0; if ( met == 1.0) m= (f(a, x, A, B, alfa)+f(b, x, A, B, alfa))*(Math.Abs(b - a))/2; if ( met == 2.0) m= (f((a + b) / 2, x, A, B, alfa)) * (Math.Abs(b - a)); if ( met == 3.0) m= (f(a, x, A, B, alfa) + f(b, x, A, B, alfa) + 4 * f(a + Math.Abs(b - a) / 2, x, A, B, alfa)) * (Math.Abs(b - a)) / 6; return m; }
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|