Основы вычислений в MatLab. Получение справочных сведений в matlab Вычисление последующего элемента через предыдущие в матлаб

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

Работа с системой носит диалоговый характер и происходит по правилу «задал вопрос - получил ответ». Пользователь набирает на клавиатуре вычисляемое выражение, редактирует его (если нужно) в командной строке и завершает ввод нажатием клавиши ENTER. В качестве примера на рисунке показаны простейшие и вполне очевидные вычисления.

Даже из таких простых примеров можно сделать некоторые поучительные выводы:

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

* данные вводятся с помощью простейшего строчного редактора;

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

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

* знаком присваивания является привычный математикам знак равенства =, а не комбинированный знак:=, как во многих других языках программирования и математических системах;

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

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

* диалог происходит в стиле «задал вопрос - получил ответ».

Следующие примеры иллюстрируют применение системы MATLAB для выполнения еще ряда простых векторных операций. На рисунке представлено также окно браузера файловой системы, который имеется на вкладке Current Directory. В командном режиме вызов окна браузера файловой системы удобнее производить из панели инструментов активизацией кнопки после списка директорий системы MATLAB. Возможны случаи отказа от вычислений при неправильно установленной текущей директории, если нужные для вычислений m-файлы не обнаруживаются.

В большинстве математических систем вычисление sin(V) или exp(V), где V - вектор, сопровождалось бы выдачей ошибки, поскольку функции sin и exp должны иметь аргумент в виде скалярной величины. Однако MATLAB - матричная система, а вектор является разновидностью матрицы с размером 1Чn или nЧ1. Поэтому в нашем случае результат вычислений будет вектором того же размера, что и аргумент V, но элементы возвращаемого вектора будут синусами или экспонентами от элементов вектора V.

Матрица задается в виде ряда векторов, представляющих ее строки и заключенных в квадратные скобки. Для разделения элементов векторов используется пробел или запятая, а для отделения одного вектора от другого - точка с запятой. Для выделения отдельного элемента матрицы M используется выражение вида M(j,i), где M - имя матрицы, j - номер строки и i - номер столбца.

Для просмотра содержимого массивов удобно использовать браузер рабочего пространства Workspace. Каждый вектор и матрица в нем представляются в виде квадратика с ячейками, справа от которого указывается размер массива. Двойной щелчок по квадратику мышью ведет к появлению окна редактора массивов Array Editor. Работа с редактором массивов вполне очевидна - возможен не только просмотр элементов массивов, но и их редактирование и замена.

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

Работа с редактором массивов

To get started, select "MATLAB Help" from the Help menu.

>> type sin

sin is a built-in function.

>> help sin

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

Overloaded methods

>> V=

0.8415 0.9093 0.1411 -0.7568

Error using ==> ^

Matrix must be square.

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

Форма вывода и перенос строки в сессии

Следует отметить особенности вывода в системе MATLAB. Вывод начинается с новой строки, причем числовые данные выводятся с отступом, а текстовые - без него. Для экономии места в данной книге в дальнейшем вывод будет даваться без перевода на новую строку. Например, вывод вектора-строки

будет дан в виде:

Исключением является вывод векторов столбцов и матриц - тут будет сохранена более наглядная и присущая MATLAB по умолчанию форма вывода.

В некоторых случаях вводимое математическое выражение может оказаться настолько длинным, что для него не хватит одной строки. Тогда часть выражения можно перенести на новую строку с помощью знака многоточия «...» (3 или более точек), например:

s = 1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + 1/7 ...

1/8 + 1/9 - 1/10 + 1/11 - 1/12;

Максимальное число символов в одной строке командного режима - 4096, а в m-файле - не ограничено, но со столь длинными строками работать неудобно. В ранних версиях в одной строке было не более 256 символов.

Запуск примеров применения MATLAB из командной строки

MATLAB имеет множество примеров применения, часть из которых можно запускать прямо из командной строки. Например, команда

запускает m-файл bench.m демонстрационного примера тестирования системы.

