Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Унифицированный интерактивный язык и среда программирования



УДК 336.67

Печатается по решению Редакционно-издательского

Редакционно-издательского Совета факультета ВМК Казанского государственного университета

Протокол №1 от 5 февраля 2010 г.

Научный редактор

Доктор физ.-мат. наук, проф. И.Б.Бадриев

Авторы:

Доктор физ.-мат.наук В.Р.Фазылов

Кандидат физ.-мат. наук О.Н.Шульгина,

Кандидат физ.-мат. наук Н.К.Щербакова.

Рецензенты:

Кандидат физ.-мат. наук, доц. КГУ М.Н.Николаев,

Кандидат физ.-мат. наук, доц. ТГГПУА.А.Попов.

К настоящему времени издано и продолжает издаваться большое число учебников и учебных пособий, знакомящих с системой MATLAB. Однако большинства из них ограничивается описание возможностей системы и знакомству с основными принципами программирования в MATLABе. Целью настоящего учебного пособия явилось демонстрация возможностей MATLAB как инструмента, облегчающего разработку и анализ возможностей алгоритмов на примере алгоритмов решения некорректных задач.

Первая глава посвящена описанию основных принципов работы с MATLAB. Во Вторая глава посвящена методам решения некорректных задач. Алгоритм обработки экспериментальных данных методом опорных векторов с составным шагом описан в третьей главе. Там же показана его реализация средствами MATLAB. Четвертая глава посвящена методам интерполяции и аппроксимации данных. В пятой главе представлен алгоритм выделения элементарных составляющих из сложного сигнала.

Настоящее учебное пособие может быть полезно для студентов, обучающихся по специальностям “Математические методы в экономике” и “Прикладная математика”.

© Казанский государственный

университет, 2010

 

© Фазылов В.Р., 2010

 

Введение.

МATLAB [1, 2] выполняет множество задач для поддержки научных и инженерных работ, начиная от сбора и анализа данных до разработки приложений. Среда MATLAB объединяет математические вычисления, визуализацию и мощный технический язык. Встроенные интерфейсы позволяют получить быстрый доступ и извлекать данные из внешних устройств, файлов, внешних баз данных и программ.

MATLAB содержит много функций для осуществления математических вычислений и анализа данных, включая:

  • Линейную алгебру и арифметику матриц, линейные уравнения, собственные значения, сингулярные значения и матричные разложения
  • Полиномы и интерполяцию – стандартные полиномиальные операции, такие как вычисление корней полиномов, дифференцирование, аппроксимация кривыми и разложение функций
  • Обработка сигналов – цифровые фильтры, быстрое преобразование Фурье и свертка
  • Анализ данных и статистика – описательная статистика, предварительная обработка данных, регрессия, аппроксимация кривыми, фильтрация данных
  • MATLAB-функции, работающие не с массивами данных, а с математическими функциями, включая функции построения графиков, оптимизации, нахождения нулей и численного интегрирования
  • Дифференциальные уравнения – решение дифференциальных уравнений, включая задачи с начальными значениями для обыкновенных дифференциальных уравнений и дифференциально-алгебраические уравнения, а также задачи с граничными условиями и смешанного типа для систем эллиптических и параболических уравнений с частными производными.

Унифицированный интерактивный язык и среда программирования

Язык MATLAB разработан для интерактивных и автоматических вычислений. С оптимизированными матричными функциями можно осуществить интерактивный анализ, в то же время языковые возможности структурирования программ позволят эффективно разрабатывать пользовательские алгоритмы и приложения. Универсальный язык позволяет решать множество задач, включая сбор данных, анализ, разработку алгоритмов, имитацию систем и разработку приложений. Возможности языка включают структуры данных, объектно-ориентированное программирование, инструменты разработки графического пользовательского интерфейса, функции отладки и возможность подключать C, C++, Fortran и Java процедуры.

Упрощение кода за счет векторизации

Многие математические функции MATLAB оперируют непосредственно с векторами и матрицами. В результате задачи, которые могли бы включать десятки строк и требовали интенсивных вычислений с циклами на языке С, требуют вызова только одной функции в MATLAB. Более короткие программы требуют меньше времени на их выполнение и легче настраиваются.

