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

Методическое пособие 182

.pdf
Скачиваний:
9
Добавлен:
30.04.2022
Размер:
534.59 Кб
Скачать

5. Для построения графиков разобьем графическую область окна Figure на 4 подобласти с помощью функции subplot :

>> subplot(2,2,1)

Первое число указывает число окон по вертикали, второе – по горизонтали, третье – номер окна в которое будет выведен текущий график (нумерация окон слева – направо).

6.Строим график потенциала:

>>surf(x, y, P);

7.Строим график величины напряженности в следующем окне:

>>subplot(2,2,2);

>>surf(x, y, E);

8.Для построения векторного поля напряженности воспользуемся функцией quiver :

>>subplot(2,2,3);

>>quiver(x, y, Ex, Ey);

Данная функция строит векторное поле по значениям проекций вектора в данной точке. При этом необходимо следить, чтобы размерность x, y, Ex, Ey была одинаковой.

9. Построим графики сечений поверхности напряженности в направлении оси x и в направлении y следующим образом:

>>subplot(2,2,4);

>>plot(y0,E(:,10),'k.--',x0,E(10,:),'-o');

Приведенный алгоритм рекомендуется выполнить с помощью текстового редактора MATLAB (см. работу №1).

Полученный графический результат необходимо дополнить соответствующими пояснениями как показано на рис. 9., с использованием меню окна Figure.

19

ОТЧЕТ ПО РАБОТЕ

Отчет по работе должен содержать все необходимые сведенья для построения графиков функций одной переменной и поверхностей, а так же дополнительных возможностей для пояснений к графикам. Результатом выполнения практической части должен быть рисунок, приведенный на рис. 9 (сохранить в формате jpg).

Рис. 9

КОНТРОЛЬНЫЕ ВОПРОСЫ

1.Графические возможности системы MATLAB?

2.Системные процедуры, используемые для построения графика функции одной переменной?

3.Как задается равномерная сетка в плоскости Oxy?

20

4.Системные процедуры, используемые для построения поверхностей?

5.Какие возможности предусмотрены в системе для пояснения графиков и их редактирования?

6.Какую функцию необходимо использовать для разбиения графического окна на несколько областей?

7.С помощью какой функции строится векторное поле?

ЛАБОРАТОРНАЯ РАБОТА № 3 ОСНОВЫ ПРОГРАММИРОВАНИЯ В MATLAB

Цель работы : изучение особенностей программирования в системе MATLAB.

В практической части работы предлагается написать программу определения показателя политропы.

ТЕОРЕТИЧЕСКАЯ ЧАСТЬ

Практически невозможно предусмотреть в одной, даже самой большой и мощной, математической системе возможность решения всех задач, которые могут интересовать пользователя. Программирование в системе MATLAB является эффективным средством ее расширения и адаптации к решению специфических проблем. Оно реализуется с помощью языка программирования системы. Большинство объектов этого языка, в частности все команды, операторы и функции, одновременно являются объектами входного языка общения с системой в командном режиме работы. Программы на языке программирования MATLAB сохраняются в виде текстовых m-файлов.

Приведенные выше примеры программ (см. работы №№ 1, 2) часто называют скриптами (script – файлы). Более удобной разновидностью m – файлов являются функции, первой строкой которых является заголовок, использующий оператор

21

function. Использование функций является удобным средством разделения программы на отдельные блоки алгоритмов, обратиться к которым можно из любой точки программы.

Функции получают исходные данные в виде списка входных параметров и возвращают результаты своей работы также в виде списка выходных параметров. Одной из самых важных особенностей функций является аппарат локальных переменных. Все переменные, появляющиеся в теле функции, за исключением глобальных переменных, входных и выходных параметров, считаются локальными. Они образуют локальное рабочее пространство и доступны только в теле породившей их функции, и никакие скрипты или другие функции воспользоваться ими не могут. При написании программ – функций требуется, чтобы имя m – файла, в котором запоминается программа обязательно совпадало с именем функции.

Пример универсальной программы вычисления n! может быть написан следующим образом и должен быть сохранен под именем fact.m :

function y=fact(n) k=1

for i=1:n k=k*I ;

end y=k ;

Для вычисления 5! Достаточно набрать в текущей строке :

>>p=fact(5)

p=

120

Отметим, что при обращении к функции должно выполнятся соответствие между числом входных и выходных параметров. Так например обращения типа:

>>[k1,k2]=fact(5)

22

???Ошибка использования ==> fact Слишком много выходных аргументов. >> k1=fact(5,6)

???Ошибка использования ==> fact Слишком много входных аргументов. >> [k1,k2]=fact(5,6)

???Ошибка использования ==> fact Слишком много входных аргументов.

вызовут ошибку, и работа программы будет прекращена.

Влюбом m – файле можно описать несколько функций (в скриптах не допускается описание функций). Самая первая из них обладает тем преимуществом, что может быть вызвана извне. Все остальные функции считаются внутренними и доступны только в рамках данного m – файла. Функция может не содержать входных и выходных параметров. Если такая функция является внешней, то она выполняет роль скрипта. Однако в отличии от скрипта в ней могут присутствовать другие подфункции, отпадает необходимость в использовании функций как отдельных m – файлов, и текст программы можно целиком поместить в одном файле, а внешние подключать как дополнительные библиотеки (например файлы данных). Поэтому рекомендуем для написания программы отказаться от скриптов и оформлять программу сразу в виде функции без входных и выходных параметров.

