- •Основные понятия Matlab
- •ВЫЧИСЛЕНИЯ
- •Особенности ввода команд и данных
- •Элементы данных в ML
- •Переменные в ML
- •Выражения
- •ОПЕРАЦИИ
- •Простейшие арифметические операции (АО)
- •Операции отношения
- •Логические операции
- •Приоритет элементарных операций в ML
- •Основные математические функции MatLab
- •Ввод и вывод информации. Операторы ввода/вывода
- •<имя переменной>= input(<текст>)
- •Для этого используют несколько способов.
- •disp(strcat('x=', num2str(x)))
- •y=sprintf('x=%3.1f ', x)
- •%[флаг][ширина поля вывода][точность] тип (спецификатор) формата
- •x=<значение>; y=<значение>; z=<значение>;
- •>> sprintf('x=%4.2f; y=%5.3f; z=%d;',x,y,z)
- •Условный оператор
- •МНОЖЕСТВЕННЫЙ ВЫБОР
- •Определенные циклы
- •Неопределенные циклы
- •ЗАДАНИЕ И ОБРАБОТКА ВЕКТОРОВ И МАТРИЦ
- •Способы задания векторов
- •<имя пер.>=[<значение1> <значение2> ….<значениеN>]
- •<имя пер.>=<нач. значение>:<шаг>:<конечное значение>
- •linspace (<нач. значение>,<кон. значение>,<кол. значений>)
- •Задание матриц
- •Операции
- •Операции над векторами – то же самое
- •Поэлементные операции
- •ОСОБЫЕ МАТРИЦЫ
- •Матрица случайных чисел:
- •Автоматическое заполнение матриц. Формирование матрицы блоками
- •>> X=[eye(4), 3*ones(4); 5*ones(4),9*eye(4)]
- •Дополнительно из задач
- •Применение функций обработки данных к векторам и матрицам
- •>> help datafun
- •Функции для векторов
- •Для матриц
- •Сумма элементов в столбцах матрицы:
- •Сумма элементов в строках матрицы:
- •Сумма элементов вектора:
- •Получение из матрицы вектора
- •Произведение элементов матрицы по столбцам:
- •Произведение элементов матрицы по строкам:
- •Максимальное значение в каждом столбце:
- •Максимальное значение в каждой строке:
- •Максимум во всей матрице
- •Наименьшее значение:
- •Среднее значение
- •Среднее арифметическое в столбцах. Результат – вектор-строка из средних арифметических в каждом столбце:
- •В строках
- •Сортировка.
- •по убыванию:
- •по убыванию
- •’’Зеркальное’’ отображение матрицы относительно вертикальной оси:
- •’’Зеркальное’’ отображение матрицы относительно горизонтальной оси:
- •Примеры использования
- •среднего и суммы:
- •Для матрицы:
- •Найти наибольшее значение среди элементов <8
- •Для матрицы
- •Сумму элементов побочной диагонали
- •Сумму элементов главной диагонали
- •Нормы матрицы
- •>> max_stolb=max(sum(abs(В)))
- •Найти среднее арифметическое в каждом столбце
- •Пр. Удалить максимальный элемент в векторе
- •Пр. Вставить значение 100 в вектор после элемента с номером k=3
- •Пр. В матрице поменять местами столбцы с минимальным и максимальным элементами.
- •[m_min,jmin]=min(min(b));
- •[m_max,jmax]=max(max(b));
- •buf=b(:, jmin);
- •Пр. Поменять порядок следования элементов в векторе
- •Еще полезные функции all, any и find и их использование
- •Для вектора
- •Получить индексы элементов, равных 2
- •Графика ML
- •Построение простейших графиков функций одной переменной Графики параметрических и кусочно-заданных функций
- •Plot(x, y, ‘<тип маркера, обозначение цвета и тип линий>’)
- •Отображение нескольких кривых на одном графике (в одних осях)
- •hold off
- •Вывод нескольких графиков в одном графическом окне
- •subplot(m, n, p),
- •Изменение масштаба графика
- •Диаграммы
- •Трехмерные графики
- •Т=-2:0.01:2; % задали вектор значений аргумента
- •Построение поверхности в 3-мерном пространстве
- •% Поверхность z=f(x,y)
- •Решение типовых математических задач
- •Файлы функций
- •function [рез.1, рез.2…рез.N] = <имя функции> (пар.1, пар.2,…пар.N)
- •[y1, y2,…,yn]=<имя функции>(<список вх. факт. параметров>)
- •<имя функции>(<список входных фактических параметров>)
- •function <имя функции> (пар.1, пар.2,…пар.n)
- •Отличия файла-функции от скрипт-файла
- •Примеры
- •function y=mysin(x)
- •Пример функции с 3 выходными параметрами
- •Использование функций для задач вычислительной математики
- •Построение графика функций
- •Действия с полиномами (многочленами)
- •Решение системы линейных уравнений.
- •Численное интегрирование
- •[i, n]=quadl (fun, a, b, tol, trace),
- •Решение уравнений
- •Нахождение минимума функции на заданном отрезке
- •Функция eval
- •Файл меню
- •while k~=6
- •Символьные вычисления в ML
- •Преобразование символьных выражений
- •Построение графиков символьных функций
- •Решение уравнений и систем
- •Решение дифференциальных уравнений и систем
- •Вычисление пределов
- •Определение производной
- •Вычисление интеграла
указан символ для типа линии, то на графике отображаются только маркеры,
не соединённые линиями. По умолчанию цвет построения синий.
Командой plot можно на графике отметить какую-либо точку, указав
координаты, тип и цвет маркера, если a и b – координаты точки:
plot(a, b, ‘ * g’) % звездочка зеленого цвета (график из одной точки)
Например, если на графике нужно выделить точку максимума или
корень уравнения: |
|
plot (xmax, ymax, ‘*g’) |
% Максимум |
plot (x, 0, ‘or’) |
% Корень – точка (х,0) |
Отображение нескольких кривых на одном графике (в одних осях)
Иногда необходимо построить несколько графиков в одном графиче-
ском окне. Команда plot(X,Y) при вызове каждый раз создает новый график в
текущем графическом окне.
Водних осях можно построить любое количество графиков. Для этого
вкоманде plot нужно последовательно указать пары векторов и атрибуты для желаемого количества графиков.
Вэтом случае целесообразно идентифицировать каждый график. Это можно сделать с помощью команды legend. Она размещает на графике
легенду с информацией о линиях. Аргументы команды текстовые. Их число и порядок соответствуют линиям графика. Можно использовать еще и числовой параметр, который отвечает за месторасположения легенды в графическом окне. Он может принимать значения: -1, 0, 1, 2, 3, 4. По умолчанию он равен -1 и легенда располагается в правом верхнем углу.
Построим 2 графика в одних осях: красными звездочками, соеди-
ненными линиями sin(x), а зелеными крестиками без соединительных ли-
ний - cos(x) :
>> X=linspace(0,2*pi,100); |
%задаем вектор аргумента |
||
>> Y=sin(x); |
% задаем вектор значений функции |
||
>> plot(X, Y,'*r-',X,cos(X),'+g') |
% строим график |
||
>>legend('sin(x)','cos(x)') |
%легенда |
69
Иногда бывает нужно последовательно построить несколько графиков в одних осях. Для последовательного построения графиков в одних осях надо установить режим сохранения текущего графика – hold on. Команда hold off
снимает сохранение.
Графики этих же функций построим последовательно:
X=linspace(0,2*pi,100); %задаем вектор аргумента
Y=sin(X); |
% задаем вектор значений функции 1 |
|||
Z=cos(X); |
% задаем вектор значений функции 2 |
|||
plot(X, |
Y,'*r-') |
% строим график sin |
||
hold on; |
|
% после первого построения |
||
plot(X, |
Z,'+g') |
% строим график cos |
||
|
|
|
% он накладывается на предыдущий |
|
legend('sin(X)','cos(X)') |
% легенда |
|||
hold off |
|
|
График, задаваемый значениями вектора Z, будет наложен на график,
отображающий значения вектора Y.
График функции, заданной параметрически Кривая – окружность радиуса 2*pi
Спираль
%на |
одном |
графике |
окружность |
и |
спираль |
t=0:0.1:2*pi;
x=2*pi*cos(t);
y=2*pi*sin(t);
70
u=t.*cos(4*t);
v=t.*sin(4*t);
plot(x,y,'pr','MarkerSize',10) hold on plot(u,v,'b-','LineWidth',3)
Для построения графиков можно использовать также и другие функции,
с которымимы познакомимся позже.
Можно построить график с использованием функции ezplot
(<символьное выражение>,[<интервал>]).
Функция работает с символьным выражением, задающим формулу
функции, которая заключается в апострофы.
>> ezplot('sin(X)',[0 2*pi])
Можно также воспользоваться функцией fplot()
Функция работает либо с символьным выражением, либо с именем функции, которая записана в файле, либо с анонимной функцией, определенной в выражении f=@(x) (sin(x)); В этом случае передается
указатель на функцию, которая отображена на графике. fplot('sin(X)',[0 2*pi]) %функция задана символьным выражением
>> f=@(X) (sin(X)) % функция задана как анонимная
>> fplot(f,[0 2*pi])
ezplot тоже может работать с анонимной функцией
До сих пор мы строили графики в одном графическом окне. При
необходимости построения каждого графика в отдельном окне, надо набрать
команду: figure. Сначала открывается графическое окно с именем figure1, и
оно становится текущим (то, где ведется построение). Для получения нового
окна, надо снова задать эту команду, при выполнении которой открывается
71