ЛАБОРАТОРНАЯ РАБОТА 7

Некоммерческое акционерное общество

АЛМАТИНСКИЙ УНИВЕРСИТЕТ ЭНЕРГЕТИКИ  И СВЯЗИ

Кафедра «Электроника»

 

 

КОМПЬЮТЕРНЫЕ ТЕХНОЛОГИИ В ПРИБОРОСТРОЕНИИ

 Методические указания к выполнению лабораторных работ

для студентов специальности «5В071600 – Приборостроение»

 

 

Алматы 2013

СОСТАВИТЕЛИ: Б.С.Байкенов. Компьютерные технологии в приборостроении. Методические указания к выполнению лабораторных работ для студентов специальности «5В071600 – Приборостроение». – Алматы: АУЭС,2013. – 32 с.

 

Методические указания предназначены для ознакомления студентов с программой математического моделирования MatLab, используемой при разработке электрических моделей приборов и систем, безусловно, включая тепловые и механические.

В методических указаниях изложены принципы работы MatLab и основы вычислений, графическое отображение функций на плоскости и в 3D, элементы матричной алгебры, решение систем уравнений и задач оптимизации, методы интегрирования и решение дифференциальных уравнений. 

Методическая разработка составлена в целях закрепления лекционного материала и предназначена для студентов специальности «5В071600 –Приборостроение».  

Ил. 6, табл. 3, библиогр. – 5 назв.    

    

Рецензент: старший преп. кафедры ТКС  Г.А. Шахматова         

 

Печатается по плану издания Некоммерческого акционерного общества “Алматинский университет энергетики и связи” на 2013 г.

© НАО “Алматинский университет энергетики и связи”, 2013 г. 

Св. план 2013 г., поз.161   

Введение

Методические указания составлены для приобретения практических навыков программирования в среде Matlab, математический аппарат которого необходим при разработке электрических, тепловых и механических моделей приборов и систем.

Основной целью методических указаний является закрепление лекционного материала и освоение основных принципов работы MatLab и основы вычислений, графического отображения функций на плоскости и в 3D, элементов матричной алгебры, решение систем уравнений и задач оптимизации, методов интегрирования и решение дифференциальных уравнений. 

Кроме того, в методических указаниях приведены простые примеры матричной логики программы Matlab для анализа приборов и систем.

Методические указания  полностью соответствуют требованиям Государственного общеобязательного стандарта образования по специальности «5В071600 –Приборостроение».

 

1 Лабораторная работа № 1. Работа с системой MATLAB в режиме прямых вычислений

 

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

 

1.1 Основные положения

 

MATLAB – одна из старейших и тщательно проработанных систем автоматизации математических расчетов. Она является расширяемой системой, которую легко можно приспособить к решению различных классов задач. Своим названием (MATrix LABoratory – «матричная лаборатория») система обязана ориентации на матричные и векторные вычисления.

MATLAB специально создана для проведения инженерных расчетов:

- математический аппарат системы приближен к современному математическому аппарату инженера и ученого и опирается на вычисления с векторами, матрицами, действительными и комплексными числами;

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

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

Работа с системой в режиме прямых вычислений носит диалоговый характер. Вычисляемое выражение вводится путем набора на клавиатуре и нажатия клавиши ENTER. При этом действует простейший строчный редактор.

Его команды:

- «→» – перемещение курсора вправо на один символ;

- «←» – перемещение курсора влево на один символ;

- «ctrl →» – перемещение курсора вправо на одно слово;

- «ctrl ←» – перемещение курсора влево на одно слово;

- «home» – перемещение курсора в начало строки;

- «end» – перемещение курсора в конец строки;

- «↑ и ↓» – перелистывание строк вверх или вниз;

- «del» – стирание символа, на котором установлен курсор;

- «ins» – включение / выключение режима вставки.

Важными командами системы являются:

- HELP – помощь;

- DEMO – демонстрация;

- INFO – информация.

MATLAB содержит несколько системных переменных, в том числе:

- pi – число «пи»;

- inf – значение машинной бесконечности;

- ans – переменную, хранящую результат последней операции.

В арифметических выражениях применяются следующие знаки операций:

- «+» – сложение;

- «–» – вычитание;

- «*» – умножение;

- «/» – деление слева направо;

- «\» – деление справа налево;

- «^» – возведение в степень.

Поэлементные операции имеют следующий вид:

.<знак операции>

Для задания переменных в системе MATLAB используется операция присваивания, вводимая знаком:

Имя_переменной = Выражение.

Если запись оператора не заканчивается символом «;», то результат выводится в командное окно, в противном случае – не выводится.

Если оператор не содержит знака присваивания «=», то значение результата присваивается системной переменной ans.

При работе с числовыми данными можно задавать различные форматы представления чисел (при этом все вычисления проводятся с предельной, так называемой двойной точностью). Для установки формата представления чисел используется команда «format name», где «name» – имя формата. Команда «format» может устанавливать следующие режимы вывода:

- format – аналогично format short и устанавливается по умолчанию;

- format short – формат с фиксированной точкой с 5 знаками;

- format short e – формат с плавающей точкой с 5 знаками;

- format long – формат с фиксированной точкой с 15 знаками;

- format long e – формат с плавающей точкой с 15 знаками;

