Informatika_met_ukazania
.pdf0.2000
0.7000
0.9000
Для доступа к элементу массива следует после имени массива в круглых скобках указать его индекс, например:
>> act(3)+y(1) ans =
4.8000
При работе с индексами удобна индексация при помощи символа
«:».
Примеры:
>> act(2:5)=0 act =
0.8000
0
0
0
0
0.9000
>>x=0:2*pi/9:2*pi % начальное значение − 0, шаг − |
2 |
, конечное − 2 |
|||||||||
9 |
|||||||||||
|
|
|
|
|
|
|
|
|
|
||
x = |
|
|
|
|
|
|
|
|
|
|
|
Columns 1 through 9 |
|
|
|
|
|
|
|
|
|||
0 |
0.6981 |
1.3963 |
2.0944 |
2.7925 |
3.4907 |
4.1888 |
4.8869 |
5.5851 |
Column 10 6.2832
Примечание. Вид выводимой вашим компьютером информации может не совпасть с указанным выше, например, из-за несовпадения ширины командного окна − это, как правило, достаточно легко исправляется.
Над векторами возможны так называемые поэлементные операции (поэлементные умножение, деление и возведение в степень), как показано ниже:
>> v=a.*c |
|
% поэлементное умножение |
v = |
|
|
0.1600 |
1.6100 |
8.1900 |
>> z=a./c |
|
% поэлементное деление |
|
|
11 |
z = |
|
|
4.0000 |
3.2857 |
10.1111 |
>> s=a.^c |
|
% поэлементное возведение в степень |
s = |
|
|
0.9564 |
1.7915 |
7.2969 |
Поэлементные операции следует использовать, если действия требуется выполнить применительно к элементам массива, а не ко всему массиву в целом. В системе MatLab не определены поэлементные сложение и вычитание.
Ввод двумерных массивов (прямоугольных матриц) осуществляется по строкам. Это можно сделать тремя способами. Пусть, например, необходимо ввести матрицу
0.4 -4.5 8.3 A 6.8 0.9 1.1 .
-6.3 3.5 4.7
В командном окне набираем
>> A=[0.4 -4.5 8.3;6.8 0.9 1.1; -6.3 3.5 4.7] % отделяем строки символом «;»
A=
0.4000 -4.5000 8.3000
6.8000 0.9000 1.1000
-6.3000 3.5000 4.7000
Другой пример
B=[ 1.3 |
5.2 -8.1<Enter> |
% отделяем строки нажатием |
|
-1.7 |
2.4 |
0.3<Enter> |
% на клавишу <Enter> |
6.6 |
-7.1 |
1.0]<Enter> |
|
B=
1.3000 5.2000 -8.1000
-1.7000 |
2.4000 |
0.3000 |
|
|
6.6000 |
-7.1000 |
1.0000 |
|
|
Третий пример |
|
|
||
>> D=[[3;4] [-1;3] [6;0]] |
% элементами строки являются столбцы |
|||
D = |
|
|
|
|
3 |
-1 |
6 |
|
|
4 |
3 |
0 |
|
|
|
|
|
|
12 |
Над матрицами определены следующие операции: вычисление размера матрицы, вычисление числа элементов матрицы, транспонирование, сложение и вычитание матриц (как для векторов), умножение на число (так же, как и для векторов), а также матричное произведение и возведение в степень (для квадратных матриц), как показано ниже:
>> C=[4.4 0.7 -0.6; 2.8 -0.1 5.6] |
% ввод матрицы |
|||
C = |
|
|
|
|
4.4000 |
0.7000 |
-0.6000 |
|
|
2.8000 |
-0.1000 |
5.6000 |
|
|
>> s=size(C) |
|
% вычисление размера матрицы |
||
s = |
|
|
|
|
2 |
3 |
|
|
|
>> C1=C.' |
|
|
% транспонирование матрицы |
|
C1 = |
|
|
|
|
4.4000 |
2.8000 |
|
|
|
0.7000 |
-0.1000 |
|
|
|
-0.6000 |
5.6000 |
|
|
|
>> n=numel(A) |
% вычисление числа элементов в матрице |
|||
n = |
|
|
|
|
9 |
|
|
|
|
>> P=A*B |
|
% матричное произведение |
P=
62.9500 -67.6500 3.7100
14.5700 29.7100 -53.7100
16.8800 -57.7300 56.7800
>> PP=A^2 |
% возведение в степень |
|
PP = |
|
|
-82.7300 |
23.2000 |
37.3800 |
1.9100 -25.9400 |
62.6000 |
|
-8.3300 |
47.9500 |
-26.3500 |
Обращение к элементам матрицы выполняется аналогично обращению к элементам вектора, но с использованием запятой, например:
>>C(2,2)=-10 % элементу матрицы присваивается значение
C =
4.4000 0.7000 -0.6000
2.8000 -1`0.0000 5.6000
>>c121=C(1:2,1) % выделяются элементы С(1,1) и С(2,1)
13
c121 = |
|
|
4.4000 |
|
|
2.8000 |
|
|
>> PP(:,2)=[] |
% удаляется второй столбец |
|
PP = |
|
|
-82.7300 |
37.3800 |
|
1.9100 |
62.6000 |
|
-8.3300 |
-26.3500 |
|
>> PP(:,3)=[1 2 3] |
% добавляется третий столбец |
|
PP = |
|
|
-82.7300 |
37.3800 |
1.0000 |
1.9100 |
62.6000 |
2.0000 |
-8.3300 |
-26.3500 |
3.0000 |
Для матриц, как и для векторов, определены следующие поэлементные операции:
A.*B − поэлементные умножения; A./B − поэлементные деления;
A.^p − поэлементное возведение в степень (p − число);
A.^B − возведение элементов матрицы A в степени, равные соответствующим элементам матрицы B.
Элементарные функции системы MatLab. MatLab включает в себя огромный набор функций (abs, acos, acosh, acot, acoth, asin, asinh, atan, atanh, cos, cosh, cot, coth, csc, csch, exp, log, log10, log2, sqrt, sec, sech, sin, sinh, tan, tanh и др.). Для знакомства с ними и выбора необходимой следует воспользоваться справочной службой системы через меню Help Product Help. Откроется окно, и в нем в навигационном дереве, расположенном слева, следует выбрать пункт MATLAB, как показано на рис. 3. При использовании функций не следует забывать, что в MatLab все данные − суть матрицы.
Построение таблицы значений функции пользователя. Пусть не-
обходимо построить таблицу значений функции
y(x) |
|
sin3 (x) |
e |
x |
lg(x) |
|
|
|
|||
1 |
0.5cos(x) |
|
|
|
для значений переменной х от 0.1 и до 2.5 с шагом 0.3. Требуемое выполняется в два этапа.
1. Создается вектор-строка х, где содержатся координаты требуемых точек по оси абсцисс.
14
Рис. 3. Окно справочной системы
2. Для каждого элемента вектора х вычисляется значение функции y(x) и полученное значение записывается в вектор-строку, как показано ниже (операции умножения, деления и возведения в степень в выражении для функции должны выполняться поэлементно!):
>> x=[0.1:0.3:2.5] x =
0.1000 0.4000 0.7000 1.0000 1.3000 1.6000 1.9000 2.2000 2.5000 >> y=sin(x).^3./(1-0.5*cos(x)) + exp(-x).*log10(x)
y =
-0.9029 -0.1573 0.3560 0.8164 1.0638 1.0256 0.7712 0.4463 0.1857
Построение графика функции. Если в следующей строке ко-
мандного окна вызвать функцию plot(x,y), то откроется окно, показанное на рис. 4,а, с искомым графиком.
Для того чтобы на одной координатной плоскости построить графики двух функций (например, y(x) и sin(3x)), следует вызвать функцию plot со следующим списком аргументов:
>> plot(x,y,x,sin(3*x))
После этого вид окна графика приобретет вид, представленный на рис. 4,б. Если желательно, чтобы графики кривых не выглядели ломаными, то необходимо при определении вектора х выбрать меньший шаг.
15
а |
б |
Рис. 4. Окна графиков
Функция plot позволяет пользователю достаточно гибко управлять процессом визуализации результатов вычислений. Один из возможных ее синтаксисов plot(X1,Y1,LineSpec1,X2,Y2,LineSpec2,...), где Х1, Х2, … − имена векторов оси абсцисс; Y1, Y2, … − имена векторов оси ординат; LineSpec1, LineSpec2, … − спецификации 1-й, 2-й и т. д. линий, записываются в апострофах (см. таблицу).
Цвет линии |
|
Тип линии |
|
Тип маркера |
|
y |
желтый |
- |
сплошная |
. |
точка |
m |
розовый |
: |
пунктирная |
o |
кружок |
c |
голубой |
-. |
штрихпунктирная |
x |
крестик |
r |
красный |
-- |
штриховая |
+ |
знак плюс |
g |
зеленый |
|
|
* |
звездочка |
b |
синий |
|
|
s |
квадрат |
w |
белый |
|
|
d |
ромб |
k |
черный |
|
|
v |
треугольник вершиной вниз |
|
|
|
|
^ |
треугольник вершиной вверх |
|
|
|
|
< |
треугольник вершиной влево |
|
|
|
|
> |
треугольник вершиной вправо |
|
|
|
|
p |
пятиконечная звезда |
|
|
|
|
h |
шестиконечная звезда |
|
|
|
16 |
|
|
Пример |
|
>> x1=[0:1:pi]; |
% задается первый массив значений по оси х |
>> t3=[-pi:0.05:pi]; |
% задается второй массив значений по оси х |
>> r1=exp(-x1).*sin(x1); % вычисляется первый массив значений по оси y
>> w4=t3.^2.*cos(t3); % вычисляется второй массив значений по оси y
>> plot(x1,r1,'r*',t3,w4,'k--') % строятся два графика на одной координатной плоскости
Записанное выше приведет к построению графика, показанного на рис. 5,а.
Из этого рисунка видно, что значения двух функций сильно отличаются по величине, и поэтому для них желательно иметь несколько различающиеся оси ординат. Последнее достигается использованием функции
>> plotyy(x1,r1,t3,w4)
Результат показан на рис. 5,б (видны две оси ординат).
а |
б |
Рис. 5. Окна графиков
М-файл функции. Работа из командной строки MatLab вызывает затруднения, если требуется вводить много команд и часто их изменять. Пусть, например, необходимо так задать функцию
17
f (x) |
5 x2 |
2 |
, |
|
cos e |
4.8 x |
|||
|
|
чтобы в дальнейшем ее значение (например, для х = 7) можно было получить простым вызовом f(7) в командной строке − так же как и для элементарных функций. Для этого в MatLab имеется простой механизм, называемый М-файл функция. Это, в сущности, аналог функций языков программирования. Сначала М-файл функцию надо создать. Для
этого выполним щелчок ЛКМ по иконке (New M-File − новый М- файл), находящейся в панели ярлыков (то же самое можно сделать, выбрав меню File New M-File). Откроется окно редактора М- файлов, и в нем, как показано на рис. 6, наберем текст функции (операции используем поэлементные!). Здесь function − обязательное служебное слово, с − имя переменной выходного параметра (если их более одного, то они через запятую записываются в квадратных скобках), f − имя функции, х − имя входной переменной (если их более одной, то они записываются через запятую). Комментарии в MatLab начинаются со знака процента и автоматически выделяются зеленым цветом. В этом же окне файл надо сохранить (щелчком ЛКМ по иконке, изображающей дискету). Файл должен иметь то же имя, что и функция, а также тип m. В редакторе М-файлов может быть одновременно открыто несколько файлов. Переход между файлами осуществляется при помощи закладок с именами файлов, находящихся внизу окна редактора.
Рис. 6. Окно редактора М-файлов с функцией f
Теперь имеется возможность вызывать из командного окна функцию f, указывая конкретное значение ее параметра, например:
18
>> f(7) ans = 243
Если имеется необходимость повторно вызвать функцию f, то это
целесообразно сделать, используя клавиши < > < >. Для получения справки по любой встроенной функции MatLab достаточно установить курсор на имя функции и нажать на клавишу <F1>.
Построим график приведенной выше функции f(x) в декартовых координатах для промежутка изменения аргумента [–0.2, 2] с шагом 0.2. Будем исходить из того, что М-файл для f(x) уже сохранен на диске. Подадим в командной строке две простые команды:
>>x=[-0.2:0.2:2];
>>plot(x,f(x))
Результатом этих действий будет график, представленный на рис. 7,а. Если же подать следующие две команды
>>x=[-0.2:0.02:2];
>>plot(x,f(x))
то результат окажется несколько иным (рис. 7,б).
а |
б |
Рис. 7. Окна графика функции f(x)
19
Для того чтобы одновременно в одном окне иметь два различных графика, следует применить функцию subplot, как показано на рис. 8.
>>x=[-0.2:0.2:2];
>>subplot(1,2,1)
>>plot(x,f(x))
>>x=[-0.2:0.02:2];
>>subplot(1,2,2)
>>plot(x,f(x))
Рис. 8. Окно графиков функции f(x) с использованием функции subplot
Решение системы линейных алгебраических уравнений
(СЛАУ). Постановка задачи. Общий вид у СЛАУ следующий:
a11 x1 |
a12 x2 |
... |
a1n xn |
a1n 1 , |
|
a21 x1 |
a22 x2 |
... |
a2n xn |
a2n 1 |
, |
. . . . . . . . . . . . . . . . . . . . . . . . . . .
an1 x1 an2 x2 ... ann xn ann 1.
В матричном виде эта СЛАУ может быть записана в виде Ax b ,
где
20