1. Command Window (Окно команд).

Математические выражения пишутся в командной строке после знака приглашения « >> ». Например,

Для выполнения действия нажмем клавишу «Enter».

По умолчанию программа записывает результат в специальную переменную ans.

Для сохранения результата под другим именем используют имя переменной и знак присваивания « = », например

>> z = 1.25 /3.11

Редактировать в Command Window можно только текущую командную строку. Для того чтобы отредактировать ранее введенную команду, необходимо установить курсор в строку ввода и воспользоваться клавишами « » или« ».

Если команда заканчивается «;», то результат её действия не отображается в командной строке.

Командное окно можно закрыть кнопкой « », а кнопка « » служит для отделения окна от интерфейса системы. Вернуться к стандартной форме окна можно с помощью меню:

Главное Меню Desktop Desktop Layout Default .

Очистить командное окно можно с помощью меню:

Главное Меню Edit Clear Command Window .

Главное меню системы MatLab.

Главное меню MatLab содержит следующие пункты:

File (Файл) – работа с файлами;

Edit (Правка) – редактирование;

View (Вид) – управление окнами;

Web – связь с фирмой – разработчиком через Интернет;

Window (Окно) – связь с окнами системы;

Help (Справка) – связь со справочной системойMatLab.

Панель инструментов системы MATLAB.

Кнопки панели инструментов имеют следующие назначения:

New file (Создать) – выводит окна редакторов файлов;

Open file (Открыть) – открывает окна загрузки файлов;

Cut (Вырезать) – вырезает выделенный фрагмент и помещает в буфер обмена;

Copy (Копировать) – копирует выделенный фрагмент в буфера обмена;

Paste (Вставить) – переносит выделенный фрагмент из буфера обмена в строку ввода;

Undo (Отменить) – отменяет результата предыдущей операции;

Redo (Повторить) – повторяет результат предыдущей операции;

Simulink – создает модель Simulink (расширения MatLab );

Help Window (Помощь) – открывает окна справки.

4. Формат вывода результата вычислений.



При вводе вещественных чисел для отделения дробной части используется точка !

>> s = 0.3467819

Результат вычислений выводится в формате short (краткая запись числа), который определяется по умолчанию. Можно поменять формат на long (длинная запись числа).

>> format long

0.34678190000000

В списке Numerical Format имеются форматы чисел

short – краткая запись числа;

long – длинная запись числа;

short e – краткая запись числа в формате с плавающей точкой;

long e – длинная запись числа в формате с плавающей точкой;

short g – вторая форма краткой записи числа;

long g – вторая форма длинной записи числа;

Формат отображения числовых данных можно установить в меню File (файл) пункт Preferences (предпочтения). Перейти на вкладку Command Window (окно команд). В опции Text display (отображение текста), в списке Numeric format (числовой формат) установить short g , в опции Numeric display (отображение чисел) установить compact . Эти форматы вывода соответствуют выводу чисел в универсальной форме из пяти значащих цифр и с подавлением пробела между строками.

Основы вычислений в MatLab.

Для выполнения простейших арифметических операций в MatLab применяются операторы:

· сложение и вычитание +, – ;

· умножение и деление *, / ;

· возведение в степень ^ .

Некоторые специальные переменные :

ans – результат последней операции без знака присваивания;

eps – относительная погрешность при вычислениях с плавающей точкой;

pi – число ;

i или j – мнимая единица;

Inf – бесконечность ;

NaN – неопределенное значение.

Некоторые встроенные элементарные функции MatLab :

exp(x) – экспонента числа x;

log(x) – натуральный логарифм числа x;

sqrt(x) – квадратный корень из числа x;

abs(x) – модуль числа x;

sin(x), cos(x), tan(x), cot(x) – синус, косинус, тангенс, котангенс числа x;

asin(x), acos(x), atan(x), acot(x) – арксинус, арккосинус, арктангенс, арккотангенс числа x;

sec(x), csc(x) – секанс, косеканс числа x;