- format hex – шестнадцатеричный формат;

- format + – компактный формат, «+», «–» и «пробел» служат для отображения положительных, отрицательных и нулевых элементов, мнимая часть игнорируется;

- format bank – фиксированный формат для денежных единиц;

- format compact – формат с подавлением перевода строки;

- format loose – формат, обратный format compact.

Система MATLAB работает как с действительными, так и с комплексными числами вида z = Re(z) + i*Im(z), где i (или j) – мнимая единица; т. е. квадратный корень из –1, Re(z) – действительная часть комплексного числа z, а Im(z) – его мнимая часть. Перед использованием операций с комплексными числами необходимо определить i = sqrt(–1) или j = sqrt(–1) . Функция real(z) возвращает действительную часть комплексного числа Re(z), а функция imag(z) – мнимую Im(z). Для получения модуля комплексного числа используется функция abs(z), а для вычисления аргумента – angle(z).

Система MATLAB позволяет вычислять различные математические функции. Следующие элементарные алгебраические функции имеют в качестве аргумента одно или два действительных (x, y) или одно комплексное (z) число:

- abs(z) – вычисление модуля комплексного числа z или абсолютного значения действительного числа z;

- angle(z) – вычисление аргумента z;

- sqrt(z) – вычисление квадратного корня;

- real(z) – вычисление действительной части z;

- imag(z) – вычисление мнимой части z;

- round(z) – округление до целого;

- fix(z) – округление до ближайшего целого в сторону нуля;

- floor(z) – округление до ближайшего целого в сторону отрицательной бесконечности;

- sign(z) – вычисление функции знака;

- rem(x, y) – вычисление остатка от деления x на y;

- exp(z) – вычисление числа е в степени z;

- log(z) – вычисление натурального логарифма числа z;

- log10(z) – вычисление десятичного логарифма числа z.

Система MATLAB предоставляет возможности для вычисления следующих тригонометрических и обратных тригонометрических функций:

- sin(z) – вычисление синуса;

- cos(z) – вычисление косинуса;

- tan(z) – вычисление тангенса;

- asin(z) – вычисление арксинуса;

- acos(z) – вычисление арккосинуса;

- atan(z) – вычисление арктангенса;

- atan2(y, x) – вычисление арктангенса по координатам точки.

 

1.2 Порядок выполнения лабораторной работы

 

1.2.1 Расчет и вывод значений переменных.

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

 

Таблица 1.1 – Варианты заданий

Задание

Формат

1

abs(sin(0)+cos(0)+log(1))/exp(1)

format short

2

(log(1)+exp(10))/(sin(pi)–cos(pi))

format short

3

(log(10)–exp(5))/(sin(2*pi)–cos(2*pi))

format short

4

sign(sin(0)–cos(0)+log(1)+exp(1))

format short

5

