Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

информатика / MathCad и MatLab / Математические операции Matlab

.pdf
Скачиваний:
126
Добавлен:
06.02.2016
Размер:
231.58 Кб
Скачать

2.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