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

Informatika_met_ukazania

.pdf
Скачиваний:
11
Добавлен:
11.03.2016
Размер:
1.34 Mб
Скачать

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]