Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
-6-05-~1.PDF
Скачиваний:
0
Добавлен:
28.12.2025
Размер:
6.59 Mб
Скачать

156

Окончание таблицы 5.1

5

0,6768

0,144

0,47

0,1

0,0001

2

6

2,2976

0,4335

0,795

0,15

0,0001

3

7

5,372

1,2493

0,559

0,13

0,0001

1

8

3,8987

0,5819

0,737

0,11

0,0001

2

9

0,6768

0,144

0,47

0,1

0,0001

3

10

2,2976

0,4335

0,795

0,15

0,0001

1

11

5,372

1,2493

0,559

0,13

0,0001

2

12

0,6768

0,144

0,47

0,1

0,0001

3

13

2,2976

0,4335

0,795

0,15

0,0001

1

14

5,372

1,2493

0,559

0,13

0,0001

2

15

3,8987

0,5819

0,737

0,11

0,0001

3

16

0,6768

0,144

0,47

0,1

0,0001

1

17

2,2976

0,4335

0,795

0,15

0,0001

2

18

5,372

1,2493

0,559

0,13

0,0001

3

19

3,8987

0,5819

0,737

0,11

0,0001

1

20

0,6768

0,144

0,47

0,1

0,0001

2

21

2,2976

0,4335

0,795

0,15

0,0001

3

22

5,372

1,2493

0,559

0,13

0,0001

1

23

3,8987

0,5819

0,737

0,11

0,0001

2

24

0,6768

0,144

0,47

0,1

0,0001

3

25

2,2976

0,4335

0,795

0,15

0,0001

1

Лабораторное занятие № 6. Численное решение систем линейных и нелинейных уравнений средствами MATLAB

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

1. Решение систем линейных алгебраических уравнений (СЛАУ) в MATLAB.

Обычная СЛАУ имеет вид

a11 x1 + a12 x2 + a1n xn = b1;

a21 x1 + a22 x2 + a2n xn = b2;

 

 

 

a

x + a

n2

x + a

nn

x

= b .

n1

1

2

n

n

Здесь a1,, a2,, …, an, – коэффициенты, образующие матрицу A, которые могут иметь действительные или комплексные значения, x1, x2, …, xn – неизвестные, образующие вектор X, и b1, b2, …, bn – свободные члены (действительные или комплексные), образующие вектор B.

Эта система может быть представлена в матричном виде как A X=B, где A – матрица коэффициентов уравнений, X – искомый вектор неизвестных и B – вектор свободных членов. В зависимости от вида матрицы A и ее характерных особенностей Matlab позволяет реализовать различные методы решения СЛАУ.

Для реализации различных алгоритмов решения СЛУ и связанных с ними матричных операций применяются следующие матричные операторы: +, , *, /, \, ^, .

Следует иметь ввиду, что у каждого алгоритма, который используется для решения СЛАУ в Matlab, своя скорость нахождения этого решения, наличие или отсутствие условия выполнения алгоритма и т. д.

Различные методы решения СЛАУ рассмотрим на примере системы линейных уравнений, где в качестве неизвестных выступают a, b и c:

157

4 a + b c = 6

a b + c = 4

2 a 3 b 3 c = 4

Метод обратной матрицы в MATLAB.

Метод обратной матрицы является достаточно распространенным методом. Его суть состоит в том, что сначала необходимо выписать коэффициенты при a, b и c (то есть те коэффициенты, которые находятся слева) в одну матрицу, а свободный член (то есть то, что справа)

вдругую.

Витоге получается две матрицы:

1) матрица коэффициентов при неизвестных

A=[4 1 -1; 1 -1 1; 2 -3 -3];

2) матрица (вектор-столбец) свободных членов

B=[6; 4; 4].

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

>> A=[4 1 -1; 1 -1 1; 2 -3 -3] det(A)

A =

4

1

-1

1

-1

1

2

-3

-3

ans = 30

После проверки условия переходим к следующему шагу: нахождению обратной матрицы с помощью оператора inv().