Интуитивный язык

Тот же самый язык используется в MATLAB при интерактивных вычислениях и при разработке программ в редакторе-отладчике.

Инструменты проектирования

MATLAB включает множество инструментов для поддержки разработки аналитических процедур, алгоритмов и законченных приложений. Эти инструменты включают:

  • Командное окно для интерактивных вычислений и проектирования
  • Окно Command History для записи всех команд в течение интерактивной MATLAB сессии
  • Инструмент Current Directory для нахождения и навигации по файлам и директориям
  • Редактор-отладчик M-файлов позволяет
    • разрабатывать и отлаживать M-файлы (функций и сценариев)
    • выделять различными цветами резервные слова и комментарии, проверяет скобки и позволяет пошаговое выполнение кода
    • нумеровать строки
    • устанавливать контрольные точки, останавливаться на ошибке или на предупреждении
    • вычислять переменные по месту нахождения
    • получать контекстно-чувствительную справка по функциям
  • Программа протоколирования производительности M-файлов
    • вычисляет время, затрачиваемое в каждой строке функции
    • выводит отчет (или график) распределения времени.

MATLAB содержит инструменты для:

  • Сбора данных
  • Анализа и обработки данных
  • Визуализации и цифровой обработки сигналов и изображений
  • Создания алгоритмов и проектирования
  • Моделирования и имитации
  • Программирования и разработки приложений

В настоящей работе на примере задач обработки экспериментальных данных показан весь цикл разработки алгоритмов при помощи MATLAB, начиная от написания и отладки программы и заканчивая анализом границ применимости алгоритма.

 

Глава 1. Основы работы с системой Matlab.

 

Система Matlab построена таким образом, что любые вычисления можно проводить в режиме прямых вычислений (командном режиме), то есть без подготовки программ. Работа с системой в режиме прямых вычислений носит диалоговый характер. Пользователь набирает на клавиатуре вычисляемое выражение, редактирует его в командной строке, если в этом возникает необходимость и завершает ввод нажатием клавиши Enter.

Основные правила работы в командном режиме:

· для приглашения ввода исходных данных или команды используется символ > >;

· встроенные функции (например, cos) записываются строчными буквами, а их аргументы записываются в круглых скобках;

· для блокировки вывода результата вычислений некоторого выражения после него нужно установить знак; (точка с запятой);

· если не указана переменная, на которую записывается результат вычислений, то Matlab назначает такую переменную с именем ans;

· результат вычислений выводится в строках вывода (без знака > > ).

Пример записи вычислений.

» 6+12

ans =

» y=1;

» f=cos(1)

f =

0.5403

Сеанс работы с MATLAB принято называть сессией. Сессия является текущим документом, отражающим работу пользователя с системой. Полученные в ходе сессии значения переменных и функций, расположенные в рабочей области памяти можно записать в файл с форматом.mat, используя команду save. Команда load позволяет загрузить данные из файла в рабочую область. Фрагменты сессии можно оформить в виде дневника командой diary.

Работа в режиме сессии не является программированием. В MATLAB процесс программирования путем задания последовательности действий, записанной в виде m-файла. Для создания m-файлов может использоваться как встроенный редактор, так и любой текстовый редактор, поддерживающий формат ASCII. Подготовленный и записанный на диск m-файл становится частью системы, и его можно вызвать как из командной строки, так и из другого m-файла. Существует два типа m-файлов: файлы-сценарии и файлы-функции.

Файл-сценарий является просто записью серии команд без входных и выходных параметров. Он имеет следующую структуру:

%Основной комментарий

%Дополнительный комментарий

Тело файла с любыми выражениями.

Свойства файлов-сценариев:

· они не имеют входных и выходных аргументов

· работают с данными из рабочей области;

· в процессе выполнения не компилируются.

Основной комментарий выводится при выполнении команд lookfor (поиск m-файла по ключевому слову) и help имя_каталога. Полный комментарий выводится при выполнении команды help имя_файла.

Пример файла-сценария.

%Plot with color yellow

%Строит график косинусоиды в интервале [xmin, xmax] желтого цвета

