
- •Введение
- •Глава 1 знакомство с matlab и простейшие вычисления
- •1.1. Рабочая среда matlab
- •1.2. Арифметические вычисления
- •1.3. Вещественные числа
- •1.4. Форматы вывода результата вычислений
- •1.5 Комплексные числа
- •1.6 Векторы и матрицы
- •1.7 Встроенные функции. Функции, задаваемые пользователем
- •1.8 Сообщения об ошибках и их исправление
- •1.9 Просмотр и сохранение переменных
- •1.10 Матричные и поэлементные операции над векторами и матрицами
- •1.11 Решение систем линейных уравнений
- •Вопросы для самопроверки
- •Глава 2 работа с массивами
- •2.1 Создание векторов и матриц
- •2.2 Применение команд обработки данных к векторам и матрицам
- •2.3 Создание специальных матриц
- •2.4 Создание новых массивов на основе существующих
- •Вопросы для самопроверки
- •Глава 3 м-файлы
- •3.1 Файл-программы
- •3.2 Файл-функции
- •Вопросы для самопроверки
- •Глава 4 программирование
- •4.1 Операторы отношения и логические операторы
- •4.2 Операторы цикла
- •4.3 Операторы ветвления
- •4.4 Оператор переключения switch
- •4.5 Оператор прерывания цикла break
- •4.6 Пример сравнения быстродействия матричных и скалярных операций
- •Вопросы для самопроверки
- •Глава 5 высокоуровневая графика
- •5.1 2D графика
- •5.1.1 Графики в линейном масштабе
- •5.2 Специальные виды 2d - графиков
- •5.2.1 Представление функции в виде дискретных отсчетов
- •5.2.2 Лестничные графики
- •5.2.3 Графики с указанием погрешности
- •5.2.4 Графики в логарифмическом и полулогарифмическом масштабах
- •5.2.5 Графики параметрических функций
- •5.3 3D графика
- •5.3.1 Линейчатые поверхности
- •5.3.2 Каркасные поверхности
- •5.3.3 Контурные графики
- •5.3.4 Сплошная освещенная поверхность
- •5.4.2 Сохранение и экспорт графиков
- •5.4.3 Анимация
- •Вопросы для самопроверки
- •Глава 6 прикладная численная математика
- •6.1 Операции с полиномами
- •6.2 Решение уравнений и их систем
- •6.3 Минимизация функции одной переменной
- •6.4 Минимизация функции нескольких переменных
- •6.5 Вычисление определенных интегралов
- •6.6 Решение дифференциальных уравнений
- •Вопросы для самопроверки
- •Глава 7 символьные вычисления
- •7.1 Символьные переменные, константы и выражения
- •7.2 Вычисления с использованием арифметики произвольной точности
- •7.3 Команды упрощения выражений – simplify, simple
- •7.4 Команда расширения выражений – expand
- •7.5 Разложение выражений на простые множители – команда factor
- •7.6 Приведение подобных членов – команда collect
- •7.7 Обеспечение подстановок – команда subs
- •7.8 Вычисление пределов – команда limit
- •7.9 Вычисление производных – команда diff
- •7.10 Вычисление интегралов – команда int
- •7.11 Разложение в ряд Тейлора – команда taylor
- •7.12 Вычисление суммы ряда – команда symsum
- •7.13 Решение уравнений и их систем – команда solve
- •7.14 Решение дифференциальных уравнений – команда dsolve
- •7.15 Прямое и обратное преобразования Лапласа – команды laplace, ilaplace
- •7.16 Графики символьных функций – команды ezplot, ezpolar
- •7.17 Прямой доступ к ядру системы Maple – команда maple
- •7.18 Разложение рациональной дроби на сумму простейших дробей
- •7.20 Решение неравенств и систем неравенств
- •7.21 Разложение в ряд Тейлора функции нескольких переменных
- •7.22 Решение дифференциальных уравнений с помощью степенных рядов
- •7.23 Решение тригонометрических уравнений
- •Вопросы для самопроверки
- •Приложения Приложение 1. Справочная система matlab
- •Приложение 2. Знакомство с пакетами расширения системы matlab
- •Приложение 3. Задания для самостоятельной работы
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Варианты
- •Литература
1.6 Векторы и матрицы
Вектор – это упорядоченный перечень чисел. Вектор можно ввести с клавиатуры, набрав в командной строке перечень чисел, отделенных запятыми или пробелами, помещенный в квадратные скобки. Например:
V=[1 2 3]
V =
1 2 3
>> Z=[-2,0 1,4]
Z =
-2 0 1 4
Символ <:> (двоеточие) дает возможность простого создания векторов, каждый элемент которых отличается от предшествующего на постоянную величину (шаг или приращение). Шаг может быть и отрицательным. Например:
>> V=-0.1:0.3:1.4
V =
-0.1000 0.2000 0.5000 0.8000 1.1000 1.4000
Шаг, равный единице, можно не указывать:
>> X=-2:2
X =
-2 -1 0 1 2
Элементы вектора X можно выделить в виде X(1), X(2) и т. д. Например:
>> X(4)
ans =
1
Чтобы изменить форму вектора X со строчной на столбцовую, введем символ <′> (апостроф) после X:
>> X'
ans =
-2
-1
0
1
2
Вектор-столбец можно ввести с командной строки, но значения элементов в перечне должны отделятся знаком <;> (точка с запятой):
>> A=[1.3;5.4;6.9]
A =
1.3000
5.4000
6.9000
MATLAB способен эффективно выполнять операции с векторами. Например, чтобы возвести в куб элементы вектора X, введем следующую команду:
>> X.^3
ans =
-8 -1 0 1 8
Подробнее операции над векторами и матрицами будут рассмотрены ниже. Матрица – это прямоугольный набор чисел. Рассмотрим матрицу размером 2×3:
B=.
В MATLAB эту матрицу можно ввести с помощью следующей команды:
>> B=[1 3 0;-2 -2 5]
B =
1 3 0
-2 -2 5
Отметим, что элементы матрицы в строке отделяются друг от друга пробелами, а сами строки разделяются точкой с запятой. Элементы в строке можно также отделять друг от друга запятыми.
Элементы матрицы B можно выделить в виде B(1,1), B(2,3) и т. д. Например:
>> B(1,2)
ans =
3
Чтобы транспонировать матрицу B, введем символ <′> (апостроф) после B:
>> B'
ans =
1 -2
3 -2
0 5
Чтобы возвести в квадрат элементы матрицы B, достаточно ввести следующую команду:
>> B.^2
ans =
1 9 0
4 4 25
Векторы и матрицы – это массивы однородных данных, которые отличаются числом измерений. Под вектором в MATLAB понимается одномерный массив данных, а под матрицей – двумерный массив. Подробнее тема массивов будет рассмотрена ниже.
1.7 Встроенные функции. Функции, задаваемые пользователем
Основные элементарные математические функции приведены в табл. 1.1.
Таблица 1.1. Основные элементарные функции
exp |
Экспонента |
abs |
модуль |
log |
натуральный логарифм |
asin |
арксинус |
log10 |
десятичный логарифм |
acos |
арккосинус |
sqrt |
квадратный корень |
atan |
арктангенс |
sin |
Синус |
sinh |
гиперболический синус |
cos |
Косинус |
cosh |
гиперболический косинус |
tan |
Тангенс |
tanh |
гиперболический тангенс |
cot |
Котангенс |
asinh |
гиперболический арксинус |
cec |
Секанс |
acosh |
гиперболический арккосинус |
csc |
Косеканс |
atanh |
гиперболический арктангенс |
Аргументами элементарных функций могут быть действительные либо комплексные числа, а также массивы. Если в качестве аргумента функции задан массив, результат представляет собой массив, полученный поэлементным вычислением функции для соответствующих элементов исходного массива. Аргументы тригонометрических функций задаются в радианах. Обратные к ним функции возвращают результат также в радианах. Примеры:
>> acosh(2)
ans =
1.3170
>> sin(1+i)
ans =
1.2985 + 0.6350i
>> exp(0:3)
ans =
1.0000 2.7183 7.3891 20.0855
Справочная информация по встроенным элементарным функциям содержится в разделе elfun справочной системы MATLAB. Способы получения этой информации подробно рассмотрены в Приложении 1. В разделе elfun содержится информация о функциях комплексного аргумента real, angle, abs и т. д. (см. раздел 1.5). В раздел elfun включены также функции округления и остатка от деления: round (округление до ближайшего целого), fix (усечение дробной части числа), floor (округление до меньшего целого), ceil (округление до большего целого), mod (остаток от деления с учетом знака), rem (остаток в смысле модульной арифметики), sign (знак числа). В этих случаях о комплексных аргументах не может быть и речи. Примеры:
>> round(-4.7)
ans =
-5
>> mod(7,2)
ans =
1
В MATLAB предусмотрены встроенные функции, связанные с целочисленной арифметикой: factor (разложение числа на простые множители), isprime (истина, если число простое), primes (формирование списка простых чисел), rat (приближение числа в виде отношения двух небольших целых чисел), lcm (наименьшее общее кратное), gcd (наибольший общий делитель). Примеры:
>> factor(123456789)
ans =
3 3 3607 3803
>> isprime(7)
ans =
1
>> primes(50)
ans =
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47
>> gcd(1236,175992)
ans =
12
Есть также функции, предназначенные для решения стандартных задач комбинаторики: функция perms вычисляет число перестановок, а функция nchoosek – число сочетаний. Например, C124 – число сочетаний из 12 по 4, легко находится вызовом функции nchoosek:
>> nchoosek(12,4)
ans =
495
Информация по функциям целочисленной арифметики содержится в разделе specfun справочной системы MATLAB. В разделе specfun находится также информация по встроенным специальным математическим функциям (функциям Бесселя besselj, bessely, полиномам Лежандра legendre и др.).
MATLAB включает побитовые функции преобразования систем счисления: dec2bin (перевод десятичного числа в двоичное); bin2dec (перевод двоичного числа в десятичное); dec2hex (перевод десятичного числа в шестнадцатеричное); hex2dec (перевод шестнадцатеричного числа в десятичное). Примеры:
>> dec2bin(11)
ans =
1011
>> bin2dec('1011')
ans =
11
>> dec2hex(350)
ans =
15E
>> hex2dec('15E')
ans =
350
Информация по этим функциям находится в разделе strfun справочной системы MATLAB.
И, наконец, есть функции для работы со значениями даты и времени. Чтобы отобразить календарь какого - либо года и месяца, нужно задать функцию calendar с двумя аргументами. Например, отобразим календарь на март 2008 года:
>> calendar(2008,3)
Mar 2008
S M Tu W Th F S
0 0 0 0 0 0 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 0 0 0 0 0
Функция calendar без аргументов выводит в командное окно календарь на текущий месяц.
Пара функций tic и toc позволяет вычислить время выполнения системой MATLAB той или иной операции. Если в командной строке набрать
>> tic, Fun, toc
где Fun – команда или набор команд, то будет отображен не только результат выполнения команды Fun, но и приблизительное время ее выполнения (в секундах), которое зависит от быстродействия данного компьютера. Это время может несколько отличаться при повторном замере. Поэтому делают несколько измерений, а в качестве итоговой оценки используют среднее арифметическое значение затраченного времени. Пример:
>> tic, A=1:100; B=0.01:0.01:1;C=A*B', toc
C =
3.3835e+003
elapsed_time =
0.0100
Информация о функциях даты и времени содержится в разделе timefun справочной системы MATLAB.
В MATLAB мы будем использовать как встроенные функции, так и свои собственные функции. Собственные функции можно задавать в отдельных файлах, которые называются M-файлами (см. Главу 3). M-файлы-функции полезны для задания функций, которые требуют несколько промежуточных команд для вычисления результата. Задание простых функций, которые можно выразить в одной строке, осуществляется с помощью команды inline.
В этом примере показано, как задается функция f(x) = с использованием команды inline:
>> f=inline('1/x^2','x')
f =
Inline function:
f(x) = 1/x^2
Вычислим эту функцию, например, при x = 2:
>> f(2)
ans =
0.2500
Как отмечалось ранее, большинство функций системы MATLAB могут оперировать как скалярами, так и массивами. Для того, чтобы заданная вами функция могла оперировать массивами, вставте точки перед математическими операторами <^>, <*>, </>. Векторизацию символьного выражения S осуществляет команда vectorize(S). Таким образом, чтобы получить векторизованную версию функции f(x) = , введем строку
>> f=inline(vectorize('1/x^2'),'x')
f =
Inline function:
f(x) = 1./x.^2
Теперь можно вычислить эту функцию для вектора:
>> f(1:5)
ans =
1.0000 0.2500 0.1111 0.0625 0.0400
Отметим, что можно также задавать собственные функции с двумя или более аргументами. Например:
>> g=inline(vectorize('1/(x^2+y^2)'),'x','y')
g =
Inline function:
g(x,y) = 1./(x.^2+y.^2)
Тогда выполнение выражения
>> g([1 2],[3 4])
ans =
0.1000 0.0500
дает значения функции в точках (1;2) и (3;4).