Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Обработка данных и моделирование в математических пакетах. Учебно-методическое пособие по дисциплине «Информатика»
.pdf
нем углу окна) нужную переменную,
в окне Workspace два раза щелкнуть по имени переменной, например C (на рис. 6.14
справа),
ее значения отобразятся в окне Variable Editor:
Рис. 6.13. Окна системы MATLAB
Аналогично проверяются все значения вычисленных переменных. Полученные значения
можно сравнить со значениями, отображаемыми блоком Floating Bar Plot. Нетрудно заметить,
что результаты моделирования совпали с расчетными значениями.
Рис. 6.14. Отображение значений переменной C в окне MATLAB
6. Скопировать в отчет программы, модель, результаты проверки программ, гистограм-
мы в разных точках модели и сделать выводы по выполненному заданию.
6.8. Методика выполнения шифрования данных в Mathcad
1. Запустить Mathcad и открыть палитры: Вычисление, Матрица, Программирование
(рис. 6.15).
2. В рабочем поле выполнить следующие действия:
задать глобальное значение системной переменной ORIGIN 1,
задать строковую переменную s заданной фразой (табл.3.1),
преобразовать строку в вектор кодов и вывести вектор кодов для удобства работы в
виде строки,
сохранить файл в своей папке латинскими символами.
3. Разработать, написать и отладить модуль SC, реализующий процесс шифрования
строки s. Программа (рис. 6.15) должна содержать:
31

функцию преобразования символов фразы в соответствующие коды,
операторы, реализующие процесс шифрования по заданному алгоритму,
функцию преобразования кодов в символы vec2str(), из которых формируется новая
фраза.
Рис. 6.15. Шифрование и дешифрование заданной фразы
4. Вывести результаты расчета модуля и проконтролировать полученный результат.
5. Аналогично разработать, написать и отладить модуль DT, реализующий процесс
восстановления строки.
6. Вывести результаты расчета модуля и проконтролировать полученный результат.
7. Сохранить результаты преобразований и сравнить полученные значения с результа-
тами расчета в системе MATLAB.
8. Скопировать в отчет результаты расчетов и сделать выводы относительно возможно-
стей математических сред по реализации поставленной задачи.
6.9. Обработка данных. Регрессионный анализ
При проведении научно-технических расчетов возникает задача приближенного вычисления значений функции в промежутках между узловыми точками (интерполяция) и за их
пределами (экстраполяция). К сожалению высокой точности, при интерполяции, и тем боле
экстраполяции, нет.
Немаловажное значение играет решение задач на приближение данных теми или иными зависимостями вида y(x), причем число точек этих зависимостей ограничено.
Замена исходной зависимости какой-либо достаточно простой функцией называется
аппроксимацией.
Представление совокупности данных некоторой функцией y(x) называется регрессией.
Задача регрессии заключается в получении параметров этой функции такими, чтобы функция приближала «облако» исходных точек, заданных векторами VX и VY, с наименьшей
среднеквадратичной погрешностью. Сама линия регрессии проходит в «облаке» исходных
32

точек, векторов VX и VY, с максимальным среднеквадратичным приближением к ним. Известны следующие виды регрессии:
1. линейная (отрезок прямой линии),
2. полиномиальная (полином произвольной степени),
3. линейная общего вида (линейная сумма произвольных функций),
4. нелинейная общего вида (произвольная функция) – в данной работе не используется.
6.9.1. Формирование выборки данных для исследования
1. В системе Mathcad необходимо сначала записать строковую переменную Str в виде
выборки трех идущих подряд слов из заданной фразы, небольших по размеру записанных
слитно, т.е. без пробелов. Например, Str:=’Япомнючудное’
2. Используя операторы программирования, сформировать два вектора VX и VY. Вектор
VY должен содержать коды выборки строки Str. А вектор VX – порядковые номера этих кодов в выборочной совокупности. Пример формирования двух векторов и расчет статистических показателей выборки данных приведены на рис. 6.16.
Рис. 6. 16 Программа формирования векторов выборки данных
33

6.9.2. Линейная регрессия
При линейной регрессии функция y(x) имеет вид y(x)=a∙x+b и описывает отрезок пря-
мой.
Для проведения линейной регрессии в Mathcad имеются ряд встроенных функций:
slope(VX,VY) – возвращает значение параметра a – наклон линии регрессии (угловой
коэффициент линии регрессии),
intercept(VX,VY) – возвращает параметр b – смещение линии регрессии по вертикали
(свободный член регрессии), где VX и VY – векторы координат заданных точек. Координаты
отдельной точки занимают в векторах VX и VY одинаковые позиции.
На рис. 6.17 приведен пример использования линейной регрессии к выборке данных, представленных в векторах VX и VY.
Как видно из рисунка, линия регрессии проходит в средней части «облака» исходных
точек VY. Критерием точности вычисления закона регрессии является коэффициент детерминации. И чем ближе коэффициент детерминации к единице, тем точнее зависимость LY(x)
представляет VY(VX).
В примере коэффициент детерминации R2 = 0.0001 существенно отличается от единицы (близок к нулю), и по рисунку видно, что графики линейной регрессии LY(x) и выборки
данных вектора VY значительно различаются. Так вычисленное значение функции во второй
узловой точке LY(2)=1087 не равно истинному значению (1085), а в 1 и 6 точках существенно
разнятся.
Если вывести расчетные значения LY(x) и выборку данных
VY и сопоставить их, то можно увидеть, что в большинстве точек
они значительно отличаются друг от друга.
Следовательно, можно сделать вывод, что для данной выборки данных полученный закон линейной регрессии не приемлем,
что хорошо иллюстрирует график.
Поэтому линейный закон для данной выборки VY только отражает тенденцию изменения ее данных.
34

