Uploaded by ilina_dico

Простейшие вычисления и построение графиков в системе MATLAB

advertisement
СК Точное и приближенное решение прикладных задач
Лабораторная работа № 0
Простейшие вычисления и построение графиков в системе MATLAB
1. ОБЩИЕ СВЕДЕНИЯ О СИСТЕМЕ MATLAB
Система MATLAB (сокращение от MATrix LABoratory – МАТричная ЛАБоратория) разработана фирмой
MathWorks, Inc. и является интерактивной системой для выполнения инженерных и научных расчетов,
ориентированной на работу с массивами данных. Основным объектом системы MATLAB является
прямоугольный числовой массив, допускающий комплексные элементы и ввод матриц без явного указания их
размеров.
Спектр проблем, решение которых может быть осуществлено при помощи MATLAB, охватывает:
матричный анализ, обработку сигналов и изображений, задачи математической физики, оптимизационные
задачи, обработку и визуализацию данных, нейронные сети, нечеткую логику и многие другие.
Специализированные средства собраны в пакеты программ, называемые ToolBox и могут быть выбраны при
установке MATLAB по желанию пользователя. В состав многих ToolBox входят приложения с графическим
интерфейсом, которые обеспечивают быстрый и наглядный доступ к основным функциям.
Обширная и удобная справочная система MATLAB способна удовлетворить потребности как
начинающего, так и опытного пользователя. Часто оказываются полезными прилагаемые к MATLAB
электронные справочники в формате PDF, которые не только дублируют справочную систему MATLAB, но и
содержат теоретические сведения и математическую базу, необходимые для более осознанного использования
описываемых программных средств. Важным достоинством MATLAB является открытость кода, что дает
возможность опытным пользователям при необходимости изменять запрограммированные алгоритмы.
Впрочем, разнообразие набора функций MATLAB допускает решение большинства задач без предварительных
модификаций.
MATLAB имеет достаточно простой и эффективный встроенный язык программирования, позволяющий
пользователю реализовывать собственные алгоритмы. Простота языка программирования компенсируется
огромным множеством функций MATLAB. Такое сочетание позволяет достаточно быстро разрабатывать
эффективные программы.
MATLAB является интерпретатором, т. е. каждая строка программы преобразуется в код и затем
выполняется. Разумеется, это существенно увеличивает время работы алгоритмов, содержащих циклически
повторяемые действия. Для повышения производительности вычислений в составе MATLAB имеется
дополнительный модуль Matlab Compiler, который обеспечивает компиляцию программ, написанных на языке
MATLAB. Объектно-ориентированный подход, заложенный в основу MATLAB, обеспечивает современную
эффективную технологию программирования. Таким образом, можно сделать вывод о том, что начинающий
пользователь MATLAB может в процессе работы совершенствовать свои знания как в области моделирования
и численных методов, так и в области программирования и визуализации данных.
Демонстрация возможностей системы осуществляется командой demo.
2. РАБОТА С КОМАНДНЫ ОКНОМ
При запуске MATLAB на экране появляется командное окно MATLAB Command Window, состоящее
из следующихэлементов:
- меню;
- панель с кнопками;
- рабочая область с командной строкой;
- строка состояния.
Символ >> означает приглашение командной строки к вводу команды. Набор любой команды или
выражения должен сопровождаться нажатием клавиши <Enter> для того, чтобы система MATLAB выполнила
введенную команду или вычислила выражение.
1
Встроенные математические функции MATLAB позволяют находить значения различных выражений.
Команды для вычисления выражений имеют вид, свойственный всем языкам программирования высокого
уровня. Полный перечень встроенных математических функций можно найти в справочной системе MATLAB.
При работе с командной строкой следует помнить следующие особенности:
-при наборе выражения без символа «;» в конце результат вычислений запишется в оперативную память
в виде значения соответствующей переменной и будет выведен на экран, в противном случае результат
вычислений запишется в оперативную память, но на экран выводиться не будет;
- при наборе выражения с левой и правой частями, разделенными знаком равенства, результат
вычислений запишется в переменную левой части выражения. Если выражение не содержит левой части, то
результат запишется в специальную переменную ans и будет храниться в ней до момента записи в данную
переменную результата вычисления следующего выражения.
Простейшие вычисления
Далее приведен ряд примеров, иллюстрирующих вычисления в командной строке.
>> A=32*25
A=800
>> В = ехр(2.35);
>> B
>>B=10.4856
>> А – В
ans=789.5144
>>A/B
ans=76.2953
>>ans+ans^0.5
ans=85.0300
При вычислении выражения А = 32 * 25 результат был сохранен в переменной А и выведен на экран,
поскольку в конце выражения отсутствовал символ «;». При вычислении выражения В = ехр(2.35); результат
был сохранен в переменной В, но не выведен на экран, поскольку в конце выражения присутвовал символ «;»,
затем было введено имя переменной В и нажата клавиша <Enter>, получено значение B=10.4856.
При вводе выражений А – В и А/В использовались значения переменных, найденные в предыдущих
операциях, а результат вычисления выражения был помещен по умолчанию в специальную переменную ans и
выведен на экран. Переменная ans также может использоваться в процессе вычислений, как это показано в
примере ans + ans^0.5. При этом результат вычислений вновь помещается в переменную ans. Следует помнить,
что MATLAB различает прописные и строчные символы в именах переменных, функций и команд.
По умолчанию результаты вычислений выводятся на экран с округлением до четвертого знака после
десятичной точки в так называемом формате Short. Если при выводе слишком большого или слишком малого
числа результат не укладывается в формат Short, вывод осуществляется в экспоненциальной форме (формат
Short E). Например, результат 0.0000033333 будет выведен на экран в виде 3.3333е-6, что эквивалентно
3.3333×10-6.
При необходимости результат вычислений может быть выведен в ином формате. Для этого следует
активизировать команду Preferences меню File. На экране появится диалоговое окно Preferences, показанное
на рис. 1 и позволяющее выбрать требуемый формат из списка.
2
Рис. 1. Диалоговое окно Preferences
Например, при выборе формата Long результаты всех последующих вычислений будут выводиться с 14
знаками после десятичной точки, а числа, не укладывающиеся в этот формат, будут выводиться в
экспоненциальной форме (формат Long E).
Далее приведены примеры простейших вычислений и команд в MATLAB.
Пример 1. Если результат не присваивается конкретной переменной, то он помещается в переменную ans
(причём последний результат):
>>2+3 Enter
ans = 5
Пример 2. Разделитель “ , ” позволяет вывести все значения, записанные в одной строке, “=” - оператор
присваивания:
>>4-5,x=4,y=5,z=x-y
ans = -1 x = 4 y = 5 z = -1
Пример 3. Разделитель “ ; ” блокирует вывод значений, записанных в одной строке:
>>4-5,x=4;y=5;z=x-y
ans = -1
z = -1
10
Пример 4. Вычислить значение выражения
x
n =1
2
n
при x = 5 . Если выражение не помещается на одну
n
строку, то можно использовать составной символ “ … ”:
>>x=5;y=x^2+1;
>>S=1/y+2/(y+1)+ 3/(y+2) + 4/(y+3) + 5/(y+4) +…
6/(y+5) + 7/(y+6) + 8/(y+7) + 9/(y+8) + 10/(y+9)
S = 1.7294
Пример 5. Для очистки видимой части командного окна используется команда clc ; для просмотра всех
переменных, введенных в рабочее пространство, - команда who (имена переменных), команда whos (полная
информация о переменных):
>>clc
>>who
>>whos
>>whos(‘S’)
Пример 6. Вывод значений констант и переменных:
>>x=5;y=x^2;
>>x,y Enter
x=5 y=25
>>disp(x),disp(y)
3
5
25
Пример 7. Управление выводом числовых данных:
>>format short
>>c=4/27
c = 0.1481
>>format long
>>c=4/27
c = 0.14814814814815
>>format rat
>>c=4/27
c = 4/27
>>a=3.5;b=4;
>>c=a*b
c=14
>>format
Пример 8. Удаление описания переменных из рабочей области:
Удаление переменной x
>>clear('x ')
Удаление всех переменных
>>clear
Пример 9. Простые числа, не превосходящие n :
>>p=primes(20)
p = 2 3 5 7 11 13 17 19
Пример 10. Комплексные числа:
>>с=4-5i;
с = 4.0000 - 5.0000i
>>d=1+i*2
d = 1.0000 + 2.0000i
>>e=c*d
e = 14.0000 + 3.0000i
>>imag(e)
ans = 3
>>conj(e)
14.0000 - 3.0000i
Пример 11. Для того чтобы найти первообразную сначала вводятся переменные, затем вводится интеграл:
>>syms x y;
>> int(x^2+y,x)
ans = x^3/3 + y*x
При вычислении определенного интеграла пределы интегрирования указываются после переменной по которой
интегрирование производится:
>> int(x^2,x,0,1)
ans = 1/3
Работа с матрицами
Ввод матриц в командном окне может быть осуществлен одним из следующих способов:
- поэлементный ввод матриц осуществляется в виде последовательности элементов, заключенной в
квадратные скобки […]. Разделителями элементов в строке матрицы являются пробелы, разделителями строк
матрицы являются символы «;» (рис. 2);
- ввод матриц в виде последовательности монотонно возрастающих или убывающих значений элементов
(рис. 3);
- ввод матриц специального вида (матрицы с нулевыми элементами, матрицы с единичными элементами
и др. (рис. 4).
4
Рис. 2. Поэлементный ввод матриц
Рис. 3. Ввод матриц в виде последовательности монотонно
возрастающих (убывающих) значений элементов
При вводе матриц в виде последовательности монотонно возрастающих или убывающих значений
элементов (см. рис. 3) использовать квадратные скобки не обязательно. Ввод осуществляется в следующей
последовательности: начальное значение, двоеточие, приращение, двоеточие, конечное значение. Если
приращение равно 1, последовательность ввода может быть упрощена: начальное значение, двоеточие,
конечное значение. Приведенные выше способы ввода матриц в командном окне могут комбинироваться в
любых сочетаниях, как показано на примере, приведенном на рис. 5.
5
Рис. 4. Ввод матриц специального вида
Рис. 5. Комбинированный ввод матриц
При выполнении почленного умножения и деления матриц или почленного умножения или деления
матрицы на число, необходимо ввести точку перед символом операции, как показано в примерах на рис. 8. При
использовании имени матрицы в качестве аргумента встроенной функции MATLAB (например, sin(A), exp(-B),
log2(C), abs(D)) соответствующая математическая операция применяется почленно к каждому элементу
матрицы и результат возвращается в виде матрицы такого же размера, как и исходная матрица. При выполнении
операций сложения, вычитания, умножения и деления матриц следует помнить о необходимости согласования
размерностей исходных матриц в соответствии с правилами выполнения данных математических операций (см.
рис. 6-8). В противном случае MATLAB будет выводить в командном окне сообщение об ошибке.
6
Рис. 6. Сложение и вычитание матриц
Рис. 7. Умножение и деление матриц
Рис. 8. Почленное умножение и деление матриц и умножение матрицы на число
7
Некоторые команды MATLAB, необходимые при работе с матрицами
1. zeros. Команда R=zeros(N) создает матрицу R размерности nxn состоящую из нулей. Команда R=zeros(M,N)
создает матрицу нулей размера mxn. Команда R=zeros(size(A)) образует матрицу нулей такой же
размерности как и матрица A.
2. ones. Команда R=ones(N) создает матрицу единиц размерности nxn. Команда R=ones(M,N) создает матрицу
единиц размера mxn. Команда R=zeros(size(A)) образует матрицу единиц такой же размерности как и
матрица A.
3. еуе. Команда R=еуе(N) создает матрицу размерности nxn с единицами на главной диагонали. Команда
R=еуе(size(A)) образует матрицу такой же размерности как и матрица A.
4. rand. Функция X=rand(n) формирует массив размера nxn, элементами которого являются случайные
величины, распределенные по равномерному закону в интервале от 0 до 1. Команды X=rand(n,m) и
X=rand(size(A)) формируют матрицы размерности nxm и размерности, соответствующей матрице A.
5. randn. Функция X=randn(n) формирует массив размера nxn, элементами которого являются случайные
величины, распределенные по нормальному закону с математическим ожиданием 0 и среднеквадратичным
отклонением 1. Команды X=randn(n,m) и X=randn(size(A)) формируют аналогичные матрицы размерности
nxm и размерности, соответствующей матрице A.
6. tril. Команда L=tril(A) сохраняет нижнюю треугольную часть матрицы A. Команда L=tril(A,k) сохраняет
нижнюю часть матрицы A, начиная с диагонали с номером k, при k=0 – это главная диагональ, при k>0 выше
главной диагонали и при k<0 – ниже.
7. triu. Команда L=triu(A) сохраняет верхнюю треугольную часть матрицы A. Команда L=triu(A,k) сохраняет
верхнюю часть матрицы A, начиная с диагонали с номером k, при k=0 – это главная диагональ, при k>0 выше
главной диагонали и при k<0 – ниже.
8. diag. Если b – вектор-столбец или вектор-строка размера n, тo команда R=diag(b,k) создает квадратную
матрицу размерности n+abs(k) с элементами вектора b на k-ой диагонали. При k=0 – это главная диагональ,
при k>0 выше главной диагонали и при k<0 – ниже. Команда R=diag(b) помещает компоненты вектора b на
главную диагональ. Если A – матрица, то R=diag(A,k) – вектор-столбец, составленный из элементов k-ой
диагонали матрицы X. R=diag(A) – вектор-столбец с элементами главной диагонали матрицы A. Поэтому
R=diag(diag(A)) –диагональная матрица.
9. sum. Если X – вектор, то sum(X) – сумма его элементов. Если A – матрица, то sum(A) – вектор-строка,
компонентами которого являются суммы элементов каждого столбца. След матрицы A можно найти так:
sum(diag(A)).
10. prod. Если X –вектор, то prod(X) – произведение его элементов, еcли A – матрица, то prod(A) – векторстрока, компонентами которого являются произведения элементов каждого столбца.
11. rank и det. Ранг матрицы A и ее определитель вычисляются командами: rank(A) и det(A) соответственно.
12. inv. Обратная матрица для квадратной матрицы A вычисляется командой inv(A).
13. norm. Евклидову норму можно найти командой norm(b) для вектора и norm(A) – для матрицы.
14. trace. След матрицы A вычисляется командой trace(A).
15. eig. Команда d=eig(A) вычисляет собственные значения матрицы A.
16. polyval. Функция y=polyval(p,s) вычисляет значения полинома, определенного коэффициентами
p=[p1,...,pn+1] соответствующими полиному p( x)  p1 x n ... pn x  pn 1 , в точке s.
17. roots. Функция r=roots(p), где p=[p1,...,pn+1], вычисляет вектор-столбец корней полинома
p( x)  p1 x n ... pn x  pn1 .
poly. Функция p=poly(r), функция обратная roots, по корням вычисляет коэффициенты полинома.
Работа с операторами
Задание вектора с элементами, отличающимися друг от друга на постоянное значение осуществляется
командой x=1:0.1:10;
1. Циклы
Цикл for
for i=1:1:10,
тело цикла;
8
end;
Также возможно задание счетчика в виде x=0:0.1:1 или x=0:-0.1:-10.
Цикл while
while (условие = =, >, <, > =, < =),
тело цикла
end;
Возможны вложенные циклы
2. Условные операторы
Условный оператор if
if (условие ==,>,<,>=,<=),
тело оператора при выполнении условия
end;
Условный оператор elseif
elseif (условие=,>,<,>=,<=),
тело оператора при выполнении условия
else
тело оператора при невыполнении условия
end;
ПОСТРОЕНИЕ ГРАФИКОВ
График функции у=у(x) можно построить с помощью команды: plot(x,y). Символы x и y обозначают
соответственно вектор независимой переменной и вектор значений функции. Командой plot(x1,y1,x2,y2) можно
построить два графика сразу. Команда plot(x1,y1,':',x2,y2,'+') построит первую кривую точками, а вторую –
символами "+". Таким образом, кривую можно построить либо точками, штрихами и комбинацией точек и
штрихов, либо некоторыми символами. Можно указать и цвет графика: plot(x,y,'r'). Возможные виды графиков
приведены в следующей таблице:
вид кривой
символы
цвет
– сплошная
.
r красный
-- штриховая
+
g зеленый
из точек
*
b синий
o
w белый
:
-. Штрих-пунктир
9
Для построения двухмерных графиков в декартовой системе координат задается диапазон изменения
аргумента функции с шагом, определяется функция и используется ключевое слово plot (при определении
функции используются поэлементные операции).
Пример 12. Построим график функции 𝑦 = sin 𝑥 в прямоугольных координатах:
>>x=-5:0.1:5;
>>y=sin(x);
>>plot(x,y)
Для построения двухмерных графиков в полярной системе координат задается диапазон изменения
аргумента функции с шагом, определяется функция и используется ключевое слово polar (при определении
функции используются поэлементные операции).
Пример 13. Построим график функции 𝑟 = sin 𝜑 − cos 𝜑 в полярных координатах:
>>phi=-pi:0.01:pi;
>>r=sin(phi)-cos(phi);
>>polar(phi,r)
При помощи системы MATLAB можно строить и трехмерные поверхности. Для построения трехмерных
графиков задается диапазон изменения аргументов функции с шагом (используется ключевое слово meshgrid
или meshdom), определяется функция и используется ключевое слово plot 3 ( mesh , surf и др.) (при
определении функции используются поэлементные операции).
Пример 14. Допустим нам необходимо построить график z ( x, y)  exp( x 2  y 2 ) :
>>[X,Y]=meshdom(-2:0.1:2, -2:0.1:2);
>>Z=exp(X.^2+Y.^2);
>>mesh(Z)
Пример 15. Построим график функции z ( x, y )  xy  x  y :
>>[X,Y]=meshgrid(-5:0.1:5,-5:0.1:5);
>>Z=X.*Y+X-Y;
>>plot3(X,Y,Z)
Для размещения графиков в одном графическом окне используется ключевое слово subplot.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Задание 1.
Ввести матрицу A размерности 3x3, полагая A(i,j)=i+2*j-1. Сформировать матрицу A1, копию матрицы A
Получить матрицы ONE и Z размерности 3х3, состоящие из 1 и 0 соответственно
Получить единичную матрицу E размерности 3x3
Найти матрицу A2, удалив из матрицы A 1-ую строку. Найти матрицу A3 удалением из матрицы A 3-его
столбца
Образовать матрицу A4, добавив к матрице A 4-ый столбец, равный вектору a=[7 8 9]
Найти матрицу B, транспонированную к матрице A
Вычислить матрицы A+B, A-B, A+ONE, A-ONE, B+Z, B-Z, B+2*A, 3*B
Вычислить матрицы A.*B, A./B, A.^2
Вычислить матрицы A*B, B*E, A*E, A*ONE
Сформировать векторы-строки a, b, c и d соответственно из 1-ой строки матрицы A, ее 3-ей строки и из 2ого и 3-его столбцов
Поменять местами 1-ую и 2-ую строки матрицы A. Поменять местами 1-ый и 3-ий столбцы
Найти вектор d, содержащий числа, которые находятся на главной диагонали матрицы A. Найти след
матрицы A
Найти определители матриц A, B, E, ONE
Найти ранг матрицы A
Переопределить значение элемента A(2,3), положив его равным вашему номеру в списке группы
Найти матрицу AI, обратную матрице A. Если эта операция невыполнима, переопределите какой-либо
элемент матрицы A, чтобы сделать ее допустимой
Вычислить AI*A
Восстановите значение матрицы A с помощью матрицы AI
10
Задание 2.
1. Найти аргумент комплексного числа z .
2. Найти первообразную функции f (x ) .
3. Построить график функции f (x ) , где с шагом 0,01 и 0,03 в декартовой системе координат.
4. Построить график функции r ( ) , где с шагом 0,01 в полярной системе координат.
5. Построить график функции f ( x, y ) , с шагом 0,1 в трехмерной системе координат. Все графики разместить
в одном графическом окне.
Задание 1
№
в.
1
z = (5  3i )(3  i )
2
Задание 2
dx
 3 sin x  cos x
z = (3  5i) 1
2x 1
 ( x  1)( x  2) dx
3
z = (17  9i )(2  3i )
4
z = (7  8i) 1
dx
 x 2 ln x

x
4
x3  1
dx
Задание 3
Задание 4
1
x
cosx
y= 2
x 1
 = sin 3
 = 2 cos 
y = x 2 sin 2 x
=
y = e x cos x
 = e  1
f = min ( x, y )
y=
1

Задание 5
f = sin x cos y
f =
1
x  2 y2
2
f = xy
5
z = (3  5i) 1
x5  x 4  8
 x3  4 x dx
y = sin x  cos x
 = 1  cos 
f = max (| x |, | y |)
6
z = (8  6i) 2
x 4 dx
 ( x 2 1)( x  2)
y = ( x)
 =| sin 2 |
f = min ( x 2 , y)
7
z = (1  9i )(2  3i )
 ln (1  x) dx
y = x  ( x)
 = cos 6
x 4 dx
 ( x 2 1)( x  2)
y = ln 2 x
 cos
y = x  sin x 2
8
z=
1 i
1 i


9
z = 2i 3
10
z = ( 2  i) 2
11
5
2
x dx
3x  2
 x( x  1)3 dx
z = ( 8  i) 2
2
x dx
2
( x  4) 2
f =| x |  | y |  | x  y |
13
z = ( 3  i )3
z = ( 3  i ) 6
14
z = (1  3i )
15
1 i 
z=

1 i 
4
2
e2 x
 2  e2 x dx
dx

e
1  3x
sin x
y = ln (cos x)
y=
x
x 1
x 1
 = 2  cos 
 = 1  2 cos 4
 = 1  2 cos 3
 = 2 cos 2
y = arcsin
1
x3
dx
1  ln x
2
x2
 y2
f = xy
f = x y e x
f = sgn (sin x cos y )
f =
2y
x  y 2 1
y
x
2
y = x 2 sin x
 = cos 2
f =
y =| ln x |
 = sin 5 2
f = ln ( xy)
 = 3 3
f = sin ( x 2  y 2 )
2
cos x dx
2x
f =e
 ( x  2)
12
 = 2
y=
1
x2
11
16
z = 8  i 2
5
 sin
5
 = cos 
x
x 1
y =| x | sin x
f = arccos
x
x y
 = sin 
f = arcsin
y
x
y = 3 8x 2  1
=
x dx
y = arcsin
17
z = ( 2  3i ) 2
18
z = ( 3  7i ) 2
19
z = ( 3  2i )1/3
20
z = ( 3  4i )1/6
dx
5x  2
1
 e x  1 dx

3x 3  2
 x3  x dx
dx
x
x 2
2
y = ln
y=
10
x
1
arccos x
12
3

f = 1 (x2  y2 )
 = 2
f = ln ( x  y )
 = cos 2
f = xy
Download