round(x) – округление числа x до ближайшего целого;

mod(x,y) – остаток от целочисленного деления x на y с учетом знака;

sign(x) – возвращение знака числа x.

Вычислим значение выражение

>> exp(–2.5)*log(11.3)^0.3 – sqrt((sin(2.45*pi)+cos(3.78*pi))/tan(3.3))

Если оператор не удается разместить в одной строке, то возможно продолжение его ввода в следующей строке, если в конце первой строки указать знак продолжения «…», например,

>> exp(–2.5)*log(11.3)^0.3 – ...

sqrt((sin(2.45*pi)+cos(3.78*pi))/tan(3.3))

Функции для работы с комплексными числами :

Ввод комплексного числа

>> z = 3 + 4i

3.0000 + 4.0000i

Функции abs(z), angle(z) возвращают модуль и аргумент комплексного числа , где , ;

complex(a,b) конструирует комплексное число по его действительной и мнимой части:

conj(z)возвращает комплексно-сопряженное число;

imag(z), real(z) возвращает мнимую и действительную часть комплексного числа z.

6. Векторы .

Ввод, сложение, вычитание, умножение на число.

Вектор в MatLab формируется с помощью оператора квадратные скобки . При этом элементы вектора-столбца разделяют точкой с запятой «;», а элементы вектора-строки разделяют пробелом « » или запятой « , ».

Введем вектор-столбец .

>> x =

Введем вектор-строку .

>> y =

Для транспонирования вектора применяют апостроф «’ »:

>> z = y’

Для нахождения суммы и разности векторов используются знаки « + » и «– »:

>> с = x + z

Умножение вектора на число осуществляется как справа, так и слева при помощи знака « * ».

Векторы могут быть аргументами встроенных функций, например,

>> d = sin(c)

Для обращения к элементам векторов используются скобки (), например,

>> x_2 = x(2)

Последний элемент вектора можно выбрать, набрав команду

>> X_end = x(end)

Из нескольких векторов можно составить один, например

>> r =

1.3 5.4 6.9 7.1 3.5 8.2

Символ двоеточие « : » используется для выделения нескольких элементов из вектора, например

>> w = r(3:5)

Символ двоеточие « : » также позволяет заменять элементы вектора, например,

>> r(3:5)= 0

1.3 5.4 0 0 0 8.2

Символ « : » также можно использовать для построения вектора, каждый элемент которого отличается от предыдущего на постоянное число, т.е. шаг, например

>> h =

1 1.2 1.4 1.6 1.8 2

Шаг может быть отрицательным (в этом случае начальное число должно быть больше конечного).

Шаг, равный единице, можно не указывать

>> k =

Основные функции для работы с векторами .

  • length(x) – определение длины вектора x;
  • prod(x)– перемножение всех элементов вектора x;
  • sum(x) – суммирование всех элементов вектора x;
  • max(x)– нахождение максимального элемента вектора x;
  • min(x)– нахождение минимального элемента вектора x.

Если вызвать функцию min или max с двумя выходными аргументами = min(x),

то первой переменной присваивается значение минимального (максимального элемента), а второй переменной присваивается номер этого элемента.

7 Матрицы .

Различные способы ввода матрицы .

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

>> A =

2. Матрицу можно вводить построчно, выполняя последовательность команд:

>> A = . Для получения решений в конкретные моменты времени t 0 , t 1 , …, t final (расположенные в порядке уменьшения или увеличения) нужно использовать tspan = [ t 0 t 1 … t final ];

y 0 вектор начальных условий;

Options аргумент, создаваемый функцией odeset (еще одна функция odeget или bvpget (только для bvp4c) позволяет вывести параметры, установленные по умолчанию или с помощью функции odeset/bvpset);

p 1, p 2,… произвольные параметры, передаваемые в функцию F ;

T , Y матрица решений Y , где каждая строка соответствует времени, возвращенном в векторе-столбце T .