Входной язык Matlab насчитывает всего 9 операторов, использующих 14 служебных слов. Соответствующие синтаксические конструкции приведены ниже (табл. 1):

23

 

 

 

 

 

 

 

Таблица 1

 

Формат

 

 

 

 

 

 

 

оператора

 

 

Пояснение

 

 

 

 

 

 

 

 

 

 

 

Оператор

 

присваивания,

вычисляет

1

var =expr

значение выражения expr

и заносит

результаты

 

вычислений

в

 

 

 

 

 

переменную var

 

 

 

 

2

if условие 1

Условный

 

 

оператор.

 

Если

 

операторы_1

справедливо

условие_1,

то

 

elseif условие_2

выполняется группа операторы_1,

 

операторы_2

если справедливо условие_2, то

 

elseif условие_3

выполняется группа операторов_2,…

 

операторы_3

Если все указанные условия не

 

……………………

справедливы,

то

выполняются

 

else

операторы,

расположенные

между

 

операторы

else и end

 

 

 

 

 

end

 

 

 

 

 

 

 

3

switch expr

Переключатель

по

 

значению

 

case var_1

выражения expr. Если оно совпадает

 

операторы_1

с величиной var_1, то выполняются

 

case var_2

операторы_1, …

 

 

 

 

 

операторы_2

Если expr не совпадает ни с одной из

 

…………….

перечисленных

величин,

то

 

Otherwise

выполняются

 

 

операторы

 

операторы

расположенные

между

otherwise

 

end

и end

 

 

 

 

 

 

 

 

 

 

 

4

for var=e1:e2:e3

Цикл

типа

арифметической

 

операторы

прогрессии, в котором переменная

 

end

var при каждом повторении тела

 

 

цикла

 

изменяется

 

от

 

 

первоначального значения

e1 с

 

 

шагом e2 до конечного значения e3.

 

 

24

 

 

 

 

 

 

Продолжение табл. 1

 

 

 

 

 

5

while условие

Цикл

с

предусловием,

 

операторы

повторяющийся до тех пор пока

 

end

истинно указанное условие.

6

try

Попытка

выполнить

 

группу

 

операторы_1

операторы_1. При условии, что

 

catch

в результате их выполнения

 

операторы_2

произошла

 

ошибка,

то

 

end

управление

передается

группе

 

 

операторы_2. Если ошибка не

 

 

произошла

 

выполняются

 

 

операторы_1.

 

 

7

break

Досрочный

выход

из

 

 

конструкций

типа

 

for,

 

 

while,

 

switch,

 

try-

 

 

catch

 

 

 

 

8

function

Заголовок функции. y1, y2,… -

 

[y1,]=fun(x1,)

список выходных параметров.

 

 

x1,x2,…

-

список

входных

 

 

параметров.

 

 

 

9

return

Досрочный

выход

из

тела

 

 

функции.

 

 

 

 

Комментарии начинаются с символа % и располагаются с начала строки либо правее любого последнего оператора строки. Начальные комментарии выполняют особую роль. Первая группа строк с подряд идущими комментариями до пустой строки образует текст, выдаваемый в командном окне по команде help с именем m – файла. Добавим, например, к приведенной выше программе вычисления 5! Следующий комментарий (рис. 1):

Выполним команду: >> help fact

25

Функция вычисления факториала числа

>>

Рис. 1 Важным при написании программ является взаимодействия

пользователя с программой. Простейший способ ввода числовой и символьной информации, набираемой с клавиатуры, использует функцию input. Эта функция допускает два формата обращения :

>> x=input('Введите x= ');

Введите x=

В данном случае программа ожидает ввода (с клавиатуры) значения, которое будет присвоено переменной x. Вместо конкретного значения пользователь может ввести выражение, величина которого будет подсчитана с учетом текущего состояния переменных рабочего пространства.

Второй формат обращения к функции input имеет вид : x=input('Введите x','s');

В данном случае текст, вводимый пользователем, будет рассматриваться как строка символов.

26

Для того чтобы вывести на экран значение некоторой переменной можно исключить знак ';' в конце строки, например :

>>x= 5;

>>x

x=

5

Более гибким вариантом вывода является использование

функции disp :

>>disp(x)

5

>>disp('x^2+3')

x^2+3

>>

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

>> disp(strcat('Значение переменной x= ',num2str(x)));

Значение переменной x=5

>>

В данном примере текст выводимый функцией disp был составлен из двух строк : ' Значение переменной x= ', '5' (функция num2str(x,n) преобразует значение переменной x в строковый тип, n – количество цифр дробной части ). Функция strcat('s1','s2') выполняет операцию горизонтального объединения двух строк s1 и s2. Для вертикального объединения можно воспользоваться функцией strvcat :

>> disp(strvcat('Значение переменной x= ',int2str(x)));

Значение переменной x= 5

27

>>

Отладка программы производится с помощь пунктов Debug и Breakpoint меню окна текстового редактора системы, путем установки точек останова программы. Выполнение программы приостанавливается при достижении строки помеченной точкой как показано на рис. 2. При этом можно проверить значения переменных, выполнить определенные действия по определению корректного значения переменных и т.д. Дальнейшее выполнение программы можно организовать пооператорно (для продолжения нажать F10), что облегчает поиск ошибки, а можно и в обычном режиме (до конца или до следующей точки останова) используя клавишу F5. Как видно из рис.2 с помощью пункта Breakpoints можно регулировать условия останова выполнения программы в случае появления ошибки (stop if error), недопустимого значения переменных (stop if NaN Or Inf) или появлении предупреждения (stop if warning).

Рис. 2

28