Само решение СЛАУ в MATLAB находится как перемножение найденной обратной матрицы на матрицу свободных членов:

x=inv(A)*B

Программная реализация имеет вид:

>> A=[4 1 -1; 1 -1 1; 2 -3 -3] B=[6; 4; 4]

x=inv(A)*B A =

4

1

-1

1

-1

1

2

-3

-3

B =

6

4

4

Результат:

158

x =

2.0000 -1.0000 1.0000

Таким образом, получены три значения x, которые и соответствуют нашим коэффици-

ентам: то есть a = 2, b = 1, c = 1. Можно проверить, подставив полученные результаты в исходную систему, и убедиться в правильности решения.

Важно соблюдать порядок следования матриц при их перемножении.

.

Метод Гаусса.

Метод Гаусса в MATLAB реализуется также просто: для этого достаточно использовать оператор левое деление: \.

При следующей записи получается решение СЛАУ:

x = A\B

>> A=[4 1 -1; 1 -1 1; 2 -3 -3]; B=[6; 4; 4];

x=A\B

Результат: x =

2 -1 1

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

Метод разложения матрицы коэффициентов.

Нахождение решения через разложение матрицы коэффициентов при неизвестных очень эффективно. Эффективность обусловлена скоростью нахождения решения для данного вида систем и точностью полученных результатов.

Возможны следующие разложения:

разложение Холецкого

LU-разложение

QR-разложение

Рассмотрим решение через LU и QR-разложения, как чаще используемые в задачах. Основное отличие этих двух разложений: LU-разложение применимо только для квад-

ратных матриц, QR – возможно и для прямоугольных.

3.1 LU-разложение.

LU-разложение – представление матрицы A в виде произведения двух матриц, A = L U , где L – нижняя треугольная матрица, а U – верхняя треугольная матрица.

Решение вышеприведенной задачи через LU-разложение:

[L, U] = lu(A);

>> A=[4 1 -1; 1 -1 1; 2 -3 -3]; B=[6; 4; 4];

[L, U] = lu(A) y = L\B

x = U\y L =

159

1.0000

0

0

0.2500

0.3571

1.0000

0.5000

1.0000

0

U =

 

 

4.0000

1.0000

-1.0000

0

-3.5000

-2.5000

0

0

2.1429

y =

6.0000

1.0000

2.1429

Результат: x =

2 -1

3.2. QR-разложение.

QR-разложение – это метод, используемый для преобразования матрицы в форму

A = Q R, где R равно верхней треугольной матрице, Q равно ортогональной матрице. QR-разложение в Matlab реализуется функцией qr():

[Q, R] = qr(A);

Тогда, используя QR-разложение решение получаем за два шага:

>> A=[4 1 -1; 1 -1 1; 2 -3 -3]; B=[6; 4; 4];

[Q, R] = qr(A) x = R\(Q'*B) Q =

-0.8729

0.4833

0.0671

-0.2182

-0.2636

-0.9396

-0.4364

-0.8348

0.3356

R =

 

 

-4.5826

0.6547

1.9640

0

3.2514

1.7575

0

0

-2.0135

Решение:

 

 

x =

 

 

2 -1 1

Отметим, что апостроф ( ' ) после Q означает транспонирование.

Стандартная функция Matlab LINSOLVE().

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

x = linsolve(A,B)

>> A=[4 1 -1; 1 -1 1; 2 -3 -3]; B=[6; 4; 4];

x = linsolve(A,B)

Решение: x =

2

160

-1 1

2. Решение систем нелинейных уравнений (СНУ) в Matlab.

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

F1 (x)= F1 (x1, x2 , , xn )= 0;F2 (x)= F2 (x1, x2 , , xn )= 0;

Fn (x)= Fn (x1, x2 , , xn )= 0.

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

всистеме. Необходимо найти набор неизвестных переменных, которые при подстановке в уравнения будут приближать значение уравнения к 0. Иногда таких наборов может быть несколько, даже бесконечно много, а иногда решений не существует.

Чтобы решить СНУ, необходимо воспользоваться итерационными методами. Это методы, которые за определенное количество шагов получают решение с определенной точностью. Также очень важно при решении задать достаточно близкое начальное приближение, то есть такой набор переменных, которые близки к решению. Если решается система из 2 уравнений, то приближение удобно найти с помощью построение графика двух функций.

Решение СНУ с помощью встроенной функции MATLAB FSOLVE().

В среде MATLAB для решения СНУ используется встроенный оператор fsolve(), который имеет следующий синтаксис:

x = fsolve(fun, x0) решает уравнения fun(x) = 0, x0 – вектор начальных приближений корней.

x = fsolve(fun, x0, options) решает уравнения, используя параметры вычислений из век-

тора options. Опции устанавливаются функцией optimset: options=optimset('Display',

'iter', 'final', 'tolX', 10^(-6)…..);

[x, fval] = fsolve(___), для любого синтаксиса, возвращает значение функции fun при полученных решениях x.

[x, fval, exitflag, output] = fsolve(___) дополнительно возвращает значение exitflag, ко-

торое описывает условие сходимости решения (если он равен 1, то сходимость достиг-

нута), и структура output с информацией о процессе решения.

Процесс решения нелинейной системы рассмотрим на примере нахождения корней следующей СНУ:

2 x1 x2 = ex1 ;x1 + 2 x2 = ex1 .

В качестве начального приближения принимаем x0 = [-5 -5].

Пример 6. 1.

Переписываем уравнения в форме F(x) = 0:

2 x1 x2 ex1 = 0;x1 + 2 x2 ex1 = 0.

161

>> fsolvedem1

F=

function_handle with value: @(x)[2*x(1)-x(2)-exp(-x(1));-x(1)+2*x(2)-exp(-x(2))]

 

 

 

 

Norm of

First-order

Trust-region

Iteration

Func-count

f(x)

step

optimality

radius

0

3

 

47071.2

 

2.29e+04

1

1

6

 

12003.4

1

5.75e+03

1

2

9

 

3147.02

1

1.47e+03

1

3

12

 

854.452

1

388

1

4

15

 

239.527

1

107

1

5

18

 

67.0412

1

30.8

1

6

21

 

16.7042

1

9.05

1

7

24

 

2.42788

1

2.26

1

8

27

 

0.032658

0.759511

0.206

2.5

9

30

7.03149e-06

0.111927

0.00294

2.5

10

33

3.29525e-13

0.00169132

6.36e-07

2.5

Equation solved.

fsolve completed because the vector of function values is near zero as measured by the value of the function tolerance, and

the problem appears regular as measured by the gradient. <stopping criteria details>

x =

0.5671

0.5671 fval =

1.0e-06 * -0.4059 -0.4059

exfl = 1

out =

struct with fields: iterations: 10 funcCount: 33

algorithm: 'trust-region-dogleg' firstorderopt: 6.3612e-07

message: 'Equation solved. fsolve completed because the vector of function values is near zero as measured by the value of the function tolerance, and the problem appears regular

as measured by the gradient.<stopping criteria details> Equation solved. The sum of squared function values,

r = 3.295252e-13, is less than sqrt(options.FunctionTolerance) = 1.000000e-03. The relative norm of the gradient of r, 6.361186e-07, is less than options.OptimalityTolerance = 1.000000e-06.'

Пример 6.2.

Решить систему нелинейных уравнений с точность 10-2:

162

cos(x 1) + y = 0,5;

x cos(y)= 3.

Для решения необходимо найти начальные приближения корней x0 и y0. Для этого воспользуемся графическим методом и построим график этих функций с помощью команды ezplot в MATLAB, предварительно преобразовав уравнения к стандартному виду:

cos(x 1)+ y 0,5 = 0;

x cos(y)3 = 0.

По графику находим начальное приближение корней. Принимаем его как (3.0, 1.0). Для использования функции fsolve() создадим функцию fsolvefun.m:

Добавим к коду программы построения графика fsolvedem2 вызов функции fsolve() и для визуального анализа нанесем полученное решение на график в виде маркера.

163

xr =

 

3.3559

1.2069

fr =

 

1.0e-09 *

 

0.5420

0.6829

ex =

 

1

 

Метод простых итераций для решения СНАУ.

Метод простых итераций для решения СНУ имеет аналогичный алгоритм, как и для одного уравнения, только значения, полученные на предыдущем шаге, подставляются во все уравнения системы:

1)для отделения корней, если возможно, строим график;

2)из каждого уравнения выражаем поочередно неизвестную переменную, например, из первого уравнения x, из второго – y, из третьего – z и т. д.;

3)задаемся начальным приближением x0, y0, z0 и т. д.;

4)вычисляем значения x1, y1, z1, путем подстановки в уравнения, полученные на шаге 2, значений из приближений x0, y0, z0 и т. д..

5)проверяем условие сходимости, (xi+1xi), (yi+1yi), (zi+1zi) должно быть меньше заданной погрешности;

6)если пункт 5 не выполнился, то повторяем пункт 4.

Пример 6.3.

Решить систему нелинейных уравнений с точность 10-2 примера 6.2.

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

виду:

x = cos(y)+ 3;

y = 0,5 cos(x 1).

Программа для решения указанной системы уравнений имеет вид:

164

>> prostiter k =

10

x =

3.3587

y =

1.2088

Как видно, результаты несколько отличаются от полученных в примере 2 с применением функции fsolve(). Это связано с различной оценкой погрешности в рассматриваемых вариантах. Увеличив точность расчета в методе простых итераций, получим тот же результат.

Задание

1. Преобразовать нелинейные уравнения системы к виду f1(x) = y и f2(y) = x. Построить их графики и определить начальное приближение решения.

2. Составить программу и решить систему нелинейных уравнений:

1)с помощью функции fsolve;

2)методом простых итераций.

165

3. Составить программу и решить систему линейных уравнений рассмотренными выше способами.

a11 x1 + a12 x2 + a13 x3 = b1;a21 x1 + a22 x2 + a23 x3 = b2;a31 x1 + a32 x2 + a33 x3 = b3.

Значения aij и bi приведены в таблице.

Таблица 1 – Коэффициенты при неизвестных и свободные члены СЛАУ

a11

a12

a13

a21

a22

a23

a31

a32

a33

b1

b2

b3

1

1

1

1

2

3

–1

2

–1

3

3

4

4

2

2

2

–3

1

–1

4

3

–1

6

7

–4

–4

3

1

–1

2

1

2

–1

2

1

–4

–2

4

7

4

1

3

–1

2

1

–3

3

–1

–1

5

6

3

5

2

1

–3

1

–1

–4

1

–2

1

–2

–2

4

6

4

–4

4

–2

3

–1

2

–1

3

4

0

4

7

4

2

–1

1

–4

1

2

–1

3

–5

2

–4

8

3

3

–1

1

–3

4

3

–1

4

–1

0

0

9

4

8

1

8

–4

–1

8

–8

4

–3

11

20

10

4

8

6

8

16

12

8

6

0

1

2

3

11

1

1

1

2

3

–1

2

–1

3

6

8

8

12

2

2

–3

1

–1

4

3

–1

6

14

–8

–8

13

2

1

–4

1

2

–1

1

–1

2

14

8

–4

14

1

3

–1

2

1

–3

3

–1

–1

10

12

6

15

2

1

–3

1

–1

–4

1

–2

1

–4

–4

8

16

4

–4

4

–2

3

–1

2

–1

3

8

0

8

17

4

2

–1

2

–1

3

1

–4

1

–10

–8

4

18

3

3

–1

1

–3

4

3

–1

4

–2

0

0

19

4

8

1

8

–4

–1

8

–8

4

–6

22

40

20

8

16

12

4

8

6

8

6

0

4

2

3

21

2

–1

3

1

1

1

2

3

–1

12

9

12

22

1

–1

4

2

2

–3

3

–1

6

–12

21

–12

23

2

1

–4

1

2

–1

1

–1

2

21

12

–6

24

3

–1

–1

2

1

–3

1

3

–1

9

18

15

25

1

–1

–4

2

1

–3

1

–2

1

–6

–6

12

26

2

–1

3

4

–4

4

–2

3

–1

12

12

0

27

1

–4

1

4

2

–1

2

–1

3

6

15

–12

28

3

–1

4

1

–3

4

3

3

–1

0

0

–3

29

8

–8

4

8

–4

–1

4

8

1

60

33

–9

30

2

–2

2

4

–4

4

0

4

8

7

14

3

166

Лабораторное занятие № 7. Численное решение обыкновенных дифференциальных уравнений и систем средствами MATLAB

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

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

Встроенные функции Matlab для решения ОДУ.

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

ode45(@f, interval, X0, options, p1, p2); ode23(@f, interval, X0, options, p1, p2); ode113(@f, interval, X0, options, p1, p2); odel5s(@f, interval, X0, options, p1, p2); ode23s(@f, interval, X0, options, p1, p2); ode23t(@f, interval, X0, options, p1, p2); ode23tb(@f, interval, X0, options, p1, p2).

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

f – вектор-функция для вычисления правой части уравнения системы уравнений interval – массив из двух чисел, определяющий интервал интегрирования дифференци-

ального уравнения или системы; Х0 – вектор начальных условий системы дифференциальных систем;

options – параметры управления ходом решения дифференциального уравнения или системы;

p1, р2,.. – произвольные параметры, передаваемые в функцию f. Все функции возвращают:

массив Т – координаты узлов сетки, в которых ищется решение;

матрицу X, i-й столбец которой является значением вектор-функции решения в узле

Тi.

Параметры интегрирования (options) могут быть определены и в m-файле, и в командной строке с помощью команды odeset. Если параметр определен в обоих местах, определение в командной строке имеет приоритет.

Решатели используют в списке параметров различные параметры:

NormControl – управление ошибкой в зависимости от нормы вектора решения [on | {off}]. Установите 'on', чтобы norm(e) <= max(RelTol*norm(y), AbsTol). По умолчанию все решатели используют более жесткое управление по каждой из составляющих вектора решения;

RelTol – относительный порог отбора [положительный скаляр]. По умолчанию 1е-3 (0.1% точность) во всех решателях; оценка ошибки на каждом шаге интеграции e(i) <= max(RelTol*abs(y(i)), AbsTol(i));

AbsTol – абсолютная точность [положительный скаляр или вектор {1е-6}]. Скаляр вводится для всех составляющих вектора решения, а вектор указывает

на

компоненты

вектора

решения.

AbsTol

по

умолчанию

1е-6 во всех решателях;

 

 

 

 

 

167

Refine – фактор уточнения вывода [положительное целое число] – умножает число точек вывода на этот множитель. По умолчанию всегда равен 1, кроме ode45, где он 4. Не при-

меняется, если tspan #####> 2;

OutputFcn – дескриптор функция вывода [function] – имеет значение в том случае, если решатель вызывается без явного указания функции вывода, OutputFcn по умолчанию вызывает функцию odeplot. Эту установку можно поменять именно здесь;

OutputSel – индексы отбора [вектор целых чисел]. Установите компоненты, которые поступают в OutputFcn. OutputSel по умолчанию выводит все компоненты;

Stats – устанавливает статистику вычислительных затрат [on {off}];

Jacobian – функция матрицы Якоби [function constant matrix]. Установите это свойство на дескриптор функции FJac (если FJac(t, у) возвращает dF/dy) или на имя постоянной матрицы dF/dy;

Jpattern – график разреженности матрицы Якоби [имя разреженной матрицы]. Матрица S с S(i, j) = 1, если составляющая i F(t, у) зависит от составляющей j величины у, и 0 в противоположном случае;

Vectorized – векторизованная ODE-функция [on | {off}]. Устанавливается на 'on', если ODE-функция F F(t,[yl y2…]) возвращает вектор [F(t, yl) F(t, y2)…];

