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

Informatika_met_ukazania

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

В MatLab установлен следующий приоритет (порядок выполнения) операций:

1)~ (логическое НЕТ);

2)′ (транспонирование), ^ (возведение в степень, в том числе поэлементно), унарный плюс и унарный минус;

3)* (умножение, в том числе поэлементное), / (деление, в том числе поэлементное);

4)+ (сложение), – (вычитание);

5)== (равно), ~= (не равно), > (больше), < (меньше), >= (больше или равно), <= (меньше или равно);

6) A&B and(A,B) (логическое И), A|B or(A,B) (логическое ИЛИ), xor(A) (исключающее ИЛИ).

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

Циклические алгоритмы. Для многократного выполнения некоторой последовательности операторов MatLab располагает двумя видами операторов цикла:

for – его целесообразно использовать, если заранее известно число итераций в цикле;

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

Синтаксис оператора for следующий:

for count=start:step:final

операторы end

Здесь count − переменная цикла; start − ее начальное значение; final − ее конечное значение; step − шаг изменения переменной цикла. Цикл завершается, как только count становится больше final. Значения параметров start, step и final могут быть как целыми, так и вещественными.

У оператора while следующий синтаксис:

while условие

операторы end

Если условие истинно, то выполняются операторы, в противном случае выполнение оператора while завершается.

31

На рис. 6 представлено окно редактора М-файла с функцией count(x, n), результатом выполнения которой являются два числа F и W − значения суммы

 

n

1

 

 

D(x, n)

i2 sin

 

 

,

 

 

 

 

 

 

x2 3i

i

0

 

 

 

вычисляемые с использованием циклов for и while соответственно. Результат вызова упомянутой функции показан ниже:

>> [F W]=count(1,6)

F=

23.5071

W = 23.5071

Рис. 6. Окно редактора М-файла с функцией count(x, n)

Примечание. При вычислениях различного рода сумм начальное значение для них принимают равным нулю (рис. 6). Аналогично при вычислениях различного рода произведений начальное значение для них часто принимают равным 1.

В MatLab имеются еще два оператора, используемые вместе с рассмотренными операторами цикла. Первый из них (break) прерывает выполнение операторов цикла, а второй (continue) − влечет за собой

32

прекращение выполнения операторов текущей итерации и переход на следующую (т.е. или на проверку условия, если у нас оператор while, или на выполнение count=start:step:final, если оператор for).

Разложение функций в ряд Фурье чрезвычайно широко исполь-

зуется

в радиотехнике.

Периодическая с периодом 2 на отрезке

,

функция f (x)

f (x n2 ) , где n − любое целое число, на-

зывается абсолютно интегрируемой на отрезке [ , ] , если существу-

ет интеграл

f (x)

dx . Каждой абсолютно интегрируемой на отрезке

 

 

 

[ , ] функции f(x) можно поставить в соответствие ее тригонометрический ряд Фурье:

f (x)

S(x)

a0

 

(ak cos(kx)

bk sin(kx)) .

2 k 1

 

 

 

 

 

 

 

 

Коэффициенты тригонометрического ряда Фурье вычисляют по

формулам Эйлера–Фурье:

 

 

 

 

 

 

1

 

 

 

 

1

 

f (x)sin(kx)dx .

ak

 

 

f (x)cos(kx)dx,

bk

 

 

 

 

Справедливо следующее утверждение. Если функция f(x) – кусоч- но-гладкая на отрезке [ , ] , то ее тригонометрический ряд Фурье

S(x) сходится в каждой точке этого отрезка. Выражение вида

 

 

 

 

 

 

 

a0

n

 

 

 

 

 

 

 

Sn (x)

 

(ak cos(kx) bk sin(kx))

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

k 1

 

 

 

называется n-й частичной суммой ряда Фурье. При этом

lim Sn (x0 ) =

 

 

 

 

 

 

 

 

 

 

n

 

 

f (x0 ) ,

если

f(x)

 

непрерывна

в точке x0 , и

lim Sn (x0 )

 

 

 

 

 

 

 

 

 

 

n

 

 

f (x0

0)

f (x0

0)

, если f(x) терпит разрыв первого рода (скачок) в

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

точке x0 .

 

 

 

 

 

 

 

 

 

 

Пример. Построим графики Sn (x)

при n = 12 для периодической с

периодом 2

функции f(x), заданной следующим графиком на

, :

 

 

 

 

 

 

 

 

33

 

 

 

f(x) 2

 

 

 

 

 

 

 

 

 

2,

если

x

 

 

,

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

f (x)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0,

если

x

 

 

.

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

 

 

 

 

 

π –π/2

 

 

π/2

π

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Справа от графика функции f(x) записано ее аналитическое выражение.

Порядок выполнения задания следующий.

1. Формируем М-файл функции для вычислений векторов значе-

ний подынтегральных функций f (x) cos(kx) и

f (x) sin(kx) (рис. 7).

При выполнении вычислений исходный отрезок

,

разбивается

на 100 частей.

 

 

а

34

б

Рис. 7. Окна редактора М-файла с функциями fa и fb

2. Формируем М-файл функцию s, вычисляющую сумму ряда Фурье Sn (x) для заданных значений x, n (рис. 8).

Рис. 8. Окно редактора М-файла с функцией s

35

