- •1 Вводное занятие. Правила техники безопасности при выполнении лабораторных работ в дисплейном классе.
- •2 Изучение интерфейса пакета MathCad
- •Теоретические сведения
- •Рабочее окно MathCad
- •Массивы и строки, формирование и использование.
- •Формулы, их ввод, редактирование и вычисление.
- •Порядок выполнения
- •Контрольные вопросы.
- •Математические выражения
- •Операторы
- •Типы данных
- •Функции
- •Текстовые фрагменты
- •Упражнение 2.
- •Упражнение 3.
- •Упражнение 4.
- •Упражнение 5.
- •Контрольные вопросы
- •4 Средства графики и анимация в пакете MathCad.
- •Графические области
- •Создание анимационного клипа
- •Упражнение 1.
- •Упражнение 2.
- •Упражнение 6.
- •Построение пересекающихся фигур
- •Упражнение 2.
- •Упражнение 3.
- •Контрольные вопросы
- •5 Аналитические вычисления в системе MathCad.
- •Выделение выражений для символьных вычислений
- •Символьные операции
- •Операции с выделенными выражениями
- •Операции с выделенными переменными
- •Операции с выделенными матрицами
- •Интегральные преобразования
- •Стиль представления результатов вычислений
- •Примеры символьных операций в командном режиме
- •Операторы вычисления пределов функций
- •Порядок выполнения лабораторной работы
- •Контрольные вопросы
- •6 Приближение функций в пакете MathCad.
- •Интерполяция функций
- •Аппроксимация функций
- •Порядок выполнения лабораторной работы
- •Упражнение 1.
- •Упражнение 2.
- •Упражнение 3.
- •Упражнение 4.
- •Упражнение 5.
- •Варианты заданий для упражнений 1-3
- •Контрольные вопросы
- •Численное решение скалярного уравнения
- •Аналитическое решение скалярного уравнения
- •Решение системы линейных алгебраических уравнений (СЛАУ)
- •Порядок выполнения лабораторной работы
- •Упражнение 1.
- •Упражнение 2.
- •Упражнение 3.
- •Упражнение 4.
- •Контрольные вопросы
- •8 Решение ОДУ в системе MathCad.
- •Использование решающего блока
- •Прямой вызов решателей
- •Задание на работу
- •Варианты задания.
- •Контрольные вопросы
- •9 Изучение интерфейса системы Matlab.
- •Теоретические сведения
- •Команды управления окном
- •Порядок выполнения лабораторной работы
- •Упражнение 1.
- •Упражнение 2.
- •Упражнение 3.
- •Упражнение 4.
- •Контрольные вопросы
- •Теоретические сведения
- •Operators and special characters.
- •Arithmetic operators (арифметические операторы).
- •Пример 1:
- •Пример 2
- •Relational и Logical operators (отношения и логические оперции)
- •Пример 3:
- •Special characters (специальные символы)
- •Программирование и m- файлы.
- •Структурные типы данных
- •Пример 7
- •Пример 8
- •Пример 9
- •Пример 10
- •Пример 11
- •Управляющие операторы
- •Ветвление: IF и SWITCH
- •Циклы FOR и WHILE
- •Команды ввода – вывода
- •Пример 12
- •Пример 13
- •Интерактивное взаимодействие
- •Пользовательские функции и сценарии
- •Порядок выполнения лабораторной работы
- •Контрольные вопросы
- •11 Графические средства системы Matlab.
- •Теоретические сведения
- •Пример 4:
- •Пример 5
- •Пример 6:
- •Порядок выполнения
- •Упражнение 1.
- •Упражнение2.
- •Упражнение 3.
- •Контрольные вопросы
- •Теоретические сведения
- •Свойства ЛСС-объекта.
- •Создание и преобразования ЛСС
- •Пример 1
- •Пример 2
- •Пример 3
- •Пример 4
- •Методы Control System Toolbox
- •ЛСС – модели (LTI Models Function)
- •Характеристики моделей (Model Characteristics)
- •Преобразование моделей (Model Conversions Function)
- •Упрощение моделей (Model Order Reduction)
- •Преобразование ss-моделей (State-Space Realizations)
- •Динамические характеристики моделей (Model Dynamics)
- •Соединение моделей (Model Interconnections)
- •Отклики во временной области (Time Responses Function)
- •Частотные характеристики (Frequency Response)
- •Порядок выполнения
- •Упражнение 1.
- •Упражнение 2.
- •Упражнение 3.
- •Упражнение 4.
- •Упражнение 5.
- •Упражнение 6.
- •Упражнение 7.
- •Контрольные вопросы
- •13 Интерфейс среды Simulink. Основные блоки.
- •Теоретические сведения
- •Визуальный синтез в частотной области
- •Пример 3
- •Синтез регулятора во временной области
- •Порядок выполнения.
- •Упражнение 1.
- •Упражнение 2.
- •Контрольные вопросы
- •14 Средства физического моделирования в среде Simulink
- •Теоретические сведения
- •Получение дифференциальных уравнений из блок-схемы Simulink
- •Пример 1
- •Пример 2
- •Пример 3
- •Моделирование силовых электрических систем
- •Пример 4
- •Порядок выполнения
- •Упражнение 1.
- •Упражнение 2.
- •Упражнение 3.
- •Упражнение 4.
- •Упражнение 5.
- •Упражнение 6.
- •Контрольные вопросы
- •Список литературы
- •Основная литература
- •Дополнительная литература
- •Периодические издания
- •Программное обеспечение и Интернет-ресурсы
- •Методические указания к курсовому проектированию и другим видам самостоятельной работы
6 Приближение функций в пакете MathCad.
Интерполяция функций
Пример 2.6.1. Интерполяция сплайнами (Mathcad)
Пус ть имеется таблично заданная функция (таблица данных), представленная двумя векорами:
x ( 1 2 3 )T |
y ( 0 2 1 )T |
Линейную интерполяцию этой таблицы осуществляет функция linterp. Ей требуетс я три аргумента: два вектора x и y, содержащие интерполируемую таблицу, и один скаляр - значение аргумента интерполируемой функции, для которого требуется вычс ислить интерполяционное значение.
Вычис лим интерполяционное значение в точке 1.25 linterp( x y 1.25) 0.5
Интерполяция кубическим сплайном выполняется несколько сложнее. Она состоит из двух последовательных этапов: сначала по таблице данных вычисляются коэффициенты сплайна, для чего служит любая из трѐх функций cspline, lspline, pspline. Они различаютс я лишь
дополнительными ус ловиями, дополняющими уравнения интерполяции и условия непрерывности первой и второй производных. Аргументами вс ех этих функций являются вектора х и у, то есть таблица данных.
cc cspline( x y) cl lspline( x y) cp pspline( x y)
|
0 |
|
|
0 |
|
|
0 |
|
|
3 |
|
|
3 |
|
|
3 |
|
|
2 |
|
|
0 |
|
|
1 |
|
cc |
10 |
|
cl |
0 |
|
cp |
5 |
|
|
|
|
|
|
|
|||
|
5 |
|
|
7.5 |
|
|
5 |
|
|
|
|
|
|
|
|||
|
0 |
|
|
0 |
|
|
5 |
|
Для получения интерполированного значения служит функция interp, аргументамиДля выч слкоторойения интерполированныхявляются вектор вычисленныхзначений любомкоэффицвариантеентов
сплайнаиспользуется, ама интерполируемаяфункция interpтаблицакоторой(дванадовектопередать) и точкачетыре, в
аргументакоторой–вычислявычисленныйтся значениевектор коэффициентовфункции. Для точки, вектор1.25значенийэто будетаргумента и векторвыглядетьзначений, напримерфункции, так,:которую интерполируют, и, наконец, то
значение, для которого вычисляется интерполированное значение. Например interp cc x y 1.25 1.242
в точке 1,25 значение интерполированной функции вычислится так:
Исходная таблица содержит 3 узла, следовательно сплайн включает 2 кубических многочлена и имеет 8 коэффициентов, однако вычисляется только 6. Последние n (в данном с лучае - 3) из вычисленных коэффициентов - это значения 2-й производной сплайна в узловых точках. Первые 3 числа используются функцией interp для еѐ целей.
сплайна, с ама интерполируемая таблица (два вектора) и точка, в которой вычисляется значение функции. Для точки 1.25 это будет выглядеть, например, так:
interp cc x y 1.25 1.242
Исходная таблица содержит 3 узла, следовательно сплайн включает 2 кубических многочлена и имеет 8 коэффициентов, однако вычисляется только 6. Последние n (в данном с лучае - 3) из вычисленных коэффициентов - это значения 2-й производной сплайна в узловых точках. Первые 3 числа используются функцией interp для еѐ целей.
К сожалению, классическая ньютонова интерполяция полиномами в Mathcad не реализована. Но еѐ нетрудно осуществить самостоятельно, воспользовавшись ньютоновой формулой
n |
n |
x x j |
|
|
x yi |
|
. |
||
xi x j |
||||
i 1 |
j 1 |
|
||
|
j i |
|
|
Аппроксимация функций
Сама по себе идея интерполяции, то есть требования, чтобы приближѐнная функция в точности проходила через все узлы имеющейся таблицы, не всегда оправдана. Во-первых, при длинных таблицах она приводит к сложным приближениям. Во-вторых, она не кажется разумной в тех случаях, когда таблица заведомо не точна, что всегда имеет место при использовании экспериментальных данных. Часто более полезным оказывается потребовать, чтобы приближѐнная функция проходила близко к узлам таблицы. Дадим этой близости количественный смысл:
n |
2 |
|
|
xi , yi n , x, yi xi , |
|
i 1 |
|
Функционал качества приближения носит название среднеквадратичного отклонения |
(СКО). Он равен сумме квадратов "промахов" приближѐнной функции по всем узлам таблицы. Теперь осталось лишь подобрать значение параметра таким, чтобы СКО оказалось наименьшим из всех возможных:
n |
i |
|
2 |
i |
|
||
y |
x , |
|
min |
i 1
Вточке минимума функции, как известно, все еѐ частные производные обращаются в ноль, что приводит нас к следующей системе уравнений:
|
xi |
, yi , x, 0, |
k 1, 2 m |
|
|
||||
k |
||||
|
n |
|
||
|
|
|
Для задачи Ошибка! Источник ссылки не найден. эта система уравнений приобретает вид
n |
|
|
|
|
|
|
n |
|
|
|
|
|
|
|
x , |
|
x , |
|
|
|
y |
|
x , |
, |
|||
|
|
|
|||||||||||
|
i |
k |
i |
|
i |
k |
i |
|
|
||||
i 1 |
|
|
|
|
|
i 1 |
|
|
|
|
|
||
k 1, 2 |
m. |
|
|
|
|
|
|
|
|
|
|
|
Задача минимизации СКО особенно просто решается, если в качестве приближѐнной функции использовать обобщѐнный многочлен.
Выберем произвольно m функций 1 x , 2 x , |
n x и будем в качестве |
приближѐнной использовать их взвешенную сумму:
m
x i i x .
i 1
Именно такую взвешенную сумму и называют обобщѐнным многочленом. Входящие в него фиксированные функции i x называются базисными, а их
совокупность – базисом. Подставляя Ошибка! Источник ссылки не найден. в
Ошибка! Источник ссылки не найден., получаем окончательную формулировку задачи приближения:
n |
y |
m |
|
|
x 2 |
min |
|
|
i |
k |
k |
i |
|
||
i 1 |
|
|
k 1 |
|
|
|
|
Легко убедиться, что эта задача приводит к системе линейных алгебраических уравнений относительно коэффициентов обобщѐнного многочлена:
|
|
A b , |
|
где А – |
квадратная матрица размерности m. |
||
b – |
вектор той же размерности, |
||
определяемые выражениями |
|
|
|
|
n |
|
|
|
Ai, j i |
xk j xk , |
|
|
k 1 |
|
|
|
n |
|
|
|
bi yk i xk , |
i, j 1, 2 m. |
k 1
Эта система всегда имеет единственное решение, если только матрица А – невырожденная. Такой способ получения приближѐнной функции получил название
метода наименьших квадратов (МНК).
Описанный подход к получению приближѐнной функции встречается в литературе под разными названиями. В русскоязычных публикациях наиболее распространены термины аппроксимация и регрессия. В англоязычных публикациях кроме последнего термина, Regression, часто используется выражение подгонка (Curve Fitting).
В Маткаде достаточно большая группа функций нацелена на среднеквадратичную аппроксимацию (Curve Fitting and Regression). Из них следует выделить две наиболее универсальные – genfit и linfit. Кроме того часто полезно использовать функцию полиномиальной аппроксимации regress.
linfit(vx,vy,F) возвращает вектор коэффициентов обобщѐнного многочлена, аппроксимирующего функцию, заданную таблично. Поскольку задача сводится к решению СЛАУ, начальное приближение не требуется.
vx и vy – вектора одинаковой размерности, содержащие иксы и игреки таблично заданной функции,
F(x) – векторная функция скалярного аргумента, координаты этой функции образуют базис аппроксимации, при вызове используется без аргументов.
Размерность векторов данных не может быть ниже, чем размерность базиса аппроксимации. В случае совпадения размерностей мы получим интерполирующую функцию!
genfit(vx,vy,vg,F) возвращает вектор параметров аппроксимации.
vx и vy – как и выше, вектора, содержащие исходную функцию,
vg – вектор начальных приближений вычисляемых параметов,
F(x,u) – векторная функция, в которой первая координата содержит собственно
аппроксимирующую функцию, описанную как функцию собственно независимого аргумента и вектора параметров или списка параметров. Задача как раз и заключается в определении значений этих параметров. Остальные координаты – частные производные по параметрам. Все координаты должны иметь идентичный список аргументов.
Функция, genfit, использует итерационные численные методы и поэтому нуждается в начальном приближении и не гарантирует результата, linfit и regress всегда дают единственный ответ и не нуждаются в начальном приближении.
Пример использования функции genfit:
|
a x2 |
b x c |
||
|
|
|
|
|
F(x a b c) |
|
x |
2 |
|
|
|
|||
|
|
|
||
|
x |
|||
|
|
|
||
|
|
|
||
|
|
1 |
|
|
1 |
|
|
0 |
|
vx |
2 |
|
vy |
1 |
|
|
|
|
|
|
|
|
3 |
|
|
1 |
|
|
|
1.5 |
|
genfit (vx vy vg F) |
|
5.5 |
|
|
|
|
|
|
|
4 |
|
0 vg 0
0
2 |
|
|
|
|
0 |
|
|
|
|
F ( t 1.5 5.5 4) 0 |
|
|
|
|
2 |
|
|
|
|
vy |
|
|
|
|
4 |
|
|
|
|
60 |
1 |
2 |
3 |
4 |
|
|
t vx |
|
|
Пример несколько примитивен, поскольку параметры a,b,c входят в аппроксимирующую функцию линейно, и логичнее было бы использовать функцию linfit, а не genfit. Как в следующем примере.
Пример использования функции linfit: