Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа(интегралы).docx
Скачиваний:
65
Добавлен:
05.12.2018
Размер:
221.65 Кб
Скачать

Пример вычисления определенного интеграла в среде mathcad

  1. Вычисление определенного интеграла с помощью встроенной функции

  1. Программный блок, реализующий вычисление приближенного значения определенного интеграла. Параметр N определяет вид квадратурной формулы:

  • 1 - формула Симпсона;

  • 2 - формула трапеций;

  • 3 - формула средних прямоугольников;

  • 4- формула правых прямоугольников;

  • 5 - формула левых прямоугольников.

  1. Вычисление апостериорной погрешности:

  • g(u) – подынтегральная функция;

  • x – вектор узловых точек;

  • k – порядок метода N.

Программный блок для определения значения k-й производной функции g(u) в узловых точках:

Далее приведен фрагмент вычисления апостериорной погрешности – апостериорная погрешность для формулы средних прямоугольников, остальную часть программного блока составляют по аналогии:

  1. Априорные погрешности приближенного вычисления определенного интеграла:

  • g(x) – подынтегральная функция;

  • x – узловые точки;

  • k – порядок метода N.

Пример вычисления определенного интеграла в среде matlab

  1. Вычисление определенного интеграла с помощью встроенной функции:

>> syms x

>> I = double(int((x^2-6.5)/(x^3+sin(7.8*x)),3.6,5.4))

>>

I =

0.26649340577279

  1. Программный блок, реализующий приближенное вычисление определенного интеграла:

//str – выбор метода приближенного вычисления определенного интеграла; a, b – пределы интегрирования; n – количество точек:

function res = Integral(str, a , b, n);

h = (b-a)/n;

Sum = 0;

switch (str)

// метод Симпсона

case 'Simpson'

q1=0; q2=0;

for i = 1:n-1

if (mod(i,2)==1)

q1 = q1+f(a + i*h);

else q2 = q2+f(a + i*h);

end;

end;

Sum =(h/3)*( f(a) + 4*q1 + 2*q2 + f(b));

//метод трапеций

case 'Trapezium'

for i = 1:n-1

Sum = Sum + f(a + i*h);

end;

Sum = (h/2)*( f(a) + 2*Sum + f(b));

//метод левых прямоугольников

case 'LeftRectangles'

for i=1:n-1

Sum = Sum + h*f(a + i*h);

end;

Sum = h*f(a) + Sum;

//метод правых прямоугольников

case 'RightRectangles'

for i=1:n-1

Sum = Sum + h*f(a + i*h);

end;

Sum = h*f(b) + Sum;

//метод средних прямоугольников

case 'MediumRectangles'

for i=1:n

Sum = Sum + h*f(((a + (i-1)*h)+(a + i*h))/2);

end;

otherwise

error('This is impossible value')

end

res = Sum;

return

  1. Программный блок вычисления апостериорных погрешностей вычислений строится аналогично с использованием оператора выбора. Далее приведен фрагмент программы:

//вычисление погрешности для формулы трапеций

case 'Trapezium'

R = abs(Integral(str,a,b,n)-Integral(str,a,b,0.5*n))/3;

  1. Результаты вычислений:

>> format long

>> IS = Integral('Simpson',3.6,5.4,12)

IS =

0.26649801994399

>> IT = Integral('Trapezium',3.6,5.4,12)

IT =

0.26635817701576

>> ILR = Integral('LeftRectangles',3.6,5.4,12)

ILR =

0.26584089261870

>> IRR = Integral('RightRectangles',3.6,5.4,12)

IRR =

0.26687546141281

>> IMR = Integral('MediumRectangles',3.6,5.4,12)

IMR =

0.26656137337914

>> Priori_ErrorIT = Priori_Error('Trapezium',3.6,5.4,12)

Priori_ErrorIT =

1.040388407134533e-005

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

Синтаксис:

y = diff(x)

y = diff(x, n)

Описание:

Функция y = diff(x) вычисляет конечные разности.

Если x – одномерный массив вида x = [x(1) x(2) ... x(n)], то diff(x) – вектор разностей соседних элементов:

diff(x) = [x(2) - x(1) x(3) - x(2) ... x(n) - x(n-1)].

Количество элементов вектора x на единицу больше количества элементов вектора diff(x). Если X – двумерный массив, то вычисляют разности столбцов diff(X) = X(2:m, :) - X(1:m-1, :).

Функция y = diff(x, n) вычисляет конечные разности порядка n, удовлетворяющие рекуррентному соотношению

diff(x, n) = diff (diff(x, n-1)).

Аппроксимация производной n порядка есть отношение

diff(y, n)./diff(x, n).

При наличии специализированного пакета Symbolic Math Toolbox можно выполнить точное дифференцирование в символьном виде, используя следующие функции пакета:

  • diff(S) – дифференцирует символьное выражение S по свободной переменной;

  • diff(S, ‘v’) – дифференцирует символьное выражение S по v;

  • diff(S, n) и diff(S, ‘v’, n) – дифференцирует n раз символьное выражение S;

diff без аргументов – дифференцирует предшествующее выражение

Пример. Вычислить вторую производную от функции sin(x2) и шестую производную от t6.

Решение

>>syms x t

>>diff(sin(x^2))

>>2*x*cos(x^2)

>>diff(t^6,6)

>>720