Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Выч.математика (Быков) - ЛБ 1 (методичка).doc
Скачиваний:
5
Добавлен:
11.07.2019
Размер:
398.34 Кб
Скачать

Сценарии и m-файлы

Для простых операций удобен интерактивный режим, но если вычисления нужно многократно выполнять или необходимо реализовывать сложныеалгоритмы, то следует использовать m-файлы MATLAB (расширение файла состоит из одной буквы m). script-m-файлы (или сценарии) – текстовые файлы, содержащие инструкции на языке MATLAB, подлежащие исполнению в автоматическом пакетном режиме. Создать такой файл удобнее с помощью редактора системы MATLAB. Он вызывается из командного окна системы MATLAB командой меню File/New/M-file (или самой левой кнопкой на полосе инструментов, на которой изображен чистый белый лист бумаги). Записанные в script-файлы команды будут выполнены, если в командной строке ввести имя script-файла (без расширения). Переменные, определяемые в командном окне и переменные, определяемые в сценариях, составляют единое рабочее пространство системы MATLAB, причем переменные, определяемые в сценариях, являются глобальными, их значения заместят значения таких же переменных, которые были использованы до вызова данного script-файла.

После создания текста сценария его надо сохранить на диске. Путь к этому каталогу обязательно должен быть известен системе MATLAB. Командой File/Set Path вызывается диалоговое окно просмотрщика путей доступа к каталогам. Для добавления нового каталога в список путей доступа необходимо выполнить далее команду меню Path/Add to path.

Функцию пользователя можно создать следующим образом:

  1. Вызов окна редактора m-файлов путем нажатия кнопки New M-File (Создать m-файл).

  2. Ввод строки

function z=expxp(x)

Ключевое слово function объявляет новую функцию, имя которой expxp, а ее параметр – х. Символ Z определяет значение функции при аргументе x.

  1. Задание новой функции (функции пользователя). Пусть

z=exp(x)/x

  1. Сохранение функции пользователя на диске. Для этого достаточно щелкнуть мышью по кнопке Save (Сохранить).

  2. Закрытие окна редактора m-файлов.

Функция пользователя z=exp(x)/x создана.

Для вычисления функции при данном аргументе х достаточно набрать имя функции и значение аргумента в круглых скобках: z=expxp(1). На экране получим значение функции z = 2.7183.

Простейшие операции с векторами и матрицами.

MATLAB является системой, которая специально предназначена для осуществления сложных вычислений с векторами, матрицами и полиномами. Под вектором в MATLAB понимается одномерный массив чисел, а под матрицей - двумерный массив.

Исходные значения векторов-строк можно задавать путем поэлементного ввода. Для этого вначале указывают имя вектора, затем ставят знак присваивания (=), далее открывающую квадратную скобку ( [ ), за ней значения вектора, отделяя их между собой пробелами или запятыми. Завершается запись закрывающей квадратной скобкой ( ] ).

Например: V=[1 2 3] или V=[1,2,3]

V = 1 2 3

Длинный вектор можно вводить частями, которые затем объединяют с помощью операции объединения векторов в строку.

V1=[1 2 3]; V2=[4 5 6];

V=[V1 V2]

V = 1 2 3 4 5 6

Язык MATLAB дает пользователям возможность сокращенного ввода вектора, элементы которого являются арифметической прогрессией.

V = nz : h : kz,

где nz – начальное значение прогрессии (первый элемент вектора);

kz – конечное значение прогрессии (последний элемент вектора);

h – разность прогрессии (шаг).

Например: V= -0.1:0.3:1.4

V= -0.1 0.2 0.5 0.8 1.1 1.4

Вектор-столбец задается аналогично вектору строке, но элементы отделяются друг от друга знаком «;».

Ввод элементов матрицы осуществляется по строкам. При этом элементы строки матрицы отделяются друг от друга пробелами или запятыми, а строки отделяются друг от друга знаком «;».

Например: А=[1,2,3; 4,5,6; 7,8,9]

А = 1 2 3

4 5 6

7 8 9

Формирование векторов и матриц.

MATLAB имеет несколько функций, которые позволяют формировать векторы и матрицы определенного вида:

zeros (M, N) – создает матрицу размером M на N с нулевыми элементами;

zeros (2,3)

ans = 0 0 0

0 0 0

ones (M, N) - создает матрицу размером M на N с единичными элементами;

ones(2,3)

ans = 1 1 1

1 1 1

eye (M, N) - создает матрицу размером M на N с единицами по главной диагонали и всеми остальными нулями;

eye(2,3)

ans = 1 0 0

0 1 0

rand (M,N) - создает матрицу размером M на N из случайных чисел, равномерно распределенных в диапазоне от 0 до 1;

rand(2,3)

ans = 0.9501 0.6068 0.8913

0.2311 0.4860 0.7621

Извлечение и вставка отдельных элементов матриц.

Обращение к любому элементу матрицы осуществляется указанием после имени матрицы номера строки и номера столбца на пересечении которых расположен элемент матрицы.

Например: А = 1 2 3

4 5 6

7 8 9

Х= А (2,3)

Х=6

Если нужно наоборот вставить на это место какое-либо число, то это можно сделать следующим образом:

A(2,3)=pi

A = 1 2 3

4 5 3.14

7 8 9

Пусть требуется создать вектор V1, состоящий из элементов третьего столбца матрицы А.

V1=А(:,3)

V1 = 3

3,14

9

Пусть требуется создать матрицу В размером 2:2 состоящую из элементов правого верхнего угла матрицы А.

В=А(1:2, 2:3)

B= 2 3

3,14

Пусть требуется внести элементы матрицы В в левый нижний угол матрицы А.

А(2:3, 1:2)=B

A= 1 2 3

2 3 6

5 3,14 9

Растянуть матрицу в один вектор можно с помощью следующей записи:

A= 1 2 3

4 5 6

V=A(:)

V=1 2 3 4 5 6

Действия над векторами.

Выделим 2 группы действий над векторами: векторные действия и действия по поэлементному преобразованию векторов.

Векторные действия:

Сложение векторов:

х=[1 2 3]; y=[4 5 6]; v=x+y (v= 5 7 9 )

2) Вычитание векторов: v=x-y (v= -3 -3 -3)

3) Транспонирование вектора: х’ ans = 1

2

3

4) Умножение вектора на число: v = x*2 (v= 2 4 6)

5) Умножение 2 векторов (для векторов одинаковой длины, один строка, а другой столбец) :

х=[1 2 3]; y=[4 5 6]; v=x’*y

v = 4 5 6

8 10 12

12 15 18

v=x*y’ v = 32

Действия по поэлементному преобразования векторов.

Все эти операции преобразуют элементы вектора как элементы обычного одномерного массива чисел. К таким операциям относятся все из вышеперечисленных элементарных математических функций, зависящих от одного аргумента.

Например х=[-2,-1,0,1,2]

V=sin(x); V =-0.9093 -0.8415 0 0.8415 0.9093

V=tan(x); V=exp(x) и др.

  1. Добавление (вычитание) числа к каждому из элементов (+, -);

  2. Поэлементное умножение векторов (.*);

  3. Поэлементное деление векторов (./, .\)

  4. Поэлементное возведение в степень.(.^)

Визуализация вычислений

Для построения графика в линейном масштабе служит функция Plot.

Основными функциями двухмерной графики являются:

plot(x, y)

plot(x, y, s)

plot(x1, y1, s1, x2, y2, s2, …, xn, yn, sn)

где:

  • х – аргумент функции, задаваемой в виде вектора;

  • у – функция, представленная в аналитическом виде или в виде вектора или матрицы;

  • s – вектор стилей графика; константа, определяющая цвет линий графика, тип точек и тип линий;

  • х1, х2, …, хn – аргументы n функций, изображаемых на одном графике;

  • у1, у2, …, уn – функции, изображаемые на одном графике.

В таблице 1.1 приведены стили графиков системы MATLAB.

Таблица 1.1. Стили графиков

Тип точки

Цвет линии

Тип линии

.

Точка

Y

Желтый

-

Сплошная

О

Окружность

M

Фиолетовый

:

Двойной пунктир

Крест

C

Голубой

-.

Штрих-пунктир

+

Плюс

R

Красный

--

Штриховая

*

Восьмиконечная снежинка

G

Зеленый

S

Квадрат

B

Синий

D

Ромб

W

Белый

V, ^, <, >

Треугольник вверх, вниз, влево, вправо

K

Черный

P

Пятиконечная звезда

H

Шестиконечная звезда

Subplot. Разбиение графического окна

Синтаксис:

subplot(m, n, p)

subplot(h)

subplot(mnp)

Данная команда выполняется перед обращением к функциям построения графиков для одновременной выдачи нескольких графиков в различных частях графического окна.

Команды subplot(m, n, p), где mnp - 3 цифры, производит разбивку графического окна на несколько подокон, создавая при этом новые объекты axes; значение m указывает, на сколько частей разбивается окно по горизонтали, n - по вертикали, а p - номер подокна, куда будет выводиться очередной график. Эти же команды могут использоваться для перехода от одного подокна к другому.

Пример:

В верхней части экрана строится функция y1 = sin(x), в нижней - y2 = log(abs(y)).

x = -1:.1:1;

y1 = sin(x);

subplot(2, 1, 1), plot(x, y1)

y2 = log(abs(y1));

subplot(2, 1, 2), plot(x, y2)

Команда hold on включает режим сохранения текущего графика и свойств объекта axes, так что последующие команды приведут к добавлению новых графиков в графическом окне. Команда hold off выключает режим сохранения графика.

Рассмотрим пример построения графика функции у=sin xe-x. График функции приведен на рис. 1.3.

В окне Command Window задается программа:

>> x=-5:0.5:5; % задание промежутка [-5;5] с шагом 0,5

