Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Informatics.doc
Скачиваний:
6
Добавлен:
21.08.2019
Размер:
1.33 Mб
Скачать

5.2.2. Определенный интеграл

Для вычисления определенных интегралов в конечных пределах стандартно используется приближенное представление площади плос-кой области между графиком y = f(x), x  [a, b] и осью абсцисс.

На каждом промежутке [t i , t i + 1], t i = a + i  (i = 0, ... , n) фун-

кция представляется постоянной и тогда для h = имеем:

I = f(x) dx h f(a + (i + 0.5)h)

-это формула прямоугольников. Вообще же, если выбирать точки

0  x 1 < x 2 < ... < x k  1, то можно определить формулу

f(x) dx a i f(x i) , (3)

где коэффициенты {a i} выбираются так, чтобы формула была то-чна для многочленов наиболее высокой степени. При k = 1, x 1 = 0.5,

a 1 = 1 имеем формулу прямоугольников, при k = 2, x 1 = 0, x 2 = 1, a 1 =

= a 2 = 0.5 получим формулу трапеций и т. д.

Наиболее популярны так называемые формулы Гаусса типа (3) с оптимальным выбором не только коэффициентов a i , но и узлов {x i }. Можно показать, что в качестве {x i} следует брать корни мно-гочленов Гаусса, ортогональных на [0, 1] (многочлены Pm (x) и Pn (x), m ≠ n, ортогональны на [0, 1], если Pm (x) Pn (x) dx = 0). Например, первые два такие многочлена суть P1 (x) = 2х – 1, P2 (x) = 6х 2 - 6х + + 1. Первый имеет корень х = 0.5 (так что приведенная формула пря-моугольников является простейшей формулой Гаусса), второй - два корня x 1,2 = и таким образом формула

 f(x) dx [f( ) + f( )]

оказывается точной для многочленов 0, 1, 2, 3-й степени. Полагая s = = , t = 1 - s, h = , можно теперь записать

f(x) dx [f(a + (i + s)h) + f(a + (i + t)h)] . (4)

Формулы Гаусса - "открытого" типа (не используют значений функ-ции в узлах сетки) и могут применяться к несобственным интегралам и интегралам типа Коши. Например, для = ln(3) (=1.0986122…)

при а = -1, b = 3, n = 40 по формуле (4) получим значение с восемью

точными знаками (MathCad этот интеграл не считает). Аналогично мо-жно построить формулы вида:

 f(x) e dx a i f(x i) . (5)

Например, при k = 3, х 1 = 0.19055415, х 2 = 0.848251867, х 3 =

= 1.799776578, а 1 = 0.44602977, а 2 = 0.396468267, а 3 = 0.043728888 и для функции f(x) = (2 + x -2)ln(1 + x) - по формуле (5) получа-ем 0.99991525 при точном значении 1.

В действительности равномерное разбиение промежутка интегри-рования (постоянный шаг) не всегда целесообразно и существует мно-го способов адаптировать его к поведению функции (что MathCad и делает), но эти вопросы выходят за рамки нашего курса.

5.2.3. Функции на дискретном множестве

Если функция задана конечным числом своих значений, анали-тическое меню Mcad оказывается бесполезным, поскольку классичес-кие операции анализа на таких функциях неопределены. Продолжение таких функций на числовую область называется интерполяцией (вос-полнением) или аппроксимацией (приближением) в зависимости от метода и цели задачи. Простейшим инструментом здесь является ме-тод Лагранжа: если функция задана n своими значениями y 0, y 1, ..., y n - 1 в точках соответственно x 0 , x 1, ..., x n - 1, то многочлен (Лагран-жа)

L n (t) = y i

определен для всех t и L n (x i) = y i (i = 0, ..., n - 1). В терминах MathCad этот многочлен можно определить формулой

L(t) y i  if(i = j, 1, ).

C помощью аппарата разделенных разностей этот многочлен можно записать в ином виде.

Более гибким инструментом для решения задач интерполяции

являются сплайны, представляющие собой агрегат, гладко склеенный

из многочленов фиксированной степени (в данном случае три). Встро-енные функции Lspline, Pspline, Cspline позволяют найти коэффици-енты (с подходящим выбором краевых условий в виде многочленов первой, второй и третьей степени соответственно) по данным x = {x i}, y = {y i}. Сам процесс интерполяции осуществляется функцией Interp: сначала полагаем vs cspline(x, y), например, затем можно опреде-лить функцию f(t) interp(vs, x, y, t), интерполирующую массивы данных x, y кубическим сплайном в точке t.