Events – [function] – введите дескрипторы функций событий, содержащих собственно функцию в векторе value, и векторы isterminal и direction (см выше);

Mass – матрица массы [constant matrix function]. Для задач М*у' = f(t, у) установите имя постоянной матрицы. Для задач с переменной М введите дескриптор функции, описывающей матрицу массы;

MstateDependence – зависимость матрицы массы от у [none | {weak} | strong] – установите 'nоnе' для уравнений M(t)*y' = F(t, у). И слабая ('weak'), и сильная ('strong') зависимости означают M(t, у), но 'weak' приводит к неявным алгоритмам решения, использующим аппроксимации при решении алгебраических уравнений;

MassSingular – матрица массы М сингулярная [yes no | {maybe}] (да/нет/может быть);

MvPattern – разреженность (dMv/dy), график разреженности (см функцию spy) – введите имя разреженной матрицы S с S(i, j) = 1 для любого k, где (i, k) элемент матрицы массы M(t, у) зависит от проекции] переменной у, и 0 в противном случае;

Initial Step – предлагаемый начальный размер шага, по умолчанию каждый решатель определяет его автоматически по своему алгоритму;

Initial Slope – вектор начального уклона ур0 ур0 = F(t0,y0)/M(t0, y0);

MaxStep – максимальный шаг, по умолчанию во всех решателях равен одной десятой интервала tspan;

BDF (Backward Differentiation Formulas) [on | {off}] – указывает,нужноли использовать формулы обратного дифференцирования (методы Gear) вместо формул численного дифференцирования, используемых в ode15s по умолчанию;

MaxOrder – максимальный порядок ode15s [1 | 2 | 3 4 | {5}].

Определение параметров options осуществляется в следующем формате:

options=odeset('RelTol',1e-6,'InitialStep',1e-3,'MaxStep',1e-3);

Алгоритмы, используемые в решателях MATLAB.

Алгоритмы, предназначенные для решения нежестких систем.

1.ode45 основан на явной формуле Рунге-Кутта (4,5), Дорманда-Принца. Это одношаго-

вый решатель – при вычислении y(tn) ему нужно только решение в непосредственно предшествующий момент времени y(tn-1). В общем, ode45 – это лучшая функция для применения в качестве «первой попытки» для большинства проблем.

168

2.ode23 – это реализация явной формулы Рунге-Кутта (2,3), Богацкого и Шампина. Он может быть более эффективным, чем ode45, при грубых допусках и при наличии умеренной жесткости. Как и ode45, ode23 – одношаговый решатель.

3.ode113 – это решатель переменного порядка (использует методы Adams-Bashforth- Moulton, PECE). Он может быть более эффективным, чем ode45, при строгих допусках и когда функция файла ODE особенно весома для оценки. ode113 – это многоступенчатый (итерационный) решатель, ему нужны решения в нескольких предыдущих времен-

ных точках для вычисления текущего решения.

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

Алгоритмы, предназначенные для решения жестких систем.

1.ode15s – это решатель переменного порядка, основанныйна формулах численного дифференцирования (NDFs). При необходимости он использует формулы обратного дифференцирования (BDFs, также известные как метод Гира), которые обычно менее эффективны. Как и ode113, ode15s – многоступенчатый решатель. Целесообразно использовать ode15s, когда ode45 терпит неудачу или очень неэффективен, и есть подозрение, что система жесткая, а также при решении дифференциально-алгебраических уравне-

ний (DAE).

2.ode23s основан на модифицированной формуле Розенброка второго порядка. Так как это одношаговый решатель, он может быть более эффективным, чем ode15s при грубых допусках. Он может решить некоторые проблемные задачи, для которых ode15s не эффективен.

3.ode23t – это реализация трапециевидного правила трапеций, которое является численным методом для решения обыкновенных дифференциальных уравнений, полученных из трапециевидного правила для вычисления интегралов. Правило трапеции – это неявный метод второго порядка, который можно рассматривать как метод Рунге – Кутта, так и линейный многоступенчатый метод. Решатель целесообразно использовать, если задача только умеренно жесткая и нужно решение без численного затухания. ode23t может решить дифференциально-алгебраические уравнения (DAE).