Рис. 6.17. Линейная регрессия
1 2 2
1 2 2 1 0
( ) ...
n n n
n n n
y x a x a x a x a x a x a
6.9.3. Полиномиальная регрессия
При полиномиальной регрессии функция y(x) имеет вид:
Для реализации полиномиальной регрессии имеется встроенная функция
regress(VX,VY,n), которая возвращает вектор VS, запрашиваемый функцией
interp(VS,VX,VY,x) и содержащий коэффициенты полинома n–й степени. Эти коэффициенты
вычисляются по всей совокупности заданных точек, т. е. глобально. Полученный полином
наилучшим образом приближается к «облаку» точек с координатами, хранящимися в векторах
VX и VY.
На рис. 6.18 приведен пример использования полиномиальной регрессии для той же выборки данных, представленных в векторах VX и VY, что и при линейной регрессии.
Для вычисления коэффициентов полинома используется функция submatrix() – часть
матрицы. Функция submatrix(М, ir, jr, ic, jc) возвращает субматрицу из элементов в строках
(11)
35

от ir до jr и в столбцах от ic до jc матрицы М.
: ( ,4, ( ),1,1)Coeffs submatrix z length z
В примере взяты следующие аргументы функции:
(12)
Чтобы разобраться с аргументами этой функции выведем значения
вектора z вторых производных VY.
Как видно, в функции submatrix():
первый аргумент z – имя вектора;
второй – номер строки, начиная с которой располагаются коэффи-
циенты полинома, причем первым – идет коэффициент a0 (в примере
a0=1198);
третий – номер строки, в которой коэффициенты завершаются. А,
поскольку заранее не известно полином, какой степени будет наилучшим образом описывать
выборку данных, то лучше в качестве последней строки взять функцию, вычисляющую длину вектора z. В примере length(z)=12, при степени полинома k=8;
Рис. 6.18. Полиномиальная регрессия
36

четвертый и пятый аргументы равны 1, т.к. вместо
( ) ( , 1, 2,... ) 1 1( ) 2 2( ) ... ( )y x F x K K Kn K F x K F x Kn Fn x
цы рассматривается вектор z, содержащий 1 столбец, в котором
располагаются коэффициенты полинома.
В примере коэффициент детерминации равен R2=0,915,
что незначительно отличается от единицы. Кроме того, графики
полиномиальной регрессии PY(x) и исходных данных VY очень
близки. Если вывести значения векторов PY(x) и выборки данных
VY и сопоставить их, то можно увидеть некоторое различие.
Следовательно, можно сделать вывод, что для данной выборки данных полученный закон полиномиальной регрессии
может быть применен с некоторой погрешностью при вычислении.
Коэффициент детерминации R
2
в программе рассчитыва-
ется по формуле:
(13)
где в числителе среднеквадратичное отклонение расчетных значений точек полинома, а в
знаменателе – среднеквадратичное отклонение значений точек выборки. Чем ближе расчетные значения совпадут с данными выборки в узловых точках, тем отношение среднеквадратичных отклонений ближе к 1, и закон точнее описывает выборку данных.
При работе с полиномом надо сначала установить небольшую степень полинома и проконтролировать значение R2 . Увеличивая степень полинома необходимо контролировать
увеличение значения коэффициента детерминации. Увеличение степени полинома нужно
прекратить при достижении высоких значений коэффициента детерминации и относительно
не сложном аналитическом выражении закона полиномиальной регрессии.
6.9.4. Линейная регрессия общего вида
В линейной регрессии общего вида заданная выборка данных приближается к функции
y(x) вида:
(14)
Таким образом, функция регрессии является линейной комбинацией нескольких функций F1(x), F2(x),…, Fn(x), причем сами эти функции могут быть и нелинейными, что резко
расширяет возможности такой аппроксимации и распространяет ее на нелинейные функции.
Для реализации линейной регрессии общего вида используется функция linfit(VX,VY,F),
которая возвращает вектор коэффициентов К линейной регрессии общего вида, при котором
среднеквадратичная погрешность приближения «облака» исходных данных, координаты которых хранятся в векторах VX и VY, оказывается минимальной.
Вектор F функции linfit() должен содержать функции F1(x),
F2(x), …, Fn(x), записанные в символьном виде. Вектор VX должен
содержать абсциссы точек в порядке возрастания, а ординаты в векторе VY должны соответствовать абсциссам в векторе VX.
На рис. 6.19 приведен пример использования линейной регрессии общего вида для той же выборки данных, представленных в векторах VX и VY, что и при других видах регрессии.
В примере коэффициент детерминации R2=0,911, что близко к
единице. Но графики линейной регрессии LA(x) и исходных данных
VY выборки все же несколько различаются. Если вывести значения
векторов LA(x) и выборки данных VY и сопоставить их, то можно увидеть различие в точках 2 – 4, 8 – 10, 11.
37