Пример. Пусть функция задана в точках {x i} = {0, 2, 3.5, 4.5, 7} значениями {y i} = {0, 0, 1, 0, 1}. Интерполируем ее значения на равно-мерную сетку {z j = j - 1, j = 0, ..., 9} с помощью многочлена Лагранжа (функция L(t)), сплайна с параболическими краевыми условиями (функция f(t)) и продифференцируем полученные функции. В резуль-тате получилась таблица:

Таблица 4

z

- 1

0

1

2

3

4

5

6

7

8

L(z)

7.426

0

-1.17

0

0.987

0.647

-0.78

-1.67

1

11.61

f(z)

1.288

0

-0.43

0

0.917

0.584

-0.38

-0.26

1

3.406

L′(z)

-12.2

-3.53

0.54

1.385

0.398

-1.04

-1.54

0.273

5.790

16.40

f ′(z)

-1.72

-0.86

0

0.859

0.603

-1.15

-0.46

0.687

1.833

2.979

Можно для той же цели использовать подходящую систему фун-кций { i(t)} и подобрать в представлении R(t) = a i   i (t) коэффи-циенты a i наилучшим (в требуемом смысле) образом. Это линейная задача и она легко решается методами п. 2.1.1. Если в данном приме-ре взять r(t) = (t 2 + 1) - 1 и положить  i (t) = r(t - x i) (трансляции функ-ции r), a коэффициенты a i (i) выбрать из условий интерполяции: R(x i) = y i (i), то в результате получается аналитическая кривая (см. рис. 4). Вектор коэффициентов получается из системы линейных ура-внений Aa = y c матрицей A i, j = r(x i - x j ), i, j. Можно положить a = A - 1y (или a = Lsolve(A,y)) и определить R(t) = a  r(t - x) (скалярное произведение) либо указанной выше суммой.

Из приведенного рисунка видно, что многочлен Лагранжа больше остальных агрегатов колеблется относительно предполагаемых значе- ний и, конечно же, не пригоден для предсказания (экстраполяции) зна-чений функции за областью определения. Сплайны ведут себя значи-тельно "спокойнее" (они строятся по условию минимальности изгиба). Но и они для экстраполяции не очень пригодны. Все приведенные аг-

регаты "безлики", а экстраполяция должна отслеживать суть явления

(см., например, п. 5.2.6).

Рис. 4

Наконец, на равномерной сетке x i + 1 - x i = h (i) можно пост-роить формулы приближенного дифференцирования в узлах x i вида y = a i y i , где y i = y(x i), i . Используя формулу Тэйлора, из равенств a i y = y + o(h k + 1) нетрудно получить для коэффициентов {a i} линейную систему уравнений a j (j - m) i = (i = 0, ..., k) с A i,j = (j - m) i , b i = . Отсюда, например, следуют популярные формулы вычисления второй производной: y0′′h 2 2y0 - 5y 1 + 4y 2 - y 3, yi′′h 2 y i - 1 -2y i + y i + 1, y n′′h 2 2y n - 5y n - 1 + 4y n - 2 - y n - 3 и др. Приведем таблицу неко-торых часто используемых формул приближенного дифференцирова-

ния (табл. 5 – 6).

Таблица 5

Формулы для вычисления y h∙k! порядка k

m

k = 2

k = 3

k = 4

0

-3y0 +4y1 –y2

-11y0 +18y1 -9y2 +2y3

-25y0+48y1-36y2+16y3-3y4

1

-y0 +y2

-2y0 -3y1 +6y2 -y3

-3y0-10y1+18y2-6y3+y4

2

y0 –4y1 +3y2

y0 -6y1 +3y2 +2y3

y;\s\do2( 0-8y1 +8y3-y4

3

-2y0 +9y1 -18y2 +11y3

-y0+6y1-18y2+10y3+3y4

4

3y0-16y1+36y2-48y3+25y4

Таблица 6

Формулы для вычисления y h2 порядка k

m

k = 2

k = 3

k = 4

0

y;\s\do2( 0-2y1+y2

2y0-5y1+4y2-y3

(35y0-104y1+114y2-56y3+11y4) / 12

1

y;\s\do2( 0-2y1+y2

y;\s\do2( 0-2y1+y2

(11y0-20y1+6y2+4y3-y4) / 12

2

y;\s\do2( 0-2y1+y2

y;\s\do2( 1-2y2+y3

(-y;\s\do2( 0+16y1-30y2+16y3-y4) / 12

3

-y0+4y1-5y2+2y3

(-y0+4y1+6y2-20y3+11y4) / 12

4

(11y0-56y1+114y2-104y3+35y4) / 12

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