информатика / MathCad и MatLab / Математические операции Matlab
.pdf2.3 Математические операции в MatLAB
MatLAB позволяет производить следующие математические операции: + – сложение;
– – вычитание; * – умножение;
/ – деление слева направо; \ – деление справа налево; ^ – возведение в степень.
Эти операции справедливы не только для чисел, но и для векторов и матриц. Кроме того, в MatLAB существуют операции поэлементного преобразования матриц. Для поэлементного преобразования матриц необходимо перед знаком операции поставить ".". В MatLAB существуют следующие виды по-
элементного преобразования:
.* – поэлементное умножение;
./ – поэлементное деление слева направо;
.\ – поэлементное деление справа налево;
.^ – поэлементное возведение в степень.
Операции сложения и вычитания не нуждаются в указании поэлементной операции, поскольку выполняются поэлементно.
При использовании переменных, знаков математических операций и математических функций, которые будут рассмотрены ниже, возможно составление формул различной сложности, причем формула вводится, как линейная комбинация вышеупомянутых элементов:
y=123*x^5-cos(x).
2.4Математические функции стандартной библиотеки
MatLAB
MatLAB содержит достаточно большое количество математических функций. Дополнительные сведения об использовании каждой функции можно получить при использовании команды help <имя_функции>.
В системе MatLAB доступны следующие ниже функции.
Тригонометрические и гиперболические: sin(z) – синус числа z;
sinh(z) – гиперболический синус;
asin(z) – арксинус (в диапазоне от -π/2 до +π/2);
11
asinh(z) – гиперболический арксинус; cos(z) – косинус числа z;
cosh(z) – гиперболический косинус;
acos(z) – арккосинус (в диапазоне от -π/2 до +π/2); acosh(z) – гиперболический арккосинус;
tan(z) – тангенс числа z;
tanh(z) – гиперболический тангенс;
atan(z) – арктангенс (в диапазоне от -π/2 до +π/2); atan2(x,y) – арктангенс (в диапазоне от -π до +π); atanh(z) – обратный гиперболический тангенс; cot(z) – котангенс числа z;
coth(z) – гиперболический котангенс;
acot(z) – арккотангенс (в диапазоне от -π/2 до +π/2); acoth(z) – обратный гиперболический котангенс.
Экспоненциальные функции: exp(z) – экспонента числа z;
log(z) – натуральный логарифм; log10(z) – десятичный логарифм; sqrt(z) – квадратный корень из числа z; abs(z) – модуль числа z;
fix(z) – округление до ближайшего целого в сторону 0; floor(z) – округление до ближайшего целого в сторону - ; ceil(z) – округление до ближайшего целого в сторону + ; round(z) – обычное округление до ближайшего целого; rem(x,y) – вычисление остатка от деления X на Y;
sign(z) – сигнум-функция (0 при z=0, -1 при z<0, 1 при z>0).
Кроме элементарных система MatLAB содержит и массу специальных математических функций.
Функции преобразования координат: cart2sph – декартовых в сферические;
cart2pol – декартовых в полярные; pol2cart – полярных в декартовы; sph2cart – сферических в декартовы.
12
Функции Бесселя:
besselj – первого рода; bessely – второго рода;
besseli – модифицированная первого рода; besselk – модифицированная второго рода.
Бета функции:
beta – бета-функция;
betainc – неполная бета функция; betaln – логарифм бета функции.
Гамма функции: gamma – гамма-функция;
gammainc – неполная гамма-функция; gammaln – логарифм гамма-функции.
Эллиптические функции и интегралы: ellipj – эллиптические функции Якоби;
ellipke – полный эллиптический интеграл; expint – функция экспоненциального интеграла.
Функции ошибок:
erf – функция ошибок;
erfc – дополнительная функция ошибок;
erfcx – масштабированная дополнительная функция; erfinv – обратная.
Дополнительные функции: gcd – наибольший общий делитель;
lcm – наименьшее общее кратное; legendre – обобщенная функция Лежандра; log2 – логарифм по основанию 2;
pow2 – возведение 2 в указанную степень;
rat – представление числа в виде рациональной дроби; rats – представление чисел в виде рациональной дроби.
Функции комплексного аргумента real(z) – выделяет действительную часть числа; imag(z) – выделяет мнимую часть числа;
13
angle(z) – вычисляет значение аргумента числа (от -π до +π); conj(z) – определяет число, комплексно сопряженное z.
Функции формирования векторов и матриц: zeros(m, n) – создает матрицу m на n с нулевыми элементами; ones(m, n) – создает матрицу m на n с единичными элементами; eye(m, n) – формирует единичную матрицу;
rand(m, n) – формирует матрицу случайных чисел от 0 до 1; hadamard(n) – формирует матрицу Адамара размером n на n; hilb(n) – формирует матрицу Гильберта размером n на n; invhilb(n) – образует обратную матрицу Гильберта; pascal(n) – создает матрицу Паскаля;
hankel(v) – образует матрицу Ганкеля с первым заданным столбцом.
Функции формирования матриц на основе других матриц: fliplr(a) – отражает матрицу относительно вертикальной оси; flipud(a) – отражает относительно горизонтальной оси;
rot90(a) – поворот на 90 градусов против часовой стрелки;
rechape(a, m, n) – изменение размеров матрицы а, причем число элементов исходной матрицы должно быть равно числу элементов полученной (выборка элементов производится последовательно по столбцам);
tril(a) – обнуление элементов выше главной диагонали; triu(a) – обнуление элементов ниже главной диагонали;
diag(x) – выделяет главную диагональ матрицы в виде вектора-столбца, в случае, если х - вектор, то формирует квадратную матрицу с элементами заданного вектора в главной диагонали и нулевыми остальными элементами (в случае применения diag(x, n) – возможно смещение вектора относительно главной диагонали вверх (n>0) или вниз (n<0), если же х - матрица, то возможно получения таким образом вектора, сформированного из элементов любой диагонали);
a’ – транспонирование матрицы a;
inv(a) – вычисление матрицы, обратной а;
cross(v1, v2) – вычисление векторного произведения векторов (только для трехкомпонентных векторов).
Матричные функции: expm(A) – вычисление матричной экспоненты (еА);
expm1(A) – вычисление матричной экспоненты с использованием разложения Паде;
14
expm2(A) – вычисление матричной экспоненты с использованием разложения Тейлора;
expm3(A) – вычисление матричной экспоненты с использованием спектрального разложения матрицы А;
logm(a) – логарифмирование матрицы по натуральному основанию; sqrtm(a) – вычисляет такую матрицу y, что y×y=a.
Операции с полиномами: conv(p1,p2) – умножение двух полиномов;
deconv(p1,p2) – деление полинома p1 на полином p2, причем при применении в виде [q, r]=deconv(p1,p2) в векторе q сохраняется полученный полином, а в векторе r - остаток от деления такой, что p1=conv(p2, q)+r;
roots(p) – вычисляет корни полинома;
poly(r) – построение полинома по вектору его корней, причем старший коэффициент полагается равным 1 и не включается в вектор (если в качестве переменной r используется матрица, то происходит вычисление характеристического полинома матрицы);
polyval(p, x) – вычисление значения полинома при известном значении его аргумента;
polyder(p) – вычисление производной полинома, при использовании polyder(p1,p2) полиномы перемножаются, а затем от них берется производная, если же функция используется в виде [q,p]=polyder(p1,p2), то производится вычисление производной от отношения полиномов p1 и p2 и выдается результат в виде отношения полиномов q и p.
Функции обработки данных измерений: size(a) – вычисляет число строк и столбцов матрицы; max(v) – значение максимального элемента вектора; min(v) – значение минимального элемента вектора; mean(v) – определяет среднее значение элементов; std(v) – определяет среднеквадратичное отклонение; sort(v) – сортирует вектор по возрастанию;
sum(v) – вычисляет сумму элементов вектора; prod(v) – произведение всех элементов;
cumsum(v) – формирует вектор того же типа и размера, каждый элемент которого является суммой предыдущих значений исходного вектора;
cumprod(v) – формирует вектор того же типа и размера, каждый элемент
15
которого является произведением предыдущих значений исходного вектора; diff(v) – вычисляет вектор разностей соседних значений;
trapz(x,y) – интегрирование методом трапеций функции y(x); cov(a) – вычисляет матрицу ковариаций измерений; corrcoeff(a) – вычисляет матрицу коэффициентов корреляции.
Функции линейной алгебры:
cond(a) – вычисляет число обусловленности матрицы по отношению к операции обращения;
rank(a) – вычисляет ранг матрицы; det(a) – определитель матрицы; trace(a) – вычисляет след матрицы;
rref(a) – приводит матрицу к треугольному виду по методу Гаусса;
lu(a) – осуществляет LU – разложение матрицы, причем при применении в качестве параметров [L,U,P] – производится вывод матриц L, U и матрицы перестановок P;
poly(a) – определение характеристического полинома матрицы; svd(a) – сингулярное разложение матрицы.
Аппроксимация и интерполяция данных:
polyfit(x,y,n) – вычисляет коэффициенты аппроксимирующего полинома n-й степени для зависимости y(x);
spline(x,y,xi) – определяет значение интерполирующей кубическими сплайнами функции при значениях аргумента, заданных в векторе xi;
interp1(x,y,xi,’метод’) – производит одномерную табличную интерполяцию по заданному методу (linear – линейная, cubic – кубическая, spline – кубическими сплайнами);
fft(x) – разложение вектора в ряд Фурье; ifft(y) – обратное преобразование Фурье.
2.5 Построение графиков
Для построения графиков в MatLAB существует масса функций, базовой из которых является функция plot. Функция имеет следующий синтаксис:
plot(x1, y1, s1, ... , xn, yn, sn),
где x – аргумент; y – функция;
s – символьная переменная, которая отражает тип линии.
16
Длины векторов аргументов и функций должны совпадать. S имеет сле-
дующий формат – "цвет_стиль_маркер".
При отображении графиков используются следующие цвета: ‘c’ – голубой;
‘m’ – малиновый; ‘y’ – желтый;
‘r’ – красный; ‘g’ – зеленый; ‘b’ – синий; ‘w’ – белый; ‘k’ – черный.
Стили линий могут быть следующими: ‘-’ – сплошная линия; ‘- -’ – разрывная линия; ‘:’ – пунктирная линия;
‘-.’ – штрих пунктирная линия; ‘none’ – отсутствие линий.
Для выделения заданных точек существуют маркеры. Наиболее распространенные маркеры следующие ‘+’, ‘o’, ‘*’, ‘x’. В принципе, маркером могут быть различные символы, главным требованием должно быть соответствие графиков стандартам.
Если переменная s не указана, то порядок следования цветов такой: синий, зеленый, красный, голубой, фиолетовый, желтый, черный, белый.
Функция plot производит вывод в графическое окно, открываемое при выводе. Для управления графическими окнами существуют следующие функции:
figure – формирует новое графическое окно;
figure(n) – делает n-е окно текущим, если же окна с таким номером не существовало, то открывает его;
subplot(m,n,p) – разбивает графическое окно на m подокон по горизонтали и n по вертикали, причем подокно p делает текущим (нумерация подокон осуществляется справа налево и сверху вниз);
hold on – включает режим добавления графиков в окно;
hold off – отключает режим добавления графиков в окно, при этом более новый график затирает более старый.
17
Функции управления осями:
axis([xmin, xmax, ymin, ymax]) – устанавливает жесткие границы поля графика в единицах величин, откладываемых по осям;
axis(‘square’) – создает оси x и y равной длины;
axis(‘equal’) – обеспечивает одинаковый масштаб по осям x и y;
axis(‘ij’) – перемещает начало отсчета в левый верхний угол (матричная система координат);
axis(‘xy’) – возвращает Декартову систему координат.
Специальные графики:
bar(x,y) – представление графика в виде столбчатой диаграммы; stem(x,y) – представление графика в виде отдельных линий;
hist(y,x) – построение графика (гистограммы) распределения вектора y в диапазоне вектора х;
comet(x,y) – строит график последовательно в виде траектории кометы; loglog(x,y) – построение графиков в логарифмическом масштабе по двум осям; semilogx(x,y) – построение графиков в логарифмическом масштабе по оси x; semilogy(x,y) – построение графиков в логарифмическом масштабе по оси y.
Вывод подписей к графикам: title(‘текст’) – название графического окна либо подокна; xlabel(‘текст’) – название оси x;
ylabel(‘текст’) – название оси у; zlabel(‘текст’) – название оси z;
text(x,y,‘текст’) – выводит текст в точку с координатами x,y; gtext(‘текст’) – позволяет вывести текст в любую точку графика с ис-
пользованием мыши или клавиатуры.
Функции построения трехмерных графиков: mesh(x,y,z) – строит контур поверхности из векторов x,y,z; surface(x,y,z) – отображение поверхности.
18
3 ЭЛЕМЕНТАРНЫЕ РАСЧЕТЫ В MATLAB
Цель работы: Изучить интерфейс командного окна и элементарные математические функции MatLAB.
Рабочее задание.
1.Загрузить MatLAB.
2.В соответствии с вариантом произвести расчет значений функции в заданном диапазоне x с шагом h при заданном y.
3.Вычислить коэффициенты полинома 6-го порядка, аппроксимирующего вычисленные значения относительно аргумента функции.
4.Вычислить значения полинома в заданном диапазоне аргумента.
5.Найти точку локального минимума полинома методом высших производных в заданном диапазоне (путем определения корней второй производной полученного полинома).
6.Вычислить значение полинома в точке минимума.
7.Вычислить площадь фигуры, ограниченной графиком функции и осью абсцисс в заданном диапазоне аргумента.
8.Сформировать отчет о проделанной работе с использованием MS Excel. Отчет должен содержать:
∙название и номер лабораторной работы;
∙фамилию, имя, отчество, группу;
∙функцию в записи MatLAB и аппроксимирующий ее полином в математической форме записи;
∙все вводимые команды;
∙таблицу аргумента, соответствующих ему значений функции и поли-
нома;
∙таблицу, содержащую значение площади фигуры, аргумента точки минимума полинома и значение полинома в этой точке;
∙график функции и полинома по табличным значениям.
Примечание: все элементы таблиц создаются путем копирования из командного окна MatLAB. Варианты заданий приведены в приложении А.
Пример оформления лабораторной работы приводится ниже.
19
Лабораторная работа MatLAB-1
Будков Сергей Юрьевич
ПФ-95
z=pi*(sqrt(((x.^2+y.^2)/sin(pi/2))+x*y))
p=x^6*0,0049+x^5*0,041+x^4*(-0,0973)+x^3*(- 0,3552)+x^2*1,2451+x*1,4832 +3,1368
>>x=-2:0.5:2
>>y=1
>>z=pi*(sqrt(((x.^2+y.^2)/sin(pi/2))+x*y))
>>pz=polyfit(x,z,6)
>>pv=polyval(pz,x)
>>dpz=polyder(pz)
>>r=roots(dpz)
>>polyval(pz,-0.5102)
>>trapz(x,z)
x |
|
y |
|
z |
p |
|
|
|
|
|
|
|
-2 |
|
1 |
5,441 |
5,437 |
|
|
|
|
|
|
|
-1,5 |
|
1 |
4,156 |
4,164 |
|
|
|
|
|
|
|
-1 |
|
1 |
3,142 |
3,121 |
|
|
|
|
|
|
|
-0,5 |
|
1 |
2,721 |
2,744 |
|
|
|
|
|
|
|
0 |
|
1 |
3,142 |
3,137 |
|
|
|
|
|
|
|
0,5 |
|
1 |
4,156 |
4,141 |
|
|
|
|
|
|
|
1 |
|
1 |
5,441 |
5,459 |
|
|
|
|
|
|
|
1,5 |
|
1 |
6,847 |
6,839 |
|
|
|
|
|
|
|
2 |
|
1 |
8,312 |
8,311 |
|
|
|
|
|
|
S |
18,2404 |
|
|
|
|
|
|
min p= |
2,744 |
при x= |
0,51 |
|
|
|
|
|
|
|
|
|
Функции |
|
|
|
|
|
9 |
|
|
|
|
|
|
|
|
|
8 |
|
|
|
|
|
|
|
|
|
7 |
|
|
|
|
|
|
|
|
|
6 |
|
|
|
|
|
|
|
|
Y |
5 |
|
|
|
|
|
|
|
Z |
4 |
|
|
|
|
|
|
|
P |
|
|
|
|
|
|
|
|
|
||
|
3 |
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
0 |
|
|
|
|
|
|
|
|
|
-2 |
-1,5 |
-1 |
-0,5 |
0 |
0,5 |
1 |
1,5 |
2 |
|
|
|
|
|
X |
|
|
|
|
|
|
|
|
|
20 |
|
|
|
|