Перейдем к описанию синтаксиса функций для решения систем ДУ (под именем solver подразумевается любая из представленных выше функций).

[T ,Y ]=solver(@F ,tspan ,y 0) интегрирует систему ДУ вида y ′ = F (t , y ) на интервале tspan с начальными условиями y 0 . @F дескриптор ОДУ-функции (можно также задавать функцию в виде "F "). Каждая строка в массиве решений Y соответствует значению времени, возвращаемому в векторе-столбце T .

[T ,Y ]=solver(@F ,tspan ,y 0 ,options) дает решение, подобное описанному выше, но с параметрами, определяемыми значениями аргумента options, созданного функцией odeset. Обычно используемые параметры включают допустимое значение относительной погрешности RelTol (по умолчанию 1e3) и вектор допустимых значений абсолютной погрешности AbsTol (все компоненты по умолчанию равны 1e6).

[T ,Y ]=solver(@F ,tspan ,y 0 ,options,p 1 ,p 2 …) дает решение, подобное описанному выше, передавая дополнительные параметры p 1 , p 2 , … в m -файл F всякий раз, когда он вызывается. Используйте options=, если никакие параметры не задаются.

Решение ОДУ первого порядка

ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ

· титульный лист;

· исходные данные варианта;

· решение задачи;

· результаты решения задачи.

Пример

Найти решение дифференциального уравнения на отрезке , для которого у (1,7) = 5,3.

Создаем в Command Window функция пользователя

g=@(x,y);

В синтаксисе функции @(x,y) x независимая переменная, y зависимая переменная, x -cos(y /pi ) правая часть ДУ.

Процесс решения осуществляется обращением в Command Window к решателю (солверу) следующим оператором:

Ode23(g,,);

Построение графика с сеткой осуществляется следующими операторами:

Результат представлен на рис. 1.1

Рис. 1.2.1. Визуализация численного решения

ЗАДАНИЕ

1. Найдите решения ДУ первого порядка , удовлетворяющего начальным условиям у(х 0 ) = у 0 на промежутке [a , b ].

2. Построить графики функции.

Варианты заданий .

№ варианта у(х 0 )=у 0 [a , b ]
y 0 (1,8)=2,6
y 0 (0,6)=0,8
y 0 (2,1)=2,5
y 0 (0,5)=0,6
y 0 (1,4)=2,2
y 0 (1,7)=5,3
y 0 (1,4)=2,5
y 0 (1,6)=4,6
y 0 (1,8)=2,6
y 0 (1,7)=5,3
y 0 (0,4)=0,8
y 0 (1,2)=1,4

Лабораторная работа № 2

Решение систем ОДУ

ЦЕЛЬ РАБОТЫ

Сформировать у студентов представления о применении систем ДУ в различных областях; привить умения решать задачу Коши для систем ДУ.

ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ

1. Изучить теоретическую часть. Выполните задания, соответствующие номеру Вашего варианта, и продемонстрируйте их преподавателю.

2. Оформите отчет по лабораторной работе, который должен содержать:

· титульный лист;

· исходные данные варианта;

· решение задачи;

· результаты решения задачи.

Пример

Решить систему

с использованием решателя ode23().

Решение:

1. Создать в редакторе m-файл функции вычисления правых частей ДУ.

Пусть имя в редакторе файла sisdu.m, тогда функция может иметь следующий вид:

function z=sisdu(t,y)

z1=-3*y(2)+cos(t)-exp(t);

z2=4*y(2)-cos(t)+2*exp(t);

>> t0=0;tf=5;y0=[-3/17,4/17];

>> =ode23("sisdu",,y0);

>> plot(t,y)

Рис. 1.3.1. Визуализация численного решения, полученного с помощью функции ode23.

1. Что значит решить задачу Коши для системы ДУ?

2. Какие существуют методы решения систем ДУ?

ЗАДАНИЕ

1. Найдите решение системы ДУ

удовлетворяющее начальным условиям на промежутке ;

2. Построить графики функций.

