- •Bведение
- •1. Основы языка Basic
- •1.1. Основные структуры
- •1.2. Операторы ввода, вывода, позиционирования
- •1.3. Числа
- •1.4. Строки
- •1.5. Операторы def, dim, пользовательский тип
- •1.6. Разветвление и альтернатива
- •1.7. Циклы
- •If k then print "пароль принят" else print "ошибка пароля"
- •Input "Введите произвольный текст : ", txt
- •Input X
- •1.8. Программные стэки
- •1.9. Массивы
- •If I and jb then
- •Input n
- •1.10. Функции, подпрограммы
- •1.11. Файлы
- •1.12. Сегментирование программы
- •Input n
- •1.13. Работа с графической информацией
- •If nu then gosub Move 'перемещение рисунка
- •1.14. Звуковое воспроизведение
- •2. Элементы vba
- •2.1. Типы переменных
- •2.2. Использование массивов
- •2.3. Разветвление и циклы
- •2.4. Работа с ячейками листа
- •If y X Then
- •If Check Then
- •2.5. Элементы управления
- •If X 0 Then
- •2.6. Пользовательские классы
- •If IsEmpty(Text2) Then Exit Sub
- •2.7. Построение графиков в excel
- •2.8. Построение графиков и таблиц в word
- •3. Ключи в word
- •4. Гипертекстовая разметка
- •4.1. Основные тэги html
- •4.2. Форматирование таблиц
- •4.3. Фреймы
- •5. Основы программирования в среде MathCad
- •5.1. Особенности языка MathCad
- •5.2. Некоторые вычислительные модели
- •5.2.1. Системы уравнений
- •5.2.1.1. Системы линейных уравнений
- •Iter(a, b, e) n Last (b)
- •5.2.1.2. Нелинейные уравнения и системы
- •5.2.2. Определенный интеграл
- •5.2.3. Функции на дискретном множестве
- •5.2.4. Обыкновенные дифференциальные уравнения
- •5.2.5. Минимизация функций
- •5.2.5.1. Функции одной переменной
- •5.2.5.2. Функции многих переменных
- •5.2.6. Pазностная модель и прогноз
- •1 Otherwise (коэффициенты непрерывной модели)
- •5.2.7. Сглаживание и осреднение рядов
- •Задания
- •Литература
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). Вектор коэффициентов получается из системы линейных ура-внений Aa = y c матрицей A i, j = r(x i - x j ), i, j. Можно положить a = A - 1y (или 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 ≈ 2y0 - 5y 1 + 4y 2 - y 3, yi′′h 2 ≈ y i - 1 -2y i + y i + 1, y n′′h 2 ≈ 2y n - 5y n - 1 + 4y 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 |