Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы вычислений в MathCAD. Учебное пособие.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
1 Мб
Скачать
☆
можно не задавать, по умолчанию step = 0,1. Можно задавать шаг
больше 1, в этом случае он определяет число узловых точек, а можно
меньше 1, и тогда он устанавливает интервал следования узлов по оси
абсцисс. Функция использует один из алгоритмов, указываемых в
контекстном меню: метод Адамса, с постоянным шагом, адаптивный
метод и метод RADAUS.
С помощью встроенных функций также можно решать ОДУ пер-
вого порядка и их системы. Поэтому предварительно необходимо ис-
ходное ОДУ высокого порядка свести к системе из соответствующего
числа уравнений первого порядка. Пакет располагает тремя функция­ми, реализующими разные методы решения: rkfixed(y, x1, x2, n, D) – Рунге – Кутта 4-го порядка с фиксированным шагом; Rkadapt((y, x1, x2, n, D) – адаптивный алгоритм Рунге – Кутта; Bulstoer(y, x1, x2, n, D) –
метод Булирша – Штера. Все они используют одинаковый набор аргу­ментов: y – вектор начальных условий; x1 и x2 – граничные точки ин­тервала, на котором ищется решение; n – количество узловых точек, не считая начальной; D – вектор правых частей уравнений, разрешенных
относительно первых производных искомых функций. Покажем реали-
зацию действий на конкретном примере, представленном ниже. В нем с
помощью подстановок исходное ОДУ третьего порядка сведено к систе-
ме из трех уравнений первого порядка.
31
На следующем рисунке показаны результаты вычислений, оформ-
ленные в графическом виде для n точек интегрирования:
Система содержит также средства решения краевых задач и диф-
ференциальных уравнений в частных производных [2].
5. Обработка данных
Пакет располагает средствами для проведения интерполяции и
экстраполяции данных, их аппроксимации (приближения) и сглажива-
ния.
Интерполяция производится с целью получения промежуточных
значений функции по ее значениям в узловых точках. Ее целесообразно
32
применять к данным, полученным с минимальной погрешностью, так
как интерполирующая функция точно проходит через узлы. Линейную интерполяцию реализуют функцией linterp(vx, vy, x). В ней вектор vx содержит упорядоченные по нарастанию абсциссы узловых точек, vy – вектор их ординат, а x – абсциссу точки, значение функции в которой
хотят получить. Кубическую сплайн-интерполяцию производят функци­ей interp(vs, vx, vy, x), для которой вектор vs вторых производных в
узловых точках можно найти с помощью одной из трех функций: lspline(vx, vy), pspline(vx, vy), cspline(vx, vy). Ниже показаны примеры
проведения названных видов интерполяции.
Функции lspline, pspline и cspline дают практически одинаковые
результаты в пределах интервала интерполяции. Отличие в поведении
функции интерполяции будет ощутимо заметным только вблизи гранич-
ных точек интервала.
Теперь скажем об экстраполяции данных (её пример дан ниже).
33
Экстраполяцию (предсказание) значений вектора y по его m бли­жайшим к правой границе выбранным точкам на n последующих точек можно осуществить с помощью функции predict(y, m, n). Из приведен-
ного примера видно, что результат экстраполяции (участки кривых на
рисунках, выполненные пунктиром) существенно зависит от размера интервала предсказания (третий параметр) и значений параметра m.
Аппроксимация имеющихся данных некоторой зависимостью получила название регрессии. Пакет позволяет осуществлять регрессию
разного вида. Самым простым видом аппроксимации является линейная
регрессия. Линейная регрессия, как следует из ее названия, представ-
ляет собой линейную зависимость между независимой переменной – фактором – x и функцией отклика lr(x): lr(x) = b0 + b1x. В ней b0 – по­стоян-ная регрессии, а b1 – коэффициент регрессии. На рисунке справа
показана совокупность значений ве­личины x и соответствующая ей со­вокупность значений величины y –
крупные точки (исходные данные).
34
Можно провести линейную зависи-мость некоторым образом близко к ним. Видно, что в ней b0 = lr(0), а b1 – это тангенс угла наклона прямой
по отношению к оси абсцисс. Степень близости проводимой прямой к
исходным данным обычно оценивают суммой квадратов отклонений ор­динат от значений функции отклика во всех n точках:
∑
1n
0i
2
ii
))x(lr-y(U
−
=
=
. Поскольку значения коэффициентов b0 и b1 находят
из условия минимума величины U, способ их нахождения получил на­звание метода наименьших квадратов. Метод реализован в функциях линейной регрессии MathCAD line(x, y), intercept(x, y) и slope(x, y). Первая из них возвращает вектор коэффициентов b0 и b1, вторая – коэф­фициент b0 и третья – b1. Линейная регрессия далеко не всегда адекват-
но описывает характер реальной зависимости между величинами.
Поэтому в системе реализованы и другие функции регрессии.
Полиномиальная регрессия проводится с помощью функции re­gress(x, y, st), в которой параметр st определяет степень аппроксимиру-
ющего полинома. Функция возвращает вектор коэффициентов, в кото-
ром первые три являются служебными, а остальные – коэффициентами
многочлена, начиная с младших его степеней. Саму полиномиальную регрессию производят функцией interp(p, x, y, xx), в которой аргумен­том p является созданный функцией regress вектор коэффициентов. Функция regress работает по принципу глобальной аппроксимации дан-
ных (во всех узловых точках). Ниже показан пример реализации линей-
ной и полиномиальной регрессии данных, находящихся в файлах.
35
Помимо функции regress можно использовать другую функцию полиномиальной регрессии – loess(x, y, int). Эта функция использует па­раметр int, задающий интервалы для отдельных полиномов, из которых
получается результирующая функция регрессии. Значение параметра
подбирают исходя из условий задачи.
Еще семь функций пакета предназначены для проведения специ-
альных видов регрессии:
- expfit(x, y, g) – экспоненциальной –
cea
bx
+⋅
;
- lgsfit(x, y, g) – логистической –
)eb1/(a
cx
⋅+
;
- sinfit(x, y, g) – синусоидальной – a·sin(x + b) + c;
- pwfit(x, y, g) – степенной –
cxa
b
+⋅
;
- logfit(x, y, g) – логарифмической – a·ln(x + b) + c;
- lnfit(x, y) – логарифмической с двумя параметрами – a·ln(x) + b;
- medfit (x, y) – медиан-медианной с двумя параметрами – a·x + b.
36
Функции возвращают векторы коэффициентов соответствующих
функциональных зависимостей, используя при этом вектор их началь­ных приближений g. (Вторая часть имен функций является сокращени-
ем английского fitting – усреднение.) Полученные коэффициенты ис-
пользуют для описания соответствующей функции регрессии.
MathCAD содержит также функции для проведения регрессии об­щего вида: linfit(x, y, F) и genfit(x, y, g, Fc). Первая из них возвращает
коэффициенты, с которыми затем строится линейная комбинация функ­ций, представленных в векторе F, – C1f1(x) + C2f2(x) + … . Другая ис­пользует вектор g начальных приближений и вектор Fc функций, на
основе которых строится регрессия как сумма этих функций. Чтобы найти N коэффициентов, функция genfit должна иметь в векторе Fc N+1
функцию. Имя вектора коэффициентов должно присутствовать в списке параметров Fc. На следующем рисунке показан пример использования представленных функций регрессии общего вида и функции expfit.
37
Значения элементов вектора g существенным образом сказывают-
ся на характере прохождения аппроксимирующей зависимости.
Степень близости той или иной проведенной зависимости к ис-
ходным данным оценивают так называемой дисперсией остатков. Это
величина, определяемая суммой квадратов отклонений во всех узловых
точках между исходными данными и результатом аппроксимации:
∑
=
−
−
=
n
1i
2
ii
2 ост
)]x(Fy[
2n
1
S
,
где n – объем выборки данных, а
)x(F
- аппроксимирующая функция.
38
Кроме рассмотренных функций обработки, MathCAD содержит для обработки искажённых шумом сигналов функции сглаживания, из-
вестные с ранних версий пакета:
- medsmooth(y, n) (y – вектор равномерно распределенных на интерва-
ле сглаживаемых данных, n – число окон сглаживания);
- ksmooth(x, y, b) (x, y – векторы данных, b – ширина окна сглажива-
ния);
- supsmooth(x, y) (x, y – векторы данных).
Две последние функции лучше всего сглаживают соответственно
стационарные и сложные нестационарные сигналы [2]. Следует по-
мнить о том, что, в отличие от интерполяции и регрессии, сглаживание
приводит к новому набору значений в узлах.
6. Символьные вычисления
Компьютерная символьная математика начала интенсивно разви-
ваться с конца 80-х [2]. Разработчики MathCAD постоянно расширяют
возможности аналитического решения определенного круга задач с по-
мощью символьного процессора. Безусловно, круг таких задач суще-
ственно уже круга задач, решаемых чис-
ленными методами. Символьные преоб-
разования могут производиться с помо-
щью команд секции Символьные опера-
ции или операторами панели Символьные
(представлены на рисунке справа). Пока-
жем, как реализуются некоторые кон-
кретные символьные вычисления.
Решение уравнений производит оператор (решить). После его
ввода необходимо заполнить места маркеров: слева –
решаемое уравнение или система уравнений в векторной форме, а спра-
39
ва вводится имя неизвестной или вектор имен. Недостающие позиции ввода появляются после нажатия <,> в соответствующем месте. Пока-
жем это на примерах ниже. Результатом могут быть как аналитические
выражения (первый пример), так и численные значения корней (второй
пример), которые могут быть приведены к привычным десятичным дро-
бям после охвата выведенного результата курсором синего цвета (в ре­зультате нескольких нажатий клавиши <пробел>) и набора знака <=>
(равно). При вводе уравнений пишется только их левая часть (первый пример) или они записываются с логическим знаком равенства (Ctrl+=)
(второй пример), если их правая часть не равна нулю.
Следует отметить, что символьное решение сложных уравнений,
содержащих экспоненты и тригонометрические функции, часто приво-
дит к ошибочным результатам.
Назовем другие возможности пакета, связанные с символьными
вычислениями: упрощение и разложение выражений – операторы sim-
plify (упростить) и expand (разложить) соответственно; разложение на множители – factor (от factoring – разложение на множители); разло­жение на элементарные дроби – parfrac (partial fraction – элементарные дроби); приведение подобных – collect (собрать); задание вектора коэф­фициентов полинома – оператор coeffs, служащий для упрощения ввода
40
x
2
y
2
+
6
x y+2
 
solve x,y
,
1 2
−
2 1
+
2 1
+
1 2
−
→
0.414
−
2.414
2.414
0.414
−
 
 
=
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]