4.ode23tb – это TR-BDF2 реализация неявной формулы Рунге-Кутты с первым этапом, представляющим собой шаг трапециевидного правила, и вторым этапом, представляющим собой обратную формулу дифференцирования второго порядка. По своей конструкции при оценке обоих этапов используется одна и та же итерационная матрица. Как и ode23s, этот решатель может быть более эффективным, чем ode15s при грубых допусках.

Примеры решения дифференциальных уравнений.

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

Необходимо реализовать метод Адамса порядка и решить задачу Коши для дифферен-

циального уравнения:

 

3

( )

 

 

 

= cos( + ) + 2

Начальное условие: y(0)=0. Интервал интегрирования [0 20]. В m-файле с именем pr7.m пишем:

function f=pr7(x,y) f=cos(x+y)+(3/2)*(x-y); end

Затем в командном окне вызываем функцию ode113:

169

ode113(@pr7,[0 20],0)

Результатом будет график:

Решение системы ОДУ.

Необходимо реализовать метод Рунге-Кутта 4 порядка и решить задачу Коши для пред-

ложенной системы дифференциальных уравнений:

 

 

1

= 2;

 

2

 

2 1

1

= 1

Начальные условия: y1(0)

= 0.1;

y2(0)

= 0.5. Интервал интегрирования

[0 10].

 

 

 

 

В m-файле с именем pr8.m пишем: function dy=pr8(x,y) dy=zeros(2,1);

dy(1)=y(2); dy(2)=((y(1)/x)-y(2))*(1/x)-y(1); end

Потом в командном окне вызываем функцию ode45:

[x,y]=ode45(@pr8,[1 10], [0.1 0.5]); plot(x,y,'-k')

grid;

Результатом будет график:

170

Решение ОДУ с заданием параметров решателя и передачей в функцию вычисления правых частей дополнительных параметров.

Зачастую необходимо передать в функцию вычисления правых частей дифференциальных уравнений дополнительные параметры, которые используются в вычислениях. Они перечисляются в обращении к функциям ode после параметра options.

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

Ниже приведен пример использования указанных параметров при решении системы уравнений:

dydx1 = y2; dydx2 = A CB y1 t

Результат решения:

Задание

1.Построить схемы решения рассмотренных задач в системе MATLAB, получить графики решения.

2.Оформить отчет, содержащий:

171

решаемую систему уравнений;

алгоритм решения;

программную реализацию в MATLAB;

графики полученных функций-решений.

172

Лабораторное занятие № 8. Моделирование характеристик электрических тяговых двигателей

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

Определение параметров схемы замещения асинхронного двигателя по каталожным данным.

Как правило, в каталогах [3] на асинхронные двигатели приводятся следующие технические данные:

Pн – номинальная мощность двигателя, кВт;

173

U– номинальное фазное напряжение, В;

nн – номинальная частота вращения, об/мин (или sн – номинальное скольжение, о. е.); ηн – коэффициент полезного действия в режиме номинальной мощности (100%-я

нагрузка), %;

cos ϕн – коэффициент мощности в режиме номинальной мощности, о. е.; Iп/I= ki – кратность пускового тока, о. е.;

Mп/Mн = kп – кратность пускового момента, о. е.; Mmax/Mн = kmax – кратность максимального момента, о. е.; Mmin/Mн = kmin – кратность минимального момента, о. е.

Эти данные позволяют определить параметры схемы замещения при следующих основных допущениях:

магнитные и механические потери в двигателе составляют 0,02 Pн ;

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

Последовательность расчета параметров схемы замещения следующая. Определяется ток холостого хода асинхронного двигателя [4]

 

 

I 2

p

 

I

1

s

/ 1

p

s

2

 

 

I0 =

11

 

*

 

 

 

(

 

н )

(

 

*

н )

,

 

1

p

 

 

1

s

/ 1p

s

2

 

 

 

 

 

 