(sin(3*pi)+cos(3*pi)/(log(10)–exp(1))

format short

6

abs(sin(0)+cos(0)+log(1))/exp(1)

format short e

7

(log(1)+exp(10))/(sin(pi)–cos(pi))

format short e

8

(log(10)–exp(5))/(sin(2*pi)–cos(2*pi))

format short e

9

sqrt(sin(0)–cos(0)+log(1)+exp(1))

format short e

10

(sin(3*pi)+cos(3*pi)/(log(10)–exp(1))

format short e

11

abs(sin(0)+cos(0)+log(1))/exp(1)

format long

12

(log(1)+exp(10))/(sin(pi)–cos(pi))

format long

13

(log(10)–exp(5))/(sin(2*pi)–cos(2*pi))

format long

14

sign(sin(0)–cos(0)+log(1)+exp(1))

format long

15

(sin(3*pi)+cos(3*pi)/(log(10)–exp(1))

format long

16

abs(sin(0)+cos(0)+log(1))/exp(1)

format long e

17

(log(1)+exp(10))/(sin(pi)–cos(pi))

format long e

18

(log(10)–exp(5))/(sin(2*pi)–cos(2*pi))

format long e

19

sqrt(sin(0)–cos(0)+log(1)+exp(1))

format long e

20

(sin(3*pi)+cos(3*pi)/(log(10)–exp(1))

format long e

 

1.2.2 Комплексные перемененные.

Пример ввода комплексного числа z.

>> z= 1+2i

Скопировать, вставить в Matlab и нажать Enter.

z=

   1.0000 + 2.0000i

Допускается обозначение мнимой части i или j.

>> z+j

ans=

   1.0000 + 3.0000i

>> i*z

   -2.0000 + 1.0000i

>> (2 - 4i)*(1 + z)

ans=

   12.0000 - 4.0000i

>> c= complex(3,-4)

c=

   3.0000 - 4.0000i

Вычисление комплексно-сопряженного числа.

>> conj(c)

cs=

   3.0000 + 4.0000i

Выделение действительной и мнимой части комплексного числа С.

>> a= real(c)

a=

    3

>> b= imag(c)

b=

    -4

Определение модуля и угла комплексного числа.

>> md= sqrt(a^2 + b^2)

md=

   25

>> rd= atan2(-4,3)

rd=

   0.9273

>> gr= (180/pi)*rd

gr=

   -53.1301

 

1.3 Содержание отчета

 

1. Цель работы.

2. Расчет и вывод данных.

3. Описание команд с комплексными переменными.

4. Выводы.

 

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

 

1. Какой вид имеет приглашение, выводимое при загрузке MATLAB?

2. Основные команды MATLAB для работы в режиме прямых вычислений?

3. Какой командой устанавливается формат чисел?

4. Для чего служит команда format hex?

5. Для чего служит команда conj()?

6. В чем отличие команд atan() и atan2()?

7. Для чего служит команда real()?

8. Для чего служит команда imag()?

2 Лабораторная работа № 2. Операции с векторами и матрицами в системе MATLAB

 

Цель работы: изучение реализации средствами системы MATLAB основных операций с векторами и матрицами.

 

2.1 Основные положения

 

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

При вводе значения векторов и матриц перечисляются в квадратных скобках. Для разделения столбцов используются пробелы, для разделения строк – знак «;». Система MATLAB дает возможность ввода вектора, значения которого являются арифметической прогрессией:

<Имя> = <НЗ>:<Ш>:<КЗ>,

где <НЗ> – начальное значение прогрессии, <Ш> – разность прогрессии, <КЗ> – конечное значение.

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

Матрицы можно расширять, используя матрицы малых размеров как элементы матриц больших размеров.

Генерацию некоторых наиболее распространенных видов матриц обеспечивают следующие матричные функции:

zeros(m,n) – генерация матрицы с нулевыми элементами;

ones(m,n) – генерация матрицы с единичными элементами;

rand(m,n) – генерация матрицы с элементами, имеющими случайные значения;

eye(m,n) – генерация матрицы с единичными диагональными элементами (m – количество строк; n – количество столбцов матрицы).

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

Имя_матрицы = [].

при этом имя матрицы сохраняется, и в дальнейшем ее можно расширить и использовать.

Уничтожение матрицы осуществляется с помощью команды:

clear Имя_матрицы.

Выделение элементов матрицы (а) производится с помощью команд:

a(i,j) – выделение элемента i-й строки j-го столбца;

a(i,:) – выделение i-й строки;

a(:,j) – выделение j-го столбца.

В MATLAB возможны следующие операции с векторами и матрицами:

+ – сложение;

– – вычитание;

* – умножение;

/ – оператор деления. Если оба операнда - скаляры, то результат - частное от деления скаляр на скаляр. Если первый операнд матрица, а второй скаляр, то результат будет матрица, в которой каждый элемент - частное от деление на скаляр. Если оба операнда квадратные матрицы одного ранга, то результат будет - произведение матрицы первого операнда на матрицу, обратную матрице-второму операнду.

\ - оператор левостороннего деления. Операндами являются квадратные матрицы одного ранга. Результатом является матрица, равная матрицы, обратной к первому операнду-матрице, на второй операнд-матрицу.

' – транспонирование;

^ – возведение в степень;

inv(m) – вычисление обратной матрицы m;

pinv(m) – псевдообращение матрицы m;

sqrtm(m) – матричный квадратный корень;

poly(m) – вектор с коэффициентами характеристического многочлена матрицы;

det(m) – значение определителя матрицы m;

trace(m) – след матрицы m;

rank(m) – ранг матрицы m.

Система MATLAB имеет ряд функций, предназначенных для обработки данных, заданных в матричной или векторной форме.

Функция size(m) служит для определения числа строк и столбцов матрицы m. Она возвращает вектор [n, p], содержащий эти данные.

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

Аналогично действует функция min(m), выделяющая элементы с минимальными значениями.

Функция mean(v) возвращает среднее значение элементов вектора v, а функция mean(m) с матричным аргументом возвращает вектор-строку средних значений каждого из столбцов данных.

Функция std(v) возвращает статистический параметр – стандартное (квадратичное) отклонение для одномерного массива данных, представленного вектором v. Для матричного аргумента эта функция возвращает вектор-строку стандартных отклонений для каждого из столбцов.

Функция сортировки sort(v) возвращает вектор, элементы которого расположены в порядке роста их значений. Для матричного аргумента эта функция возвращает матрицу, у которой отсортированы элементы каждого столбца.

Функция sum(v) возвращает сумму элементов вектора v, а для матричного аргумента функция sum(m) возвращает вектор-строку сумм элементов по каждому из столбцов.

Аналогично функция prod(m) возвращает вектор произведений элементов каждого из столбцов.

2.2 Порядок выполнения лабораторной работы

 

2.2.1 Ввод с клавиатуры векторов и матриц.

Ввести:

– вектор-строку (v);

>> v= [1 2 3]

v =

     1     2     3

– вектор-столбец (w);

>> w= [3;2;1]

w =

     3

     2

     1

– матрицу (m).

>> m= [1 2 3;3 2 1;1 3 2]

m =

     1     2     3

     3     2     1

     1     3     2

 

2.2.2 Генерация матриц специального вида.

Создать:

– матрицу с нулевыми элементами (m0);

>> m0= zeros(3,3)

m0 =

     0     0     0

     0     0     0

     0     0     0

– матрицу с единичными элементами(m1);

>> m1= ones(3,3)

m1 =

     1     1     1

     1     1     1

     1     1     1

– матрицу с элементами, имеющими случайные значения(mr);

>> mr= rand(3,3)

mr =

    0.8147    0.9134    0.2785

    0.9058    0.6324    0.5469

    0.1270    0.0975    0.9575

 

– матрицу с единичными элементами в главной диагонали ();

>> me= eye(3,3)

me =

     1     0     0

     0     1     0

     0     0     1

- извлечение из матрицы вектора-столбца;

>> m(1:3,2)

ans=

       2

       2

       3

- извлечение из матрицы вектора-строки;

>> m(3,1:3)

ans=

       1   3   2

- извлечение подматриц (миноров);

>> m(1:2,1:2)

ans=

       1   2

       3   2

 

2.2.3 Вычисление матрицы mm.

 

Таблица 2.1 – Варианты заданий

Задание

1

mm=v*w+m+mr*me

2

mm=m+mr*me

3

mm=v/m+mr*me

4

mm=w/m+mr*me 

 

Например, определим матрицу mn варианта №1:

>> mm=v*w+m+mr*me

mm =

   11.8147   12.9134   13.2785

   13.9058   12.6324   11.5469

   11.1270   13.0975   12.9575

Определение числа строк и столбцов матрицы mm.

>> size(mm)

ans =

     3     3

Определение максимального элемента матрицы mm каждого столбца.

>> max(mm)

ans =

   13.9058   13.0975   13.2785

Определение минимального элемента матрицы mm каждого столбца.

>> min(mm)

ans =

   11.1270   12.6324   11.5469

Суммирование элементов матрицы mm каждого столбца.

>> sum(mm)

ans =

   36.8475   38.6433   37.7829

Перемножение элементов матрицы mm каждого столбца.

>> prod(mm)

ans =

 1.0e+003 *

    1.8281    2.1366    1.9867

 

Функция сортировки sort(v) - элементы вектора v располагаются в порядке роста их значений.

>> v=[123 11 66]

v =

   123    11    66

>> sort(v)

ans =

    11    66   123

 

2.2.4 Решение системы линейных уравнений.

 

 .

Систему уравнений можно представить в матричном виде как   или .

>> A=[1 2 3;-1 1 2;1 -2 5]

A=

    1   2   3

   -1   1   2

    1  -2   5

>> b=[10;1;4]

b=

    10

      1

      4

Обратную матрицу А-1 можно получить только их невырожденной матрицы А, у которой детерминант отличен от нуля (делить на ноль нельзя).

>> det(A)

ans=26

Первый способ решения.

Обратная матрица А-1 определяется командой inv(A).

>> A1= inv(A)

A1=

      0.3462   -0.6154    0.0385

      0.2692    0.0769   -0.1923

      0.0385    0.1538    0.1154

Для проверки правильности получения обратной матрицы используем свойство

 .

>> A*A1

ans=

     1.0000             0              0

             0     1.0000      0.0000

     0.0000             0      1.0000

>> x= A1*b

x=

     3

     2

     1

Второй способ решения.

Вместо вычисления обратной матрицы А1 и умножения ее (слева) на вектор b, можно использовать оператор левостороннего деления \.

>> x= A\b

x=

     3

     2

     1

 

Решение системы уравнений: х1=3; x2=2; x3=1. Очевидно, что второй способ предпочтительнее, чем первый.

 

2.3 Содержание отчета

 

1. Цель работы.

2. Результаты пунктов 2.2.1-2.2.3.

3. Выводы.

 

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

 

1. Как осуществляется ввод вектора-строки?

2. Как осуществляется ввод вектора-столбца?

3. Как определяется число строк и столбцов матрицы?

4. Какие операции служат для определения max-го и min-го элемента матрицы?

5. Как осуществляется суммирование и умножение элементов матрицы?

3 Лабораторная работа №3. Графические средства MATLAB

 

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

 

3.1 Основные положения

 

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

Основные операторы графики:

plot(x,y) – построение графика в линейном масштабе;

loglog – построение графика в логарифмическом масштабе;

semilogx – построение графика в полулогарифмическом масштабе (log по оси x);

semilogy – построение графика в полулогарифмическом масштабе (log по оси y);

polar – построение графика в полярной системе координат;

mesh(x,y,z) – построение графика трехмерной поверхности;

contour – построение графика с контурными линиями – уровнями равных высот;

bar(x,y) – построение графика столбцовой гистограммы;

stairstep – построение графика в виде ступенчатой линии.

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

text – вывод надписи в заданное место графика;

title('y=sin(x)') – задание титульной надписи;

xlabel('x') – задание надписи по оси x;

ylabel('y') – задание надписи по оси y;

grid on – задание пунктирной масштабной сетки.

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

axis([0 10 -3 3]) – масштаб по оси Х: от 0 до 10, по оси У: от -3 до 3;

hold on – сохранение предшествующего графика в одном окне;

prtsc – печать изображения графического экрана;

subplot(m,n,p) – разбивка окна на меньшие окна (m – количество окон по вертикали, n – по горизонтали, p – номер подокна).

 

3.2 Порядок выполнения лабораторной работы

 

3.2.1 Вывод графиков функций.

 

Таблица 3.1 – Варианты заданий

f1

f2

f3

f4

1

sin(x)

cos(x)

x2

ln(x)

2

ex

x2

x

|x|

3

sin(x)+cos(x)

cos(x)+ x2

x2+ln(x)

ln(x)+ ex

4

sin(x)+ex

sin(x)+x2

sin(x)+x

sin(x)+|x|

5

x*sin(x)

x*cos(x)

x2

x*ln(x)

6

x*ex

sin(x)+x2

sin(x)+x

sin(x)+|x|

7

sin(x)*cos(x)

cos(x)*x2

x2*ln(x)

ln(x)*ex

8

sin(x)*ex

sin(x)*x2

sin(x)*x

sin(x)*|x|

9

sin2(x)

cos2(x)

x

ln2(x)

10

sin(x)*ex

sin(x)*x2

x sin(x)

|x|*sin(x)

Примечание: y = abs(x) - функция определяет модуль аргумента |x|.

С помощью команды subplot() отобразить в 4 подокнах одного графического окна заданные функции, размещенные в столбцах f1-f4 таблицы 3.1.

Окно 1:

y1=f1(x)

y2=2*f1(x)

y3=3*f1(x)

Окно 2:

y1=f2(x)

y2=2*f2(x)

y3=3*f2(x)

Окно 3:

y1=f3(x)

y2=2*f3(x)

y3=3*f3(x)

Окно 4:

y1=f4(x)

y2=2*f4(x)

y3=3*f4(x)

Пример:

>> x=0:0.1:10;

>> y1=sin(x);

>> y2=2*sin(x);

>> y3=3*sin(x);

>> axis([0 10 -3 3]);

>> subplot(2,2,1);

>> plot(x,y1,x,y2,x,y3);

>> title('y=sin(x)')

>> xlabel('x');

>> ylabel('y');

>> grid on

>> x=0:0.1:10;

>> y1=cos(x);

>> y2=2*cos(x);

>> y3=3*cos(x);

>> axis([0 10 -3 3]);

>> subplot(2,2,2);

>> plot(x,y1,x,y2,x,y3);

>> title('y=cos(x)')

>> xlabel('x');

>> ylabel('y');

>> grid on

>> x=0.1:0.1:10;

>> y1=x.^2;

>> y2=2*x.^2;

>> y3=3*x.^2;

>> axis([0 10 0 300]);

>> subplot(2,2,3);

>> plot(x,y1,x,y2,x,y3);

>> title('y=x.^2');

>> xlabel('x');

>> ylabel('y');

>> grid on

>> x=0:0.1:10;

>> y1=log(x);

>> y2=2*log(x);

>> y3=3*log(x);

>> axis([0 10 0 30]);

>> subplot(2,2,4);

>> plot(x,y1,x,y2,x,y3);

>> title('y=ln(x)');

>> xlabel('x');

>> ylabel('y');

>> grid on

 

Рисунок 3.1 - Графики заданных функций

 

3.4.2 Вывод трехмерных графиков.

Построим график пространственной кривой, координаты точек которой определяются функциями только одного параметра t.

>> t=0:0.01:2*pi;

>> x=cos(10*t).*sin(t/2);

>> y= sin(10*t).*sin(t/2);

>> z= cos(t/2);

>> plot3(x,y.z)

>> grid on

>> axis equal

 

Рисунок 3.2 - График пространственной кривой

При построении графика поверхности, координаты точек определяются функциями уже двух параметров φ и θ. На основе параметрических зависимостей строятся матрицы узловых точек и значения функции в этих узловых точках, после чего поверхность строится с помощью функции mesh()  surf().

>> phi=0:0.1:2*pi;

>> theta=0:0.1:pi;

>> [Phi,Theta]=meshgrid(phi,theta);

>> X=cos(Phi).*sin(Theta);

>> Y=sin(Phi).*sin(Theta);

>> Z=cos(Theta);

>> mesh(X,Y,Z)

>> axis equal

 

Рисунок 3.3 - График поверхности единичной сферы (шара)

 

3.3 Содержание отчета

 

1. Цель работы.

2. Листинг и графики f1-f2 с двумя подокнами и f3-f4 c одним окном (все графики без умножения на 2 и 3).

3. Выводы.

 

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

 

1. Как осуществляется построение графиков с подокнами?

2. Для чего служит команда mesh?

3. Как осуществляется построение столбцовой диаграммы?

4. Для чего используется команда grid on?

5. Как осуществляется масштабирование осей?

 

4 Лабораторная работа № 4. Программирование в среде MATLAB

 

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

 

4.1 Основные положения

 

В MATLAB имеется возможность выполнять определенные фрагменты кода программы n-е количество раз, но записав их только один раз на жесткий диск в виде m-файла.

На практике часто используется сценарий - это набор команд, занесенный в файл с расширением m. В файлах-сценариях все используемые переменные образуют «рабочее пространство», значения которых сохраняются в течение всего сеанса работы с системой.

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

Фактически m-файлы выполняют роль подпрограмм, но записанные вне рабочего поля Command Window основной программы и хранимые отдельно на жестком диске.

Для диалогового ввода используется команда input.

переменная = input(‘выражение’).

Для вывода данных на дисплей используется команда

disp (‘переменная или текст’).

К условным операторам относят операторы if и оператор перебора switch.

Конструкции условных операторов if:

1) if условие

команды

end

Команды выполняются только в том случае, если условие истинно, если условие ложно (0), то команды не выполняются.

2) if условие

команды_1

else

команды_2

end

3) if условие_1

команды_1

elseif условие_2

команды_2

. . .

elseif условие_N

команды_N

еlse

команды_N+1

end

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

Общий синтаксис вызова оператора перебора switch:

switch переменная

case значение_1

команды_1

case значение_2

команды_2

…………..

case значение_N

команды_N

otherwise

команды_N+1

end

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

Арифметический оператор цикла имеет следующий вид:

for переменная = <нз>: <ш>: <кз>

команды

end

где <нз> – начальное и <кз> – конечное значение переменной.

Значение <ш> задает шаг приращения переменной от <нз> до <кз>. Если <ш> не указан, то по умолчанию равен 1.

Для повторения команд нефиксированное число раз используется оператор цикла while с предусловием:

while условие

команды

end

Операторы выполняются, если переменная «условие» имеет ненулевые элементы.

Для работы с файлами и данными в оперативной памяти компьютера служат следующие команды:

dir – отображение на экране совокупности файлов, хранящихся в текущем каталоге;

what – вывод имен m-файлов, содержащихся на диске;

type – вывод на экран листинга текстового файла.

 

4.2 Порядок выполнения работы

 

4.2.1 Создание сценариев.

Для вызова встроенного редактора Editor, в котором создается m-файл сценарий, необходимо выбрать команду File-New-Blank M-File в главном меню окна Command Window.

В редакторе Editor записать следующие команды:

x=-4*pi:0.01:4*pi;

y=sin(x)./x;

plot(x,y,'b-','LineWidth',2)

title('Plot for function y(x)=sin(x)/x')

xlabel('x')

ylabel('sin(x)/x')

grid on

Файл-сценарий сохранить с названием SinX.m и закрыть его. Затем в рабочем поле Command Window набрать имя файла сценария - появится график функции y(x)=sin(x)/x (см. рисунок 4.1). Точка после sin(x)./x означает создание вектора-функции (матрица-строка) при определенном значении аргумента х в заданном диапазоне x=-4*pi:0.01:4*pi с шагом 0,01 радиана.

>> SinX

>> 

Рисунок 4.1 – График функции после выполнения сценария

 

4.2.2 Функции пользователя.

Для вызова встроенного редактора Editor, в котором создается m-файл функции, необходимо выбрать команду File-New-Function M-File в главном меню окна Command Window.

В редакторе Editor записать следующие команды:

function z=ComplPoc

Re=input('Re=');

Im=input('Im=');

z=Re+1i*Im;

disp(['z=',num2str(z)]);

md=sqrt(Re^2+Im^2);

disp(['md=',num2str(md)]);

rd=atan2(Im,Re);

disp(['rd=',num2str(rd)]);

phi=(180/pi)*rd;

disp(['phi=',num2str(phi)]);

end

Команда num2str() переводит значение переменной в скобках в текст.

Файл-функцию сохранить с названием ComplPoc.m. Затем в рабочем поле Command Window набрать имя функции - появятся результаты преобразования комплексного числа z из алгебраической формы представления в показательную (отсюда и название).

>> ComplPoc

Re=3

Im=4

z=3+4i

md=5

rd=0.9273

phi=53.1301

 

4.2.3 Условные операторы.

4.2.3.1 Условный оператор if.

В редакторе Editor записать следующие команды:

function y=Select(x)

if x<-5

    y=x+5;

    disp(['y=',num2str(y)]);

elseif x<0

    y=x*(x+5);

    disp(['y=',num2str(y)]);

elseif x<7

    y=x*(x-7);

    disp(['y=',num2str(y)]);

else

    y=x-7;

    disp(['y=',num2str(y)]);

end

if y==0

    disp('bye-bye');

end

end

Файл-функцию сохранить с названием Select.m. Затем в рабочем поле Command Window набрать имя функции с произвольным значением аргумента х - появятся результаты расчета функции у в зависимости от знака аргумента.

>> Select(2)

y=-10

>> Select(10)

y=3

>> Select(-3)

y=-6

>> Select(-10)

y=-5

>> Select(0)

y=0

bye-bye

 

4.2.3.2 Оператор перебора switch.

В редакторе Editor записать следующие команды:

function y=Perebor(x,n)

switch n

    case 1

       y=x;

    case 2

       y=x*(10-x);

    case {3,4,5}

       y=x*sin(n*x);

    otherwise

       y=1/(1+x^2);

end

end

Файл-функцию сохранить с названием Perebor.m. Затем в рабочем поле Command Window набрать имя функции с произвольным значением х и переменной n (двух аргументов) - появятся результаты расчета функции у в зависимости от x и n.

>> Perebor(5,1)

ans =

     5

>> Perebor(5,2)

ans =

    25

>> Perebor(5,3)

ans =

    3.2514

>> Perebor(5,4)

ans =

    4.5647

>> Perebor(5,-1)

ans =

    0.0385

 

4.2.4 Операторы цикла.

4.2.4.1 Арифметический оператор цикла.

В редакторе Editor записать следующие команды:

function y=Expan(x,n)

z=0;

q=1;

for i=0:n-1

z=z+q;

q=q*x/(i+1);

end

y=z+q;

end

Файл-функцию сохранить с названием Expan.m. Затем в рабочем поле Command Window набрать имя функции с произвольным значением х (степень экспоненты) и переменной n (верхний предел суммы ряда) - появятся результаты расчета приближенного значения экспоненты .

Если на k-шаге добавка равна , то на следующем, k+1-шаге, .

>> Expan(1,5)

ans =

    2.7167

>> Expan(1,100)

ans =

    2.7183

 

4.2.4.2 Условный оператор цикла.

В редакторе Editor записать следующие команды:

function s=Qvadrat(n)

sum=0;

i=1;

while i<=n

    sum=sum+i*i;

    i=i+1;

end

s=sum/n;

end

Файл-функцию сохранить с названием Qvadrat.m. Затем в рабочем поле Command Window набрать имя функции с произвольным значением аргумента n - появятся результаты расчета функции .

>> Qvadrat(10)

ans =

   38.5000

 

4.3 Содержание отчета

 

1. Цель работы.

2. Листинг программ с условными операторами и операторами цикла.

3. Выводы.

 

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

 

1. Чем отличается сценарий от функции?

2. Как ввести с клавиатуры переменную в рабочую среду?

3. Для чего служат условные операторы?

4. Для чего служат циклические операторы?

5. Какую функцию при программировании выполняют m-файлы?

 

5 Лабораторная работа № 5. Функции пользователя в MATLAB

 

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

 

5.1 Основные положения

 

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

- нахождение корней одного уравнения (fzero);

- нахождение корней системы уравнений (fsolve);

- нахождение корней полинома (roots);

- поиск локального минимума и максимума функции одного аргумента (fminbnd);

- поиск минимума функции нескольких аргументов (fminsearch);

- вычисление определенного интеграла (quad);

- вычисление несобственного интеграла (quadgk);

- решение дифференциальных уравнений (ode45).

 

5.2 Порядок выполнения работы

 

5.2.1 Встроенные функции для решения уравнений.

5.2.1.1 Функция fzero().

У функции fzero() несколько способов вызова. Первым аргументом является ссылка на саму функцию f(x), в качестве которой может быть указатель на функцию, имя m-файла с кодом функции или заключенное в кавычки выражение, определяющее функциональную зависимость f(x). Вторым аргументом функции fzero() являются границы интервала поиска (функция f(x) должна принимать значения разных знаков) или начальное приближение (начальная тоска поиска).

1. Решения уравнения на интервале поиска.

>> x=fzero('2*sin(x)^2 + sin(x) - 1',[0 pi/2])

x=

0.5236

>> x=fzero('2*sin(x)^2 + sin(x) - 1',[pi/2 pi])

x=

2.6180

2. Решение уравнения со ссылкой на m-файл и начальным приближением.

Окно редактора m-файла с именем f.m Editor будет выглядеть так

function z=f(x)

z=2*sin(x)^2 + sin(x) - 1;

end

Ссылку на m-файл с именем f.m в командном окне можно сделать 2-мя способами:

>> z=fzero(@f,pi/4)

x=0.5236

>> z=fzero(' f ',3*pi/4)

x=2.6180

 

3. Анонимные функции @(х).

Использование анонимных функций @(х) позволяет объявлять решаемую функцию f(x) прямо в командном окне и получить не только корень уравнения, но значение функции с помощью команды [x,res].

>> F=@(x) (sin(x)+cos(x))

F=

@(x) (sin(x)+cos(x))

>> [x,res]=fzero(F,[0 pi])

x=

2.3562

res=

1.1102e-016

Видно, что значение функции F в точке корня x=3π/4=2.3562 практически равно нулю res=1.11x10-16.

 

5.2.1.2 Функция fsolve().

Для решения систем уравнений используется функция fsolve(), первым аргументом которой является ссылка на вектор-функцию. Ссылка может быть на m-фaйл или анонимную функцию @, т.е. аналогично вышеописанным способам.

Решим систему уравнений:

>> opts=optimset('Display','off');

>> F=@(x) [(x(1)^2 + x(2)^2 - 25),((x(1) + 1)*x(2) - 16)];

>> z=fsolve(F,[0 1],opts)

z=

3.0000      4.0000

Команда optimset(‘Display’,’off’) отменяет вывод (практически ненужной) текстовой информации Matlab на экран. Начальные точки поиска равны х1=0 и х2=1.

5.2.1.3 Функция roots().

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

Задан полином 6-й степени:

>> a=[1,-10,16,0,-1,10,-16]

a=

1     -10     16     0     -1     10     -16

>> roots(a)

ans=

8.0000

2.0000

-1.0000

-0.0000 + 1.0000i

-0.0000 - 1.0000i

1.0000

 

5.2.1.4 Функция fminbnd().

Для поиска локального минимума скалярной функции одного аргумента на конечном интервале используется функция fminbnd().

Функциональная зависимость f(x)=x(x - 2)(x - 5)(x - 10) имеет 2 минимума и 2 максимума. В функции быстрого создания графика ezplot(f,[-1 11]) первым аргументом является указатель на функцию, вторым - диапазон изменения аргумента.

>> f=@(x) (x.*(x - 2).*(x - 5).*(x - 10));

>> ezplot(f,[-1 11])

>> grid on

>> [x y]=fminbnd(f,-1,11)

x=8.2874

y=-293.3580

>> [x y]=fminbnd(f,-1,2)

x=0.8306

y=-37.1338

Рисунок 5.1 - График функции для поиска экстремума

 

Для нахождения локального максимума функции y=f(x) необходимо найти локальный минимум y=-f(x). Первым аргументом функции fminbnd(@(x) (-f(x),2,6) указана анонимная функция @(x) (-f(x)), действие которой на аргумент х состоит в вычислении значения f(x), где f есть указатель на исходную функцию.

>> f=@(x) (x.*(x - 2).*(x - 5).*(x - 10));

>> ezplot(f,[-1 11])

>> grid on

>> [x y]=fminbnd(@(x) (-f(x),2,6)

x=3.6320

y=-51.6363

 

5.2.1.5 Функция fminsearch().

Для нахождения минимума функции нескольких аргументов используют функцию fminsearch(). Аргументами функции является указатель на исследуемую функцию и список начальных приближений аргументов этой функции.

Определим минимум функции

>> f=@(x) (x(1)^2 - 2*x(1)*x(2) + 2*x(2)^2 - 4*x(1));

>> [x z]=fminsearch(f,[3,1])

x=

4.0000      2.0000

z=-8.0000

 

Минимум функции в точке х=4 и у=2, а значение f=-8.

 

5.2.2 Вычисление определенных интегралов.

5.2.2.1 Функция quad().

Функция quad() используется для вычисления определенного интеграла методом квадратур Симпсона, первым аргументом которой является ссылка на подынтегральную функцию (или имя соответствующего m-файла), а вторым и третьим - пределы интегрирования.

Найдем интеграл

>> quad(@tan,0,pi/4)

ans=0.3466

>> log(2)/2

ans=0.3466

 

5.2.2.2 Функция quadgk().

Функция quadgk() используется для вычисления несобственного интеграла (пределы от 0 до ∞) методом квадратур Гаусса-Кронрода. Функции quad() и quadl() с таким интегралом не справляются.

Найдем интеграл  (интеграл Пуассона).

>> f=@(x) (exp(-x.^2));

>> quadgk(f,0,Inf)

ans=0.8862

>> sqrt(pi)/2

ans=0.8862

 

5.2.3 Решение дифференциальных уравнений.

В числовом виде дифференциальные уравнения решаются в контексте задачи Коши - заданы начальные значения.

Функция ode45() применяется для решения дифференциальных уравнений 4 и 5 порядков методом Рунге-Кутты, первым аргументом которой является указатель на решаемую функцию, вторым - передается список значений аргументов х, а третий аргумент определяет начальное значение функции.

Решим дифференциальное уравнение  c начальным значением у(1)=1.

Общее решение имеет вид ,

где С - константа, определяется из начальных условий.

Подставив начальные условия у(1)=1, получим  или С=0.

Тогда решение будет иметь вид у(х)=1/х.

>> f=@(x,y) (y.^2 - 2./x.^2);

>> [x,y]=ode45(f,1:0.1:10,1);

>> plot(x,y,'r-','LineWidth',2)

>> hold on

>> plot(x,1./x,'b:','LineWidth',2)

>> grid on

 

Рисунок 5.2 - График решения дифференциального уравнения

 

Первый график показывает решение после команды ode45 красной линией толщиной 2, а второй график у=1/х синей пунктирной линией.

 

5.3 Содержание отчета

 

1. Цель работы.

2. Листинг программы для нахождения корней уравнения f(x) = 0.

3. Листинг программы для нахождения минимума функции одной переменной.

4. Листинг программы для определения минимума функции нескольких переменных.

5. Листинг программы для вычисления определенного интеграла.

6. Листинг программы для решения дифференциальных уравнений.

 

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

 

1. Для чего служит функция fzero?

2. Для чего служит функция fsolve?

3. Для чего служит функция roots?

4. Чем отличается функция fminbnd от fminsearch?

5. Чем отличается функция quad от quadgk?

 

Список     литературы

1. Васильев А.Н. MATLAB. Практический подход. - СПб.: Наука и Техника, 2012. - 448 с.

2. Влах И.,  Сингхал К. Машинные методы анализа и проектирования электронных схем. − М.: Радио и связь, 1988. − 560 с.

3. Дьяконов В.П. MATLAB 6/6.1/6.5 + Simulink 4/5. Основы применения. – М.: СОЛОН-Пресс, 2002. – 768 с.34. Дьяконов В.П. VisSim+Mathcad+MATLAB. Визуальное математическое моделирование. – М.: СОЛОН-Пресс, 2004. – 384 с.

4. Дьяконов В. П. Справочник по применению системы PC MATLAB. - М.: Физматлит, 2004. - 112 с.

5. Хайнеман  Р.  Моделирование  работы  электронных  схем. - М.: ДМК Пресс, 2005. - 336 с.

 

Содержание

 

Введение

3

1 Лабораторная работа №1.

3

2 Лабораторная работа №2.

7

3 Лабораторная работа №3. 

13

4 Лабораторная работа №4.

17

5 Лабораторная работа №5.

21

Список литературы

27