3. Из командной строки подаем ряд команд, показанных ниже, которые вместе с показанными выше файлами решает поставленную задачу (результат представлен на рис. 9).

>>X=[-pi:2*pi/100:pi];

>>Y=s(X,12);

>>plot(X,Y)

>>grid on

Рис. 9. Окно графика Sn (x) при n = 12

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

trapz(X,Y) − возвращает интеграл от некоторой функции, значения которой заданы вектором Y для значений независимой переменной, заданных вектором X. Интегрирование выполняется методом трапеций. Метод трапеций является универсальным и хорошо подходит для интегрирования не слишком гладких функций.

quad( fun ,a,b,tol,trace,p1,p2, …) − возвращает определенный ин-

теграл от функции fun (это имя М-файл функции), заданной на отрезке [a, b], с заданной относительной точностью tol (по умолчанию tol = 0.001). Параметр trace задают равным нулю, если нет необходимости контролировать процесс интегрирования, и не равным нулю,

36

если такая необходимость имеется. p1, p2, … − значения некоторых параметров функции fun, которые будут ей переданы при вычислениях: fun(x,p1,p2,…); x − независимая переменная. Функция quad может быть вызвана и с меньшим набором параметром, но не меньшим, чем quad( fun ,a,b). В функции quad интегрирование выполняется по методу Симпсона. Он является методом более высокого порядка, чем метод трапеций, и дает при том же числе разбиений большую точность. Но при его использовании надо быть уверенным, что подынтегральная функция является гладкой (т. е. не только сама подынтегральная функция непрерывна, но и непрерывны ее первые производные).

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

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

2.Построить график частичной суммы ряда Фурье для заданного варианта функции f(x) при количестве слагаемых 5, 10 и 20. По результатам вычислений построить четыре графика (включая график исходной функции) на одной координатной плоскости. Процесс вычислений выполнить с использованием М-файл функций и/или М-файл программы. Здесь при вычислении функции f(x) следует применить известное из аналитической геометрии уравнение прямой линии, проходящей через две заданные точки.

Контрольные вопросы и задания

1.Поясните, чем М-файл программа отличается от М-файл функ-

ции.

2.Запишите синтаксисы операторов if и switch. Объясните порядок их работы и особенности использования.

3.Запишите установленный в MatLab приоритет операций.

4.Каковы сущность и порядок разложения функции в ряд Фурье?

37

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

ПРИМЕНЕНИЕ СИСТЕМЫ MATLAB

ДЛЯ ИССЛЕДОВАНИЯ ЭЛЕКТРИЧЕСКИХ ЦЕПЕЙ

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

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

нем i(u ) чаще всего используют степенной i(u )

a

a u

a u2

V

V

0

1 V

2 V

или экспоненциальный i(u )

A e uV 1 полиномы невысокого по-

V

 

 

 

 

рядка. Если эта зависимость определена, то процесс анализа нелинейной цепи с использованием системы MatLab становится достаточно простым, что показано ниже и на рис. 2 и 3.

>>x=0.2:0.05:0.5;

>>plot(x,f7(x))

>>grid on

>>u=0.32;

>>fzero('f7',u) ans =

0.3212

Рис. 1. Цепь, содержащая полупроводниковый диод

38

Рис. 2. Окно редактора М-файла с функцией

Рис. 3. Окно выходного графика

На рис. 2 не показан процесс определения коэффициентов степенного интерполяционного полинома, которые являются решением СЛАУ вида

a

a u

 

a

u2

i ,

0

1

1

2

1

1

a

a u

2

a u2

i ,

0

1

 

2

2

2

a

a u

3

a

u2

i ,

0

1

 

2

3

3

39

где

u ,

u

2

,

u

1

,

i ,

i

2

, i

1

− соответствующие друг другу век-

 

1

 

 

3

 

1

 

 

3

 

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

A exp( u1 ) 1 i1, A exp( u2 ) 1 i2 ,

что можно относительно просто сделать через решение одиночного нелинейного уравнения (как в лабораторной работе № 1).

Решение задачи Коши для дифференциальных уравнений и системы дифференциальных уравнений 1-го порядка. Если обыкновен-

ное дифференциальное

уравнение (ОДУ) 1-го порядка

y

dy(x)

 

 

dx

 

 

 

f (x, y(x)), (x, y(x))

G R3 имеет в области G решение, то, вооб-

ще говоря, таких решений бесконечно много и они могут быть заданы

в виде функций

y y(x, C) , где С – произвольная константа, такая,

что (x, y(x, C))

G и y (x, C) f (x, y(x, C)) при произвольных зна-

чениях С. Если же необходимо найти решение, удовлетворяющее некоторому начальному условию y(x0) = y0, то говорят об отыскании решения задачи Коши.

Для отыскания аналитического решения задачи Коши полезна следующая теорема [6].

Теорема Пикара (о существовании и единственности решения).

Если правая часть f (x, y(x)) дифференциального уравнения непрерывна в некоторой окрестности точки (x0, y0) и имеет непрерывную в

этой окрестности частную производную df (x, y) , то уравнение имеdy '

ет единственное решение y y(x; x0 , y0 ) .

Несмотря на внешнюю простоту ОДУ, отыскать решение (аналитически) задачи Коши удаѐтся лишь для некоторых специальных типов таких уравнений. Поэтому приходится делать ставку на приближѐнные (численные) методы решения ОДУ и их систем [5].

40

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