Для примера приводится функция решения 8-го варианта:

function z=ssisdu(t,y)

% вариант 8

z1=-a*y(1)+a*y(2);

z2=a*y(1)-(a-m)*y(2)+2*m*y(3);

z3=a*y(2)-(a-m)*y(3)+3*m*y(4);

z4=a*y(3)-3*m*y(4);

>> =ode23("ssisdu",,);

>> plot(t,100*y)

Рис. 1.3.2. Визуализация численного решения, полученного с помощью функции ode23.

Варианты заданий .

№ варианта Задания
a m
0,1 1,2
0,2 1,5
0,3 1,7
0,4 1,9
0,5
0,6 1,9
0,7 2,3
0,8 2,7
0,9
0,1 1,5
0,2 1,1
0,3

Лабораторная работа № 3

1.4Решение ОДУ n -го порядка

ЦЕЛЬ РАБОТЫ

Сформировать у студентов представления о применении ДУ высших порядков в различных областях; привить умения решать задачу Коши для ДУ высших порядков с помощью прикладных программ; развить навыки проверки полученных результатов.

ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ

1. Изучить теоретическую часть. Выполните задания, соответствующие номеру Вашего варианта, и продемонстрируйте их преподавателю.

2. Оформите отчет по лабораторной работе, который должен содержать:

· титульный лист;

· исходные данные варианта;

· решение задачи;

· результаты решения задачи.

Пример 1.

Решить ДУ второго порядка при данных начальных условиях .

Решение:

Сначала приведем ДУ к системе:

1. Создать m-файл функции вычисления правых частей ДУ.

Пусть имя файла sisdu_3.m, тогда функция может иметь следующий вид:

function z=sisdu_3(x,y)

z2=6*x*exp(x)+2*y(2)+y(1);

2. Выполнить следующие действия:

>> x0=0;xf=10;y0=;

>> =ode23("sisdu_3",,y0);

>> plot(x,y(:,1))

Рис. 1.4.1. Визуализация численного решения, полученного с помощью функции ode23.

ПРИМЕРНЫЕ ВОПРОСЫ НА ЗАЩИТЕ РАБОТЫ

1. Что значит решить задачу Коши для ДУ высших порядков?

2. Как привести ДУ m -го порядка к системе ДУ?

ЗАДАНИЕ

1. Найдите решение ДУ, удовлетворяющее начальным условиям на промежутке .

2. Построить графики функций.

Варианты заданий .

№ варианта Задания
Уравнения Начальные условия







Лабораторная работа № 4 – 5

Динамические системы (ДС)

ЦЕЛЬ РАБОТЫ

Знакомство студентов с основными понятиями ДС, их классификация, фазовое пространство ДС, кинематическая интерпретация системы ДУ, эволюция ДС. Уравнение движения маятника. Динамика осциллятора Ван дер Поля.

2. Динамическая система (ДС) математический объект, соответствующий реальным системам (физическим, химическим, биологическим и др.), эволюция которых однозначно определяется начальным состоянием. ДС определяется системой уравнений (дифференциальных, разностных, интегральных и т.д.), допускающих существование на бесконечном интервале времени единственность решения для каждого начального условия.

Состояние ДС описывают набором переменных, выбираемых из соображений естественности их интерпретации, простоты описания, симметрии и т.п. Множество состояний ДС образует фазовое пространство, каждому состоянию отвечает точка в нём, а эволюция изображается (фазовыми) траекториями. Чтобы определить близость состояний, в фазовом пространстве ДС вводят понятие расстояния. Совокупность состояний в фиксированный момент времени характеризуется фазовым объёмом.

Описание ДС в смысле задания закона эволюции также допускает большое разнообразие: оно осуществляется с помощью дифференциальных уравнений, дискретных отображений, с помощью теории графов, теории марковских цепей и т.д. Выбор одного из способов описания задает конкретный вид математической модели соответствующей ДС.

Математическая модель ДС считается заданной, если введены динамические переменные (координаты) системы, определяющие однозначно ее состояние, и указан закон эволюции состояния во времени.

