- •Основные понятия 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
- •Преобразование символьных выражений
- •Построение графиков символьных функций
- •Решение уравнений и систем
- •Решение дифференциальных уравнений и систем
- •Вычисление пределов
- •Определение производной
- •Вычисление интеграла
3.Функция может быть определена как анонимная и записана следу-
ющим выражением:
f = @ (x) (sin(x).^2);
В этом случае в fplot передается указатель на функцию, которая
должна быть отображена на графике.
>> f = @ (X) (sin(X).^2)); % функция задана как анонимная
>> fplot (f, [0 2*pi])
Самым удобным является третий способ, но его можно использовать только в случае, если результат вычисляется с помощью одного оператора.
Если же для вычисления результата функции требуется последовательность операторов или если одну и ту же функцию требуется использовать в нескольких приложениях, тогда её следует оформить как файл-функцию, чтобы не описывать несколько раз.
Действия с полиномами (многочленами)
Среди математических задач часто возникает необходимость использовать полиномы или как их еще называют степенные многочлены. В
ML предусмотрены функции для работы с ними. С помощью этих функций можно вычислить значение полинома, найти его корни, выполнить операции умножения и деления полиномов и т.д.
Полином (многочлен) определяется выражением вида:
P(x)=a1xn+a2xn-1+…..+anx+an+1
В системе Matlab полином задаётся и хранится в виде вектора,
элементами которого являются коэффициенты полинома:
P=[a1 a2 …an an+1]
Число элементов вектора должно быть на единицу больше степени полинома. Если в полиноме отсутствует слагаемое, соответствующее какой-
либо степени х, то в этом случае в векторе в качестве значения коэффициента записывается ноль.
Например, пусть задан полином x7+3.2x5-5.2x4+0.5x2+x-3. Вектор
15
коэффициентов полинома будет: p=[1, 0 , 3.2 , -5.2 , 0 , 0.5 , 1 , -3]
Для вычисления значения полинома при некотором значении аргумента предназначена функция polyval(p, x), где p – вектор коэффициентов полинома;
х – значение аргумента, при котором надо вычислить значение полинома.
>>p=[1 0 3.2 -5.2 0 0.5 1 -3]; >>Y=polyval(p,1)
Y = -2.5000
Врезультате будет вычислено значение полинома p при x=1.
Вкачестве аргумента х может быть указан вектор или матрица. В
результате получится вектор или матрица того же размера, что и аргумент:
>> p=[1 0 3.2 -5.2 0 0.5 1 -3]; x=1:4;
Y=polyval(p,x)
Y =
1.0e+004 * %Это множитель, на который надо умножить каждый элемент
-0.0003 0.0148 0.2548 1.8339
Элементы вектора Y – значения полинома, вычисленные для каждого элемента вектора X.
Вычислить корни полинома можно с помощью функции roots.
Результатом является вектор из корней. Число корней определяется степенью полинома:
>> X=roots(p) X =
-0.5668 + 2.0698i -0.5668 - 2.0698i -0.6305 + 0.5534i -0.6305 - 0.5534i 1.2149
16
0.5898 + 0.6435i
0.5898 - 0.6435i
Результат – вектор-столбец. Число корней совпадает со степенью полинома. В данном случае найдены семь корней, из которых один вещественный и шесть комплексных.
Для построения графика надо задать 2 вектора: вектор значений аргумента и вектор значений полинома и построить график
a=-3:0.05:3; y=polyval(p,a); plot(a,y)
Если необходимо выделить на графике корни полинома, то для того,
чтобы отметить только действительные корни, можно проверять каждый корень (есть ли у него мнимая часть):
x=roots(p);
for i=1:length(x)% цикл по количеству корней if imag(x(i))==0
plot(x(i),0,'*r')
end;
end;
или (что будет лучше) получить вектор из действительных корней и нанести на график только точки, соответствующие им:
x=roots(p);
x1=x(imag(x)==0);
plot(x1,0,'*r')
17
Можно восстановить коэффициенты полинома, применив функцию
>> p1=poly(X) p1 =
Columns 1 through 5
1.0000 0.0000 3.2000 -5.2000 0.0000
Columns 6 through 8
0.5000 1.0000 -3.0000
Однако, если коэффициент у старшей степени не 1, то полученный вектор надо умножить на коэффициент, равный старшей степени (p1*n).
Чтобы вычислить производную от полинома, следует использовать функцию polyder. Результатом этой функции является вектор, элементы которого представляют собой коэффициенты полинома-производной от
исходного полинома:
>>p=[1 0 3.2 -5.2 0 0.5 1 -3];
>>polyder(p)
ans = |
|
|
|
|
|
|
Columns 1 through 5 |
|
|
||||
7.0000 |
0 16.0000 -20.8000 |
0 |
|
|||
Columns 6 through 7 |
|
|
||||
1.0000 |
1.0000 |
|
|
|
||
Для выполнения |
умножения и деления полиномов |
предназначены |
||||
|
|
|
||||
функции |
conv и deconv: |
|
|
|
Z=conv(P1,P2),
где P1, P2 – полиномы, заданные векторами; Z – результирующий вектор коэффициентов полинома, полученного в результате перемножения полиномов, заданных
векторами P1, P2.
[R1, R2]=deconv(P1,P2)
Результат работы этой функции – два вектора R1, R2, где R1, R2 – векторы коэффициентов полиномачастного и полинома-остатка, полученного в результате деления полиномов, заданных векторам
Следующий полином 8 степени имеет 2 вещественных корня, которые тоже можно показать на графике
>> p=[1 , 0 ,0, 3.2, -5.2, 0, 0.5, 1, - 3];
18