>> plot(x,expxp(x),['R','*','-.']) % построение графика функции expxp(x) красного цвета (R), точки графика в виде снежинок (*), линии штрихпунктирные (-.)

>> grid on % задание сетки

Рис.1.3. График функции у=sin xe-x.

Для блокировки вывода результата вычисления некоторого выражения в командное окно после него надо установить знак ;

figure; – создание нового графического окна.

disp (x) – отображение массива, без печати имени массива.

Например: disp([1 2 3]) % вывод на экран чисел 1 2 3

disp (’Text’) % вывод на экран строки Text

со списком элементарных функций можно ознакомиться, набрав команду help elfun

со списком операторов - help ops

Чтобы очистить командное окно, необходимо из меню Edit задать команду Clear Command Window

Чтобы очистить историю команд, необходимо из меню Edit задать команду Clear Command History

Целая часть числа от дробной отделяется точкой.

ЗАДАНИя на лабораторную работу

1. Создать функции пользователя y1=f(x) и y2=f(x), вычислить ее значение в точках х0, х1, x2. Построить график в диапазоне [a, b] с шагом k.

Варианты заданий. Таблица 1.

варианта

Функция y1

Функция y2

х0

x1

x2

a

b

k

1

5,5

-8

7

-10

10

0,1

2

2,7

4

5,6

-20

-7

0,11

3

3,1

-2

4

-4

7

0,07

4

4,2

-7,3

4

20

40

0,05

5

6,32

1,4

1

20

35

0,1

6

-4,7

-0,1

-12

-35

-5

0,05

7

2,3

2

5

-10

15

0,11

8

8,2

1,4

5

-15

15

0,1

9

4,5

1

4

-20

15

0,07

10

1,23

0

10

-20

20

0,05

11

7,5

-5,1

5

-10

5

0,1

12

3,6

-2,4

7,8

-5

20

0,05

2. Функция также должна также выводить на экран Ф.И.О. студента, группу, вариант задания.

3. Составить программу, вычисляющую координаты точки, делящий отрезок AB в отношении n1: n2 , по формулам:

Вывести информацию в виде:

а) Отступив слева 20 позиций, вывести ответ в виде:

КООРДИНАТЫ ТОЧКИ: x= … y= …

б) Ниже вывести строку из дефисов

---------------------------------------------------

в) Пропустить 2 строки

г) Вывести заголовок:

ИСХОДНЫЕ ДАННЫЕ

д) Под заголовком вывести значения исходных данных в виде:

A=( … , … ), B=( … , … ), n1= … n2= …

4. Задать векторы V1 и V2 длиной N (таблица 2). Элементы вектора – случайные числа.

Вывести на экран V1 и V2.

− Выполнить над V1 и A операцию 1.

− Выполнить над результатом и V1 операцию 2.

− Выполнить над результатом и A операцию 3.

− Возвести почленно V1 в степень 3.

– Сложить V1 и V2.

варианта

Длина вектора

Операнд А

Операторы

1

2

3

1

10

5

*

./

+

2

15

6

/

.\

+

3

16

7

-

.*

.*

4

13

8

*

./

./

5

18

9

/

.*

+

6

20

4

-

.*

./

7

23

6

-

./

.\

8

11

33

*

.*

-

9

14

23

/

.\

.\

10

16

5

-

.*

.*

11

20

3

*

./

-

12

14

10

*

.\

.\

4. Задать матрицу А

5. Сгенерируйте массив В размером 3х3 со случайными элементами.

6. Выполните действия

A+10B, A*B, BT

почленно умножить А на В,

определить максимальный и минимальный элементы матрицы В.

7. Определить массив D:

8. Вывести на одном графическом окне раздельно 4 графика функций:

sin(x+v), exp(vx), x2/v, cos(x)/cos(v). V – номер варианта.

9. На одной области построения графиков вывести графики одновременно вывести графики функций: 1/sin(x*v), 2/cos(x*v). Изучить функцию Legend и с ее помощью подписать кривые.

Контрольные вопросы

  1. Структура окна редактора MatLab.

  2. Правила ввода команд.

  3. Правила ввода функций и операндов.

  4. Правила ввода выражений.

  5. Организация циклов.

  6. Правила ввода комментариев.

  7. Правила просмотра результатов операций.

  8. Правила создания двумерных графиков.

  9. Запуск и отладка программ.

  10. Как изменить на экране формат вывода числа?

  11. Как можно просмотреть в MATLAB список всех элементарных математических функций?

  12. Какие виды функций в MATLAB Вам известны?

  13. Опишите способы создания одномерных массивов в MATLAB.

  14. Опишите способы создания двумерных массивов в MATLAB.

  15. Перечислите и объясните действие операторов, используемых при вычислениях с массивами.

  16. Как построить несколько графиков в одной системе координат?

  17. Как построить графики в разных подобластях одного графического окна?

  18. Как изменить цвет и стиль линий на графиках?

  19. Как сделать надписи на осях, на полученном рисунке? Как сделать заголовок для графика?

  20. Что такое m-файлы? Как создать, сохранить и вызвать m-файл?

13