Следовательно, можно сделать вывод, что для данной выборки данных полученный закон линейной регрессии общего вида может быть применен с погрешностью при вычислении.
Рис. 6.19 Линейная регрессия общего вида
Поскольку значения кодов в выборке VY носят скачкообразный характер, то ни один из
рассмотренных трех законов к выборке данных не подходит идеально, но могут быть применены законы полиномиальной регрессии и регрессии общего вида с некоторой погрешностью.
6.10. Методика выполнения моделирования фразы
1. В рабочем поле задать текстовую область с комментарием «Формирование вектора
выборки данных».
2. Задать строку Str, содержащую выборку символов любых смежных слов без пробе-
лов и знаков препинания.
38

3. Разработать, написать и отладить модуль, реализующий формирование два вектора
VY с кодами символов строки Str и VX – с их порядковыми номерами.
4. Построить график VY(VX).
5. Полученную закономерность VY(VX) исследовать с помощью регрессионного анали-
за. Сначала выполнить линейную регрессию, затем – полиномиальную, и в заключении – линейную общего вида. Описание этих видов регрессий приведено в разделе 6.9.
6. Для всех видов регрессий привести соответствующие им функции, графики, коэффициенты детерминации и аналитические выражения, соответствующие полученным законам.
Снабдить все действия комментариями.
7. При работе с полиномиальной регрессией провести исследования для нескольких
значений степени полинома.
Исследование лучше начать с полинома третьей степени. При этом необходимо анали-
зировать как коэффициент детерминации, так и график полиномиальной регрессии. Форма
кривой полинома должна максимально приближаться к опорным точкам зависимости
VY(VX). Постепенно степень полинома повышать (3, 4,…), при этом каждый раз контролировать кривую полинома и коэффициент детерминации, который должен стремиться к 1. Необходимо добиться, чтобы график полинома как можно ближе подошел к опорным точкам
вектора VY при R21.
При этом надо помнить, что не рекомендуется делать степень полинома очень боль-
шим, поскольку погрешность реализации возрастает, да и аналитическое выражение становиться весьма громоздким. Далеко не всегда, даже увеличивая степень полинома, можно
найти такие коэффициенты полинома, при которых график полиномиального закона точно
совпадет с узловыми точками вектора VY и коэффициент детерминации при этом станет равным 1 (R21).
8. При работе с линейной регрессией общего вида необходимо сначала проанализировать график VY(VX). При задании вектора F(x), содержащего функции в символьном виде,
необходимо учитывать форму этого графика (плавное его изменение sin(x), x3, ln(x) или имеются резкие выбросы tan(x)). Формой кривой определяются сами функций и их количество,
которые войдут в выражение регрессионного закона. Возможен вариант, при котором подобрать нужные функции быстро не получается. Тогда, варьируя одной функцией, меняя ее степень, аргумент, смещение, добиться максимального приближения графика к узловым точкам.
Потом аналогично поработать поочередно с другой, третьей и т.д. функциями. Пока не добьетесь нужного результата. Следует подобрать функции таким образом, чтобы график исследуемого закона максимально приблизился к узловым точкам выборки VY при этом коэффициент детерминации R21.
9. Из рассмотренных законов регрессии выбрать один. Для этого закона коэффициент
детерминации должен быть самым большим, аналитическое выражение по возможности не
очень громоздким и график функции проходить как можно ближе к узловым точкам.
10. Используя полученные аналитические выражения восстановить исходную строку
Str и подсчитать количество совпавших после восстановления фразы символов с символами
исходной строки Str. Пример программы приведен на рис. 6.20.
11. Рассчитанные по формулам P(x) и LA(x) коды сначала необходимо округлить до целых
значений, а затем преобразовать их в строки. Далее составить программу подсчета количества
совпадений символах восстановленной выборки с заданной. Как видно по примеру на рис. 6.20,
количество совпадений символов составило 2 – при использовании регрессии полиномиальной
и 3 – при использовании регрессии линейной общего вида.
39

Рис. 6.20. Восстановление заданной строки Str
12. По результатам расчета можно сделать выводы относительно возможности замены
текстовых данных их формульной зависимостью, полученной с помощью регрессионного анализа. Как показали исследования математическая модель заданной выборки, полученная с помощью регрессионного анализа, не дала адекватный результат, что говорит о сложности получения достоверной математической модели при работе с текстовой информацией.
Но если коды символов интерпретировать как некие физические величины (температура,
масса, скорость, прибыль и тому подобное), то регрессионный анализ дает аналитическое выражение, позволяющее рассчитать эти величины в промежутках между узловыми точками, оценить характер их изменения и даже предсказать с некоторой вероятностью их поведение за пределами исследуемого диапазона.
40
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