% c наброшенной масштабной сеткой

x=xmin: 0.1: xmax;

plot (x, sin(x), ’y’)

grid on

Этот файл нельзя запустить без предварительной подготовки, заключающейся в задании в сессии значений переменных xmin, xmax. Переменные, используемые в файлах-сенариях являются глобальными и действуют одинаково в командах сессии и в внутри файла-сценария. Поэтому заданные в сессии значения переменных используются и в теле функции. Имена файлов-сценариев нельзя использовать в качестве параметров функций, поскольку файлы-сценарии не возвращают значений.

Файл-функция является типичным объектом языка программирования системы MATLAB. Он содержит входные и выходные параметры и использует аппарат локальных переменных. Структура файла-сценария с одним выходным параметром имеет вид:

function var=f_name(Список_параметров)

%Основной комментарий

%Дополнительный комментарий

%Тело файла с любыми выражениями

var=выражение

Свойства файлов-функций:

· он начинается с объявления function, после которого указывается имя переменной var – выходного параметра, имя самой функции и список ее входных параметров;

· функция возвращает свое значение и может использоваться в виде name(Список_параметров) в математических выражениях;

· все переменные, используемые в файла-функциях являются локальными;

· правила ввода комментариев те же, что у файлов-сценариев;

· файл-функция служит средством расширения системы MATLAB;

· при обнаружении файла-функции он компилируется и эатем исполняется, а созданные машинные коды хранятся в рабочей области системы MATLAB.

Если выходных параметров больше одного, то они указываются в квадратных скобках после слова function.

function [va1, var2, …]=f_name(Список_параметров)

%Основной комментарий

%Дополнительный комментарий

%Тело файла с любыми выражениями

var1=выражение

var2=выражение

Такая функция во многом напоминает процедуру. Ее нельзя слепо использовать непосредственно в математических выражениях, поскольку она возвращает не единственный результат. Если функция используется как имеющая единственный выходной параметр, но имеет ряд выходных параметров, то для возврата значения будет использоваться первый из них.

Для языка системы MATLAB различие между командами (выполняемыми в сессии) и программными операторами (выполняемыми из m-файла) является условным. И команды и программные операторы могут выполнятся из программы и в режиме прямых вычислений.

MATLAB имеет интерактивную систему помощи, которая реализуется с помощью ряда команд. Одной из них является команда

»help

которая выводит весь список папок, содержащих m-файлы. Для получения справки по какому-либо конкретному объекту используются команды

»help имя

где имя- имя объекта, для которого требуется вывод справочной информации. Это может быть функция, константа и т.д.

Пример справки по функции sin.

» help sin

SIN Sine.

SIN(X) is the sine of the elements of X.

Overloaded methods

help sym/sin.m

В некоторых случаях удобен поиск m-функций по ключевым словам. Для этого служит команда

lookfor Ключевое слово

или

lookfor ‘Ключевые слова’.

MATLAB – система, специально предназначенная для проведения сложных вычислений с векторами, матрицами и массивами. При этом она по умолчанию предполагает, что каждая заданная переменная- это вектор, матрица или массив. Например, если задано X=1, то значит, что X– это вектор с единственным элементом, имеющим значение 1. если нужно задать вектор из трех элементов, то их значения следует перечислить в квадратных скобках, разделяя пробелами. Так, например, присваивание

» V=[6 8 9]

V =

6 8 9

задает вектор V, имеющий три элемента со значениями 6, 8 и 9.

Для разграничения строк матрицы используется знак; (точка с запятой).

» M=[1 2 3; 4 5 6; 7 8 9];

» M

M =

1 2 3

4 5 6

7 8 9

Для указания отдельного элемента вектора или матрицы используются выражения V(j) или M(i, j). Например,

» M(2, 2)

ans =

» M(2, 2)=10;

» M

M =

1 2 3

4 10 6

7 8 9

Выражение M(i) с одним индексом дает доступ к элементам матрицы, развернутой в один столбец.

» M(2)

ans =

Имеется также ряд особых функций для задания векторов и матриц. Например, функция magic(n) задает магическую матрицу, у которой сумма всех строк, всех столбцов и диагоналей равна одному и тому же числу.