*

 

(

 

н )

(

 

*

н )

 

 

 

где I– номинальный ток статора двигателя, А;

I11 – ток статора двигателя при частичной загрузке, А; sн = (n0 nн ) n0 – номинальное скольжение, о. е.;

n0 – синхронная частота вращения, об/мин;

p = P/Pн – коэффициент загрузки двигателя, о. е. (принимаем 0,75 [5]); Ток статора двигателя при частичной загрузке

 

I11 =

 

p* Pн

,

 

m1

Ucosφp* ηp*

 

 

 

где cosϕp – коэффициент мощности при частичной загрузке, о. е.;

ηp – КПД

при частичной загрузке, о. е.;

 

 

U– номинальное фазное напряжение, В;

 

P – мощность двигателя при частичной загрузке, кВт.

 

КПД при частичной загрузке 75% примерно одинаков с КПД при номинальной нагрузке (η0,75 ηн , а коэффициент мощности при той же нагрузке p = 0,75 для известных серий асин-

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

Рисунок 8.1 – Зависимость cosϕ0,75/cosϕн от мощности асинхронного двигателя

174

Из формулы Клосса можно получить выражение для определения критического сколь-

жения

 

 

 

kmax +

(kmax )

2

 

 

 

 

s

= s

 

 

12

sн β (kmax 1)

 

,

 

12 sн β (kmax 1)

 

к

н

 

 

 

 

 

 

 

 

 

 

β = R1 /(C1 R2' ),

C1 =1+(I0 / (2 ki I)).

Значение коэффициента β согласно источнику [6] находится в диапазоне 0,6–2,5 (принимаем близкое к среднему значение, а затем его можно уточнить в результате итерационных процедур по вышеприведенным формулам).

Если определить некоторый промежуточный коэффициент A1 [4]

A1 = m1 U12н (1sн )

2 C1 kmax Pн

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

'

 

A1

 

 

R2

=

 

 

, Ом.

(β+1/ s

) C

 

 

к

1

 

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

R1 =C1 R2' β, Ом.

Определим параметр γ, который позволяет найти индуктивное сопротивление короткого замыкания Xкн:

γ = (1/ sК2 )β2 .

Очевидно, что при отрицательном подкоренном выражении первоначально принятое значение β необходимо изменить.

Тогда индуктивное сопротивление короткого замыкания

Xкн = γ C1 R2' , Ом.

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

X '

=0,58 X

кн

/ C ,

Ом.

2σн

 

1

 

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

X1σн = 0, 42 Xкн , Ом.

175

ЭДС ветви намагничивания Emн, наведенная потоком воздушного зазора в обмотке статора в номинальном режиме, равна

Emн = (UcosφR1 I)2 +(U1cos2φX1σн I)2 .

Тогда индуктивное сопротивление контура намагничивания

Xmн = Emн / I0 , Ом.

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

Построение естественной характеристики.

Таким образом, зная параметры схемы замещения по зависимостям (1–6) строятся естественные характеристики (рис. 8.2).

Характерными точками являются s = 0; s = sн, s = sк, s = 1, в которых электромагнитный момент принимает соответствующие каталожным данным значения (используются для проверки адекватности математической модели).

Рисунок 8.2 – Примерный вид естественных характеристик

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

1. Составить программу в MATLAB для расчета естественной механической характеристики асинхронного электродвигателя.

2. Задавшись шагом изменения скольжения просчитать математическую модель двигателя с характеристиками согласно варианту задания (таблица 3.1). При этом обеспечить расчет электромагнитного момента в характерных точках s = 0; s = sн, s = sк, s = 1.

3. Аналогично п. 2 рассчитать электромагнитный момент для значений угловой скорости, соответствующих диапазону изменения скольжения от 0 до 1 (используя для перехода от

s к ω выражение (3.2).

4. По полученным результатам построить естественные механические характеристики

асинхронного двигателя M=f(s) и М=f(ω).

5. Оформить отчет, содержащий математическую модель, распечатку программы, графики характеристик двигателя.

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