- •Основные понятия 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
- •Преобразование символьных выражений
- •Построение графиков символьных функций
- •Решение уравнений и систем
- •Решение дифференциальных уравнений и систем
- •Вычисление пределов
- •Определение производной
- •Вычисление интеграла
1.1555
Для нахождения локального максимума не предусмотрено специальной
функции. Можно найти максимум, используя fminbnd для функции, имеющей
обратный знак.
>> fplot(f,[0 2]) hold on
grid on
[x y]=fminbnd( @ (x) (-f(x)), 1, 1.5) x =
1.4888
y=
-0.2244
>>hold on
>> plot(x,-y,'*r') |
%точка max |
Может оказаться удобным предоставить пользователю возможность выбора
того или иного пункта задания. Для этого можно организовать работу с
помощью выпадающего меню.
Для реализации такого решения можно воспользоваться командами eval и
menu.
Функция eval
В ML имеется возможность сформировать требуемую команду в виде строки символов, а затем выполнить ее, как обычную команду, набранную в командном окне. Для этого предназначена встроенная функция eval.
Метод задания команд в виде текстовых строк и их выполнения с помощью
этой функции используется при написании m-файлов.
Функция еval (<текст>) предназначена для выполнения команды, заданной
текстом, как команды ML.
Например, eval (‘2*2+3’) выводит на экран 7. Аргументом функции может быть также строковая переменная.
Команда eval (‘<имя скрипт-файла>’) вызовет выполнение операторов,
находящихся в файле с соответствующим именем.
Функция menu. Эта функция предназначена для вывода на экран окна с
29
выпадающим меню, которое имеет заголовок и кнопки с названиями пунктов
меню. Количество кнопок, равное количеству пунктов меню, определяется
количеством параметров функции menu:
k=menu(‘<заголовок меню>’,’<назв. кнопки 1>’,…,’<назв. кнопки n>’)
Номер выбранной кнопки является результатом функции menu.
П р и м е р. Пусть необходимо построить график функции на заданном интервале от 0 до 2pi, цветом, выбранным из меню.
Напишем script-файл:
k=menu ('цвет','красный', 'зеленый','синий') color=['r'
'g' 'b']; t=0:0.1:2*pi;
s=sin(t);
plot(t,s,color(k))
При выполнении этого скрипт-файла функция menu выводит на экран окно, изображенное на рисунке.
При нажатии на одну из кнопок с названием цвета номер этой кнопки становится результатом функции menu и попадает в переменную k. Вектор-столбец color содержит атрибуты цвета для построения графика. По номеру k нужный атрибут выбирается из массива color и указывается в команде plot. В результате, выбрав нужный пункт меню, получим график функции, построенный выбранным цветом.
Для организации многократного выбора и выполнения нужных действий с помощью меню можно использовать цикл while и функцию eval. Для этого
команды, реализующие необходимые действия, оформляются в виде скриптфайлов: для каждого пункта меню – свой скрипт-файл. Затем необходимо задать символьную матрицу, например D, состоящую из названий файлов, соответствующих пунктам меню (заданий). Строки символьной матрицы должны иметь одинаковую длину. Команда return обеспечивает возврат из функции или скриптфайла в точку вызова. В данном примере можно также использовать команду break, которая предназначена для досрочного прерывания цикла.
Предположим, что необходимо выполнить по выбору три задания в любом
порядке:
D=[‘f1 ’
‘f2 ’
'f3 '
‘break‘];
30
n=1; while n<4
n=menu(‘меню’, ’пункт1’, ’пункт2’, ’пункт3’, ’выход’) eval(D(n,:))
end
Каждая строка символьной матрицы D содержит имя одного из файлов,
реализующих соответствующий пункт меню. В n-й строке матрицы находится название файла, выполняющего n-й пункт меню. Обращение D(n,:) позволяет извлечь из матрицы D n-ю строку, содержащую название файла. В результате выполнения команды menu в n попадает номер выбранного пункта меню. Для выполнения файл-программы достаточно в командной строке указать имя этого скрипта. Функция eval с параметром D(n,:) запускает соответствующий скрипт-
файл для выполнения.
Файл меню
%файл меню d=['p1'
'p2'
'p3'
'p4'
'p5' ' '];
k=0;
while k~=6
k=menu('лаб.раб', 'нах.корней пол', 'реш.сист.лин.ур', 'макс.мин', 'выч.интегр', 'транс.ур', 'выход');
eval(d(k,:))
end;
На экране получим меню с возможностью выбора нужного задания.
31