В зависимости от степени приближения одной и той же системе могут быть поставлены в соответствие различные математические модели. Исследование реальных систем идет по пути изучения соответствующих математических моделей, совершенствование и развитие которых определяется анализом экспериментальных и теоретических результатов при их сопоставлении. В связи с этим под динамической системой мы будем понимать именно ее математическую модель. Исследуя одну и ту же ДС (к примеру, движение маятника), в зависимости от степени учета различных факторов мы получим различные математические модели.

Министерство образования Республики Беларусь

Учреждение образования

· contour 3(X , Y , Z ) – строит контурные линии для поверхности, полученные при расслоении трехмерной фигуры рядом секущих плоскостей, расположенных параллельно опорной плоскости фигуры.

В приведенном ниже примере показаны возможности применения описанных команд для построения графика поверхности Z = sin(X) cos(X).

>> =meshgrid(-3:0.1:3,-3:0.1:3); Z=sin(X).*cos(X);

>> subplot(3,2,1), plot3(X, Y,Z) % Рисунок 4.3 (а)

>> subplot(3,2,2), mesh(X, Y,Z) % Рисунок 4.3 (б)

>> subplot(3,2,3), surf(X, Y,Z) % Рисунок 4.3 (в)

>> subplot(3,2,4), surfc(X, Y,Z) % Рисунок 4.3 (г)

>> subplot(3,2,5),meshz(X, Y,Z) % Рисунок 4.3 (д)

>> subplot(3,2,6),contour3(X, Y,Z) % Рисунок 4.3 (е)


4.3. Форматирование графиков

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

Таблица 4.2 - Форматирование графиков

Действие

Средства графического интерфейса

Переход в режим редактирования.

Щелкнуть по кнопке Edit Plot в панели инструментов графического окна.

Форматирование линий и маркеров опорных точек графиков.

В режиме редактирования дважды щелкнуть по линии графика левой клавишей мыши. В появившемся окне Property Editor– Line установить все необходимые параметры линии (толщину, стиль, цвет и т. д.).

plot(X, Y,S), plot3(X, Y,Z, S)

(Описание команд приводится в п.4.1 и п.4.2)

Форматирование осей графиков.

В режиме редактирования дважды щелкнуть по оси графика. В появившемся окне Property Editor– Axes установить все необходимые параметры осей.

Заголовок графика и метки осей можно также с помощью команд Insert Title , Insert Xlabel, Insert Ylabel главного меню графического окна.

axes – управляет свойствами осей.

grid - включает и отключает координатную сетку.

xlabel(S), ylabel(S), zlabel(S) – устанавливает надписи возле осей. Здесь S – строковая константа или переменная.

title(S) – выводит заголовок графика

Нанесение надписей прямо на график.

Щелкнуть по кнопке Insert Text ,зафиксировать место надписи щелчком мыши и ввести нужный текст.

text(X, Y, S) – добавляет в двумерный график текст, заданный строкой S, так что начало текста расположено в точке с координатами (X, Y).

text(X, Y, Z, S) - добавляет текст в трехмерный график.

Нанесение линий и линий со стрелками прямо на график

Щелкнуть по одной из кнопок Insert Arraw или Insert Line . Установить указатель мыши в нужное место графика и при нажатой левой клавише мыши нарисовать линию.

Построение легенды

Insert, а затем команду legend.

legend(S1, S2, S3,…) – добавляет к текущему графику легенду с пояснениями в виде строк, указанных в списке параметров.

Вывод шкалы цветов

В главном меню графического окна выбрать команду Insert, а затем команду Colorbar.

colorbar(‘ vert’), colorbar(‘ horiz’) – выводит вертикальную или горизонтальную шкалу цветов.

Вращение графика

Щелкнуть по кнопке Rotate 3 D и вращать график с помощью мыши (может применяться также для двумерных графиков).

rotate3 d – задает поворот трехмерной фигуры.