» M=magic(4)

M =

16 2 3 13

5 11 10 8

9 7 6 12

4 14 15 1

» sum(M) % Суммирование матрицы по столбцам

ans =

34 34 34 34

» sum(M') % '-означает транспонирование матрицы

ans =

34 34 34 34

» sum(diag(M)) % Функция diag выделяет главную

% диагональ матрицы

ans =

Для создания единичной матрицы служит функция eye:

» eye(3, 4)

ans =

1 0 0 0

0 1 0 0

0 0 1 0

Для создания матриц, все элементы которых – единицы, используется функция ones:

» ones(4)

ans =

1 1 1 1

1 1 1 1

1 1 1 1

1 1 1 1

Описанный способ задания матриц позволяет выполнить операцию конкатенации – объединение малых матриц в большую.

» a=[1 2 3; 4 5 6; 7 8 9]

a =

1 2 3

4 5 6

7 8 9

» b=magic(3)

b =

 

8 1 6

3 5 7

4 9 2

» c=[a b]

c =

1 2 3 8 1 6

4 5 6 3 5 7

7 8 9 4 9 2

В случае необходимости произвести формирование упорядоченных числовых последовательностей используется оператор: (двоеточие):

Начальное_значение: Шаг: Конечное_значение.

Примеры использования оператора:

» 1: 7

ans =

1 2 3 4 5 6 7

» j=1: 3: 15

j =

1 4 7 10 13

» i=20: -5: 0

i =

20 15 10 5 0

» v=0: pi/2: 2*pi

v =

0 1.5708 3.1416 4.7124 6.2832

» r=1:.2: 0

r =

Empty matrix: 1-by-0

» r=1: -.2: 0

r =

1.0000 0.8000 0.6000 0.4000 0.2000 0

Таким образом формируется возрастающая последовательность чисел с равномерным шагом. Если Шаг не задан, то он принимает значение 1. Если конечное значение указано меньшим, чем начальное значение, то выдается сообщение об ошибке.

В системе MATLAB использование операторов требует непременного учета того факта, что пользователь работает в матричной системе. Рассмотрим следующий характерный пример:

x =

1 2 3 4 5

» cos(x)

ans =

0.5403 -0.4161 -0.9900 -0.6536 0.2837

» sin(x)/x

ans =

-0.0862

» sin(x)./x

ans =

0.8415 0.4546 0.0470 -0.1892 -0.1918

Вычисление массива косинусов выполнилось корректно, но вычисление массива значений функции sin(x)/x вместо ожидаемого массива с шестью элементами в первом случае вернуло единственное значение. Причина в том, что оператор / вычисляет отношение двух матриц. Если они одной размерности, то результат будет одним числом, чтобы действительно получить вектор значений sin(x)/x, надо использовать специальный оператор поэлементного деления массивов –./. В этом случае будет получен массив чисел. Также работает поэлементное сложение (.+), поэлементное вычитание (.-), поэлементное умножение (.*).

Далее приведен пример того, что правила матричной алгебры должны выть учтены при работе с переменными MATLAB. Знак ‘ означает транспонирование матриц

x =

1 2 3 4 5

» sin(x)*x

??? Error using ==> *

Inner matrix dimensions must agree.

» (sin(x))'*x

ans =

0.8415 1.6829 2.5244 3.3659 4.2074

0.9093 1.8186 2.7279 3.6372 4.5465

0.1411 0.2822 0.4234 0.5645 0.7056

-0.7568 -1.5136 -2.2704 -3.0272 -3.7840

-0.9589 -1.9178 -2.8768 -3.8357 -4.7946

» (sin(x))*x'

ans =

-4.7384

» a=[1 2 3; 4 5 6]

a =

1 2 3

4 5 6

» b=[6 7 8; 9 1 2]

b =

6 7 8

9 1 2

» d=a*b

??? Error using ==> *

Inner matrix dimensions must agree.

» d=a*b'

d =

44 17

107 53

Как и в любом языке программирования в языке системы MATLAB предусмотрены управляющие структуры. Условный оператор if в общем записывается следующим образом:

if Условие

Инструкции_1

elseif Условие

Инструкции_2

else

Инструкции_3

end

В качестве операторов отношения используются следующие операторы: == (равно), ~= (неравно), <, >, < =, > =.

Конструкция цикла for…end имеет вид:

for var=Выражение. Инструкция. ….Инструкция end

Выражение записывается в виде s: d: e, где s – начальное значение переменной цикла var, d – приращение этой переменной и e – ее конечное значение. Возможна и запись в виде s: e ( в этом случае d=1).

» for x=0:.25: 1 x^2, end;

ans =

ans =

0.0625

ans =

0.2500

ans =

0.5625

ans =

Оператор continue передает управление в следующую итерацию цикла, пропуская операторы, которые следуют за ним. Причем во вложенных циклах он передает управление на следующую итерацию основного цикла. Оператор break может использоваться для досрочного прерывания выполнения цикла.

Цикл типа while повторяется до тех пор, пока выполняется Условие:

while Условие

Инструкцииe

end

Для осуществления ветвления используется конструкция с переключателем типа switch:

switch switch_выражение

case case_выражение

Список_инструкций

case { case_выражение1, case_выражение2, case_выражение3…}

Список_инструкций

otherwise

Список_инструкций

End

Литература

 

1. Дьяконов В.П. MATLAB 6: учебный курс. СПб: Питер, 2001. – 592 с.

2. Салахов М.Х., Щербакова Н.К. MATLAB-пакет прикладных программ для решения обратных задач спектроскопии (Методические указания). Казань, Изд-во КГУ, 1993. – 32 с.

3. Турчин В.Ф., Козлов В.П., Малкевич М.С. Использование методов математической статистики для решения некорректных задач // УФН, 1970, т. 102, вып. 3. – С. 345-386 (1983).

4. Тихонов А.Н., Арсенин В.Я. Методы решения некорректных задач. 2-е изд. М.: Наука, 1979. – 200 c.

5. Грачев И.Д., Салахов М.Х., Фишман И.С. Статистическая регуляризация при обработке эксперимента в прикладной спектроскопии. Казань: Изд-во КГУ, 1986. – 180 с.

6. Василенко Г.И. Теория восстановления сигналов. М.: Советское радио, 1979.

7. Грачев И.Д., Салахов М.Х., Щербакова Н.К. Проекционный алгоритм сглаживания экспериментальных данных // Автометрия, 1989, № 4. – С. 76-81.

8. Хермен Г. Восстановление изображений по проекциям. М.: Мир, 1983.

9. Брэгман Л.М. Нахождение общей точки выпуклых множеств методом последовательного проектирования // Докл. АН СССР. Серия Матем., 1965, т. 162, № 3. – С. 487-490.

10. Фазылов В.Р. Один общий метод отыскания точки выпуклого множества // Изв. вузов. Матем., 1983, № 6. – С. 43-51.

11. Фазылов В.Р. Метод опорных векторов с составным шагом // Сеточные методы для краевых задач и приложения: (Матер. 4 Всеросс. сем., г. Казань, 13-16 сент. 2002 г.). Казань: Казан. матем. об-во, 2002. – С. 106-109.

12. Волков Е.А. Численные методы.М.: Наука, 1987, с.75.

13. Нигматуллин Р.Р., Салахов М.Х., Щербакова Н.К. Разделение сложного спектра на лоренцевские составляющие.// Журнал прикладной спектроскопии, -1988-т.49. №5 с.-820

14. Хемминг Р.В. Численные методы. М.: Наука, 1972, 400 с.

15. Салахов М.Х, Харинцев С.С. Математическая обработка и интерпретация математического эксперимента. Казань: Изд-во КГУ, 2000г., 142 с.

16. Hadamard J. Sur les problemes aux derives particles et leur significations physiques, Bull. Univ. Prinston.-1902.-V.13.-P.49.

17. Hadamard J. Le probleme de Gauchy et les equations aux derivees partielles lineaires hiberboliques.-Paris. Hermann, 1932, 352 p

18.. Лаврентьев М.М. О некоторых некорректных задачах математической физики. – Новосибирск: Изд-во Сиб. отделения АН СССР, 1962, 68 с.

19. Лаврентьев М.М. Романов В.Г., Шишатский С.П. Некорректные задачи математической физики и анализа.– М.: Наука. 1980, 288 с.

20. Федотов А.М. Некорректные задачи со случайными ошибками в данных.– Новосибирск, Наука, 1982, 280 с.

21. Краснов М.Л. Интегральные уравнения.– М.: Наука. 1975.

22. Воробьев Ю.В. Метод моментов в прикладной математике.– М.: Физматгиз, 1958.

23. Раутиан С.Г. Реальные спектральные приборы.– УФН, 1958, т.66, вып.3, с.475.

24. Линник Ю.В. Метод наименьших квадратов и основы теории обработки наблюдений.– М.: Физматгиз. 1958.

25. Фаддеева В.Н., Фаддеев Д.К. Вычислительные методы линейной алгебры.– М.: Физматгиз. 1960.

26. Марчук Г.И., Кузнецов Ю.А. Итерационные методы и квадратичные функционалы.– В кн.: Методы вычислительной математики.– Новосибирск: Наука. 1975.

27. Тихонов А.Н. Об устойчивости обратных задач.–ДАН СССР, 1962, т.39, вып.5

28..Марчук Г.И. О постановке некоторых обратных задач.–ДАН СССР, 1964, т.156, вып.3.

29. Лаврентьев М.М. Об интегральных уравнениях первого рода.–ДАН СССР, 1959, т.127, вып.1.

30. Иванов В.К. О линейных некорректных задачах.–ДАН СССР, 1962, т.145, вып.2.

31. Phillips D.L. A technique for the numerical solution of certain integral equations of the first kind.–J. Assoc. Comp. Mash., 1962, v.9, №1.

32. Латтес Р., Лионс Ж.Л. Метод квазиобращения и его приложения: Пер. с англ.– М: Мир, 1970.

33. Жуковский Е.Л. Статистическая регуляризация алгебраических систем уравнений.– ЖМФ и МФ, 1972, т.12, вып.1.

34. Лаврентьев М.М., Васильев В.Г. О постановке некорректных задач математической физики.– Сиб. матем. журн., 1966, т.7, вып.3.

35. Тихонов А.Н. О решении некорректно поставленных задач.–ДАН СССР, 1963, т.153, вып.3.

36. Рао С.Р. Линейные статистические методы и их приложения: Пер. с англ.– М.: Наука, 1968.

37. Канторович Л.В.– Сиб. матем. журн., 1962, т.3, вып.5. – с.701.

38. Преображенский Н.Г., Пикалов В.В. Неустойчивые задачи диагностики плазмы.– Новосибирск: Наука, 1982, 236 с.

39. Salakhov M.Kh.– Spectrochim. Acta Rev, 1993, v.5, №6, p.399.

40. Морозов В.А. Линейные и нелинейные некорректные задачи.– Итоги науки и техники: Математический анализ/ВИНИТИ.– 1973.

Содержание

Стр.

Введение………………………………………………………………….4

Глава 1. Основы работы с системой MATLAB…...………………………8

Глава 2. Задачи восстановления сигналов……………………………….24

Глава 3. Обработка экспериментальных данных методом опорных векторов с составным шагом………………………………...……………54

Глава 4. Интерполяция и аппроксимация данных… ………………….75

Глава 5. Определение параметров составляющих сложного сигнала….83

Литература…………………………………………………………………93

 

 

Приложение. Некоторые функции и операторы MATLAB.

 

· image(Z) – возвращает мнимые части элементов массива Z.

· real(Z) – возвращает вещественные части элементов комплексного массива Z.

· conj(Z) – возвращает число, комплексно-сопряженное аргументу Z.

· linespace(a, b, n) – генерирует n точек, равномерно распределенный в интервале от a до b. linespace(a, b) – возвращает линейный массив из 100 точек, равномерно распределенных в интервале от a до b.

· D=size(a) – для mxn матрицы A возвращает двухэлементный вектор-строку, в котором первая составляющая– число строк m, а вторая составляющая – число столбцов n. [m, n]=size(A) возвращает число рядов и столбцов в разных выходных параметрах m и n.

· rand – генерирует массивы случайных чисел, значения элементов которых равномерно распределены в промежутке (0, 1). rand(n) – возвращает матрицу размера nxn. rand(n, m) – возвращает матрицу размера mxn. rand(size(A)) – возвращает массив того же размера, что и A, с элементами, распределенными по равномерному закону.

· X=diag(v) –помещает вектор v на главную диагональ.V=diag(X) – возвращает главную диагональ матрицы X.

· det(X) – возвращает определитель квадратной матрицы X.

· rank(A) – возвращает количество сингулярных чисел, которые являются большими, чем заданный по умолчанию допуск.

· norm(X, p), где p– целое положительное число, – возвращает корень степени p из суммы абсолютных значений элементов вектора X, возведенный в степень p.

· inv(X) – возвращает матрицу, обратную квадратной матрице X.Выдается предупреждающее сообщение, если X плохо масштабирована или близка к вырожденной. B=pinv(A) возвращает матрицу, псевдообратную матрице А.

· fft(X) – возвращает для вектора X дискретное преобразование Фурье, по возможности используя алгоритм быстрого преобразование Фурье. Если X – матрица, функция fft возвращает преобразование Фурье для каждого столбца матрицы. Ifft(F) – возвращает результат дискретного обратного преобразования Фурье вектора F.

· max(A) – возвращает наибольший элемент, если A– вектор; или возвращает вектор-строку, содержащую максимальные элементы каждого столбца, если А– матрица.

· min (A) – возвращает наименьший элемент, если A– вектор; или возвращает вектор-строку, содержащую минимальные элементы каждого столбца, если А– матрица.

· mean(A) – возвращает арифметическое среднее значение элементов массива, если A – вектор или вектор – строку, содержащую средние значения каждого столбца, если А – матрица.

· sort(A) – в случае одномерного массива А сортирует и возвращает элементы по возрастанию их значений; в случае двумерного массива происходит сортировка и возврат элементов каждого столбца. Допустимы вещественные, комплексные и строковые элементы. Если А принимает комплексные значения, то элементы сначала сортируются по абсолютному значению, а затем, если абсолютные значения равны, по аргументу.

· plot(X, Y) – строит график функции y(x), координаты точек (x, y) которой берутся из векторов одинакового размера X, Y. Если X или Y – матрица, то строится семейство графиков по данным, содержащимся в колонках матрицы.

· [B, d]=spdiags(A) – извлекает все ненулевые диагонали из матрицы A размера mxn. B– матрица размера min(m, n)xp, столбцы которой p являются ненулевыми диагоналями A. d – вектор длины p, целочисленные элементы которого точно определяют номера диагоналей матрицы A (положительные номера – выше главной диагонали, отрицательные – ниже).

· nnz(X) – возвращает число ненулевых элементов матрицы X.

· lsqr(A, B) – возвращает точное Решение X системы линейных уравнений A*X=B, если матрица хорошо обусловленная. В противном случае – возвращает решение, полученное итерационным методом наименьших квадратов. Матрица коэффициентов A должна быть прямоугольной размера mxn, а вектор-столбец правых частей уравнений B должен иметь размер m. Условие m³ n может быть и необязательным. Функция lsq начинает итерации от начальной оценки, по умолчанию представляющий собой вектор размером n, состоящий из нулей. Итерации производятся или до сходимости к решению, или до появления ошибки, или до достижения максимального числа итераций (по умолчанию равного min(20, m, n). Сходимость достигается, когда отношение вторых норм векторов norm(B-Ax)/norm(B) меньше или равно погрешности метода tol(по умолчанию 10-6).

· A(:, j) j-ый столбец из матрицы A.

· A(i,: j) j-ая строка из матрицы A.

· A(j: k) – это A(j), A(j+1), …A(k).

· A(:, j: k) – это A(:, j), A(:, j+1), …A:, (k).

· A(: ) – записывает все элементы массива A в виде столбца.

· A(m,: ) – удаляет строку m из матрицы A.

· A(:, n) – удаляет столбец n из матрицы A.

· /правое деление. Выражение X=B/A дает решение систем линейных уравнений AX=B, где A – матрица размером mxn и B – матрица размера nxk;

· \ левое деление. Выражение X=B\A дает решение систем линейных уравнений AX=B, где A – матрица размером mxn и B – матрица размера nxk.

 

 

УДК 336.67

Печатается по решению Редакционно-издательского

Редакционно-издательского Совета факультета ВМК Казанского государственного университета

Протокол №1 от 5 февраля 2010 г.

Научный редактор

Доктор физ.-мат. наук, проф. И.Б.Бадриев

Авторы:

Доктор физ.-мат.наук В.Р.Фазылов

Кандидат физ.-мат. наук О.Н.Шульгина,

Кандидат физ.-мат. наук Н.К.Щербакова.

Рецензенты:

Кандидат физ.-мат. наук, доц. КГУ М.Н.Николаев,

Кандидат физ.-мат. наук, доц. ТГГПУА.А.Попов.

К настоящему времени издано и продолжает издаваться большое число учебников и учебных пособий, знакомящих с системой MATLAB. Однако большинства из них ограничивается описание возможностей системы и знакомству с основными принципами программирования в MATLABе. Целью настоящего учебного пособия явилось демонстрация возможностей MATLAB как инструмента, облегчающего разработку и анализ возможностей алгоритмов на примере алгоритмов решения некорректных задач.

Первая глава посвящена описанию основных принципов работы с MATLAB. Во Вторая глава посвящена методам решения некорректных задач. Алгоритм обработки экспериментальных данных методом опорных векторов с составным шагом описан в третьей главе. Там же показана его реализация средствами MATLAB. Четвертая глава посвящена методам интерполяции и аппроксимации данных. В пятой главе представлен алгоритм выделения элементарных составляющих из сложного сигнала.

Настоящее учебное пособие может быть полезно для студентов, обучающихся по специальностям “Математические методы в экономике” и “Прикладная математика”.

© Казанский государственный

университет, 2010

 

© Фазылов В.Р., 2010

 

Введение.

МATLAB [1, 2] выполняет множество задач для поддержки научных и инженерных работ, начиная от сбора и анализа данных до разработки приложений. Среда MATLAB объединяет математические вычисления, визуализацию и мощный технический язык. Встроенные интерфейсы позволяют получить быстрый доступ и извлекать данные из внешних устройств, файлов, внешних баз данных и программ.

MATLAB содержит много функций для осуществления математических вычислений и анализа данных, включая:

  • Линейную алгебру и арифметику матриц, линейные уравнения, собственные значения, сингулярные значения и матричные разложения
  • Полиномы и интерполяцию – стандартные полиномиальные операции, такие как вычисление корней полиномов, дифференцирование, аппроксимация кривыми и разложение функций
  • Обработка сигналов – цифровые фильтры, быстрое преобразование Фурье и свертка
  • Анализ данных и статистика – описательная статистика, предварительная обработка данных, регрессия, аппроксимация кривыми, фильтрация данных
  • MATLAB-функции, работающие не с массивами данных, а с математическими функциями, включая функции построения графиков, оптимизации, нахождения нулей и численного интегрирования
  • Дифференциальные уравнения – решение дифференциальных уравнений, включая задачи с начальными значениями для обыкновенных дифференциальных уравнений и дифференциально-алгебраические уравнения, а также задачи с граничными условиями и смешанного типа для систем эллиптических и параболических уравнений с частными производными.

Унифицированный интерактивный язык и среда программирования

Язык MATLAB разработан для интерактивных и автоматических вычислений. С оптимизированными матричными функциями можно осуществить интерактивный анализ, в то же время языковые возможности структурирования программ позволят эффективно разрабатывать пользовательские алгоритмы и приложения. Универсальный язык позволяет решать множество задач, включая сбор данных, анализ, разработку алгоритмов, имитацию систем и разработку приложений. Возможности языка включают структуры данных, объектно-ориентированное программирование, инструменты разработки графического пользовательского интерфейса, функции отладки и возможность подключать C, C++, Fortran и Java процедуры.


Поделиться:



Последнее изменение этой страницы: 2017-03-17; Просмотров: 424; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.195 с.)
Главная | Случайная страница | Обратная связь