Matlab решение дифференциальных уравнений 2 порядка

Решение ОДУ в Matlab

Доброго времени суток! Сегодня мы поговорим о решении ОДУ (обыкновенных дифференциальных уравнений) в Matlab. Перед тем как мы начнём обсуждать данную тему, советую вам ознакомиться с темой: Численное дифференцирование в Matlab, чтобы лучше понимать теоретическую составляющую решения ОДУ.

Обыкновенные дифференциальные уравнения

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

  • Задача Коши
  • Краевая задача
  • Задача на собственные значения

Кратко расскажу о их сути:

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

Методы решения дифференциальных уравнений

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

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

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

Метод Рунге-Кутта первого порядка

Методы Рунге-Кутта представляют собой разложения в ряд Тейлора и от количества использованных элементов ряда зависит порядок этого метода. Следовательно, помимо Рунге-Кутта первого порядка, вы сможете увидеть методы других порядков. Иногда их называют другими именами.

Например, Метод Рунге-Кутта первого порядка, также известен как Метод Эйлера или Метод ломаных. Информацию о его математическом и графическом представлении советую поискать в гугл. Мы же поговорим о том, как Метод Рунге-Кутта первого порядка реализуется в Matlab для решения ОДУ. Например:

Решить и привести график ошибки уравнения y’ = y*x методом Рунге-Кутта первого порядка (Методом Эйлера, Методом ломаных).

Погрешность Метода Рунге-Кутта 1 порядка

» data-medium-file=»https://i2.wp.com/codetown.ru/wp-content/uploads/2017/02/Рунге-1-погрешность.png?fit=300%2C236&ssl=1″ data-large-file=»https://i2.wp.com/codetown.ru/wp-content/uploads/2017/02/Рунге-1-погрешность.png?fit=622%2C489&ssl=1″ loading=»lazy» src=»https://i2.wp.com/codetown.ru/wp-content/uploads/2017/02/%D0%A0%D1%83%D0%BD%D0%B3%D0%B5-1-%D0%BF%D0%BE%D0%B3%D1%80%D0%B5%D1%88%D0%BD%D0%BE%D1%81%D1%82%D1%8C.png?resize=622%2C489″ alt=»Погрешность метода 1 порядка» width=»622″ height=»489″ srcset=»https://i2.wp.com/codetown.ru/wp-content/uploads/2017/02/Рунге-1-погрешность.png?w=629&ssl=1 629w, https://i2.wp.com/codetown.ru/wp-content/uploads/2017/02/Рунге-1-погрешность.png?resize=300%2C236&ssl=1 300w» sizes=»(max-width: 622px) 100vw, 622px» data-recalc-dims=»1″ />
На данном графике показана зависимость величины ошибки от шага.

Метод Рунге-Кутта второго порядка

Также известен как Метод Эйлера-Коши. Как видите, во второй части уравнения происходит обращения к следующему шагу. Но как тогда быть, если нам ещё не известен следующий шаг? Всё просто. Метод Рунге-Кутта второго порядка — это всё тот же метод первого порядка, однако, на половине шага происходит нахождение «первичного» решения, а затем происходит его уточнение. Это позволяет поднять порядок скорости сходимости до двух.

Решить и привести график ошибки уравнения u’ = u*x методом Рунге-Кутта второго порядка.


По сравнению с Рунге-Куттом первого порядка изначальная ошибка уже гораздо меньше.

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

Метод Рунге-Кутта четвёртого порядка

Метод Рунге-Кутта четвёртого порядка считается самым распространённым. Тем не менее, работает он аналогично второму и третьему порядку.

Решить и привести график ошибки уравнения u’ = u*x методом Рунге-Кутта четвёртого порядка.


Как видите, на последней картинке размерность ошибки на столько мала, что пришлось воспользоваться loglog() для лучшей видимости.

Решение ОДУ в Matlab стандартными средствами

Стоит отметить, что мы с вами разобрали только один самый известный метод решения ОДУ с разными порядками. Однако, методов очень много.

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

ode45 (f, interval, X0, [options])
ode23 (f, interval, X0, [options])
ode113 (f, interval, X0, [options])
ode15s (f, interval, X0, [options])
ode23s (f, interval, X0, [options])
ode23t (f, interval, X0, [options])
ode23tb (f, interval, X0, [options])

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

  • f — вектор-функция для вычисления правой части уравнения системы уравнений;
  • interval — массив из двух чисел, определяющий интервал интегрирования дифференциального уравнения или системы;
  • Х0 — вектор начальных условий системы дифференциальных уравнений;
  • options — параметры управления ходом решения дифференциального уравнения или системы.

Все функции возвращают:

  • массив Т — координаты узлов сетки, в которых ищется решение;
  • матрицу X, i-й столбец которой является значением вектор-функции решения в узле Тi.

В функции ode45 реализован метод Рунге-Кутта 4-5 порядка точности, в функции ode23 также реализован метод Рунге-Кутта, но 2-3 порядка, а функция ode113 реализует метод Адамса.

Для решения жёстких систем предназначены функция ode15s, в которой реализован метод Гира, и функция ode23s, реализующая метод Розенброка. Для получения более точного решения жёсткой системы лучше использовать функцию ode15s. Для решения системы с небольшим числом жёсткости можно использовать функцию ode23t, а для грубой оценки подобных систем служит функция ode23tb.

Символьное решение обыкновенных дифференциальных уравнений произвольного порядка осуществляет функция dsolve r = dsolve(‘eq1,eq2,…’, ‘cond1,cond2,…‘, ‘v’)
Пример использования:

На этом мы закончим. Если остались вопросы, задавайте их в комментариях. Также вы можете скачать исходники чтобы лучше понять тему: «Решение ОДУ в Matlab».

Matlab решение дифференциальных уравнений 2 порядка

3 -е занятие по MATLAB

ЛАБОРАТОРНАЯ РАБОТА №3

Трехмерная графика в MATLAB .

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

1. Элементарная трехмерная (3- D ) графика — функция plot 3.

Функция plot 3 в определенном смысле является аналогом функции plot . С помощью plot 3 формируется построение линии в трехмерном пространстве по заданным трем векторам .

Пример 1.1. Построение трехмерной пространственной спирали.

t =0:0.05:9* pi ; x =2* sin ( t ); y = cos ( t ); % t , x , y — вектора одинакового размера

xlabel( ‘о сь X’ ),ylabel( ‘ось Y’ ),zlabel( ‘ось Z-t’ )

title(‘ Пространственная спираль ‘)

% Сохранить программу в текстовом редакторе MATLAB, например, под именем sp3

% Поменять местами x, y, t в функции plot3

% Сменить начертание и цвет графика

% Добавить пояснение к начертанию в виде легенды — legend( ‘ звездочки ‘ )

%Установить следующий диапазон для t: t=-9*pi:0.05:9*pi;

% Пояснения к графику с помощью функций gtext для 3D-графики не применяются

Пример 1.2. Построение сферы по окружностям.

n=input(‘n=’); % Клавиатурный ввод числа n по запросу в командном окне

t2=(pi/2)*(-n:5:n)’/n ; % транспонированный вектор

E=ones(size(t1)); % матрица единиц размерности вектора t1

% Сохранить программу в текстовом редакторе MATLAB под именем sfera3 .

% Программу выполнить при различных значениях n .

% При n =100 изменить шаг в массивах t1 и t2 : для t1 и t2 одновременно: 3, 1, 10, 25, 50

% Для t1=50, для t2=1; для t1=1, для t2=50.

% Программу sfera3 выполнить без клавиатурного ввода, а для заданного числа n .

% Установить в программе различные цвета изображения сферы.

% Использовать различные коэффициенты для t1 и t2: pi/5, pi/10, pi/50, 2*pi, 5*pi одновременно

% и в сочетании с коэффициентом, равным pi (3.14), при одном из векторов ( t1 или t2).

2. Формирование прямоугольной сетки на плоскости — meshgrid .

% Результатом действия функции meshgrid является формирование «основания» в плоскости XOY для построения над этим основанием пространственной фигуры.

3. Построение пространственных сетчатых фигур — mesh.

Z = 1*x.* exp(-x.^2 — y.^2); % Коэффициент 1 заменить: 2, 5, 10, 20

% Для сравнения применить plot3(x,y,Z),grid вместо mesh(Z) .

R=sqrt(x.^2+y.^2)+0.001; %Коэфф. 0.001 введен для исключения деления на ноль

% Коэффициент 1 заменить: 5, 10, 20, 0.5, 0.1

% Для сравнения применить plot3(x,y,Z),grid

4. Сетчатая поверхность с проекциями линий постоянного уровня — meshс.

% Коэффициент 1 заменить: 5, 10, 20, 0.5, 0.1

% Коэффициент 1 заменить: 5, 10, 20, 0.5, 0.1

5. Сетчатая поверхность с пьедесталом плоскости отсчета на нулевом уровне— meshz.

% Коэффициент 1 заменить: 5, 10, 20, 0.5, 0.1

% Коэффициент 1 заменить: 5, 10, 20, 0.5, 0.1

6. Построение пространственных сплошных фигур — surf.

% Коэффициент 1 заменить: 5, 10, 20, 0.5, 0.1

% Коэффициент 1 заменить: 5, 10, 20, 0.5, 0.1

1. С плошная поверхность с проекциями линий постоянного уровня — surfс.

% Коэффициент 1 заменить: 5, 10, 20, 0.5, 0.1

% Коэффициент 1 заменить: 5, 10, 20, 0.5, 0.1

8. Стандартные сферические поверхности — sphere .

8 .1. Сфера единичного радиуса — sphere ;

» sphere % равносильно sphere(20);

8.2 Формирование сферы с произвольным радиусом, например, равным 5;

% Выполнить построения с надписями

9. Пространственное распределение вероятностей Гаусса — peaks.

peaks; % По умолчанию формируются матрицы размера 49 ´ 49, по которым строится

%поверхность с пометками координат и титульной надписью ‘Peaks’.

peaks, title(‘Gauss’); % Со специальной титульной надписью

peaks(78); % Размерность матриц построения 78 ´ 78

peaks(25); % Размерность матриц построения 25 ´ 25

z=peaks; surf(z); % Построение поверхности Гаусса по заданной 49 ´ 49 матрице z.

% Сравнить с поверхностью на основе функции mesh(z)

% Сравнить с функцией mesh(z)

z=3*peaks(78); surf(z), title(‘Gauss’) % С множителем по оси Z .

% Применить множители: 4, 10, 33, 50

Пример 9.3. Цветовые массивные уровни на плоскости от распределения Гаусса.

[X,Y,Z]=peaks; pcolor(7*X,12*Y,20*Z),title(‘Цвет’) % С расширенной %областью определения на плоскости XOY — множители 7 и 12 и с изменением по Z — коэф-

Пример 9.4. Распределение Гаусса с задаваемой областью определения на плоскости XOY.

% Функция pcolor позволяет наблюдать обл а сть определения в плоскости XOY

% Изменить шаг по x и y : 0.2, 0.1, 0.5

% Изменить границы по x и y одновременно и порознь :(-7:0.2:3),(-7:0.2:1),(-7:0.2:-1),(-7:0.2:-3)

Пример 9.5. Линии уровня трехмерной поверхности — contour.

% Линии уровня без учета масштаба плоскости XOY:

contour(peaks),grid,title(‘ Линии уровня ‘) % 10 линий уровня по умолчанию

contour(peaks,4),grid,title(‘ Линии уровня ‘) % 4 линии уровня

contour(peaks,10),grid,title(‘ Линии уровня ‘) % 10 лини q уровня

contour(peaks,15),grid,title(‘ Линии уровня ‘) % 15 лини q уровня

contour(peaks,25),grid,title(‘ Линии уровня ‘) % 25 лини q уровня

% Применить функцию contour для стандартной сферической поверхности sphere с различным числом линий уровня.

Пример 9.6. Линии уровня с учетом масштаба плоскости XOY (два примера):

Пример 9.7. Линии уровня с учетом масштаба плоскости XOY и заданным числом (три примера):

Пример 9.7. Линии уровня с цветовой окраской плоскости XOY — contourF.

contourF(peaks),title(‘Цвет линий уровня’)

Пример 9.8. «Пространственные» линии уровня — contour3.

contour3(peaks,25),title(’25 л иний уровня в пространстве ‘)

Пример 9.9. Обзор поверхности из заданной точки пространства — view.

peaks,view(10,45); % Число 10 — азимут обзора, 45 — угол обзора (все в градусах)

[X,Y]=meshgrid(-7:0.3:7,-5:0.3:5);Z=peaks(X,Y);surf(Z), view( — 10,45)

% Задать различные параметры функции view и выполнить построение различных поверхностей.

10. Пострение поверхностей относительно полярной системы координат.

Z=peaks(x1,y1);surf(x1,y1,Z),title(‘ Полярная плоскость ‘)

% С изменением точки обзора

Z=peaks(x1,y1);surf(x1,y1,Z),title(‘ Полярная плоскость ‘),view(-12,45)

11. Построение цилиндрических поверхностей — cylinder.

cylinder % Построение цилиндра без параметров, по умолчанию

cylinder(40) % Построение цилиндра с заданным размером плоскости XOY

cylinder(40,60) % Цилиндр с заданным размером плоскости XOY и числом образующих %граней — 60

% Построение совокупности цилиндрообразующих поверхностей

[x,y,z]=cylinder([5 0],160); surf(x,y,z) % Конус по заданному вектору [5,0]

[x,y,z]=cylinder([5 0 5],160); surf(x,y,z) % 2 к онуса

[x,y,z]=cylinder([5 0],3); surf(x,y,z) % Пирамида

[x,y,z]=cylinder([5 0 5],3); surf(x,y,z) % 2 пиирамиды

[x,y,z]=cylinder([5 12 12],100); surf(x,y,z)

[x,y,z]=cylinder([5 12 5],100); surf(x,y,z)

[x,y,z]=cylinder([5 12 12 5],100); surf(x,y,z)

[x,y,z]=cylinder([5 12 5 12 5 12],100); surf(x,y,z)

[x,y,z]=cylinder([5 12 12 5 18],100); surf(x,y,z)

[x,y,z]=cylinder([5 12 12 5 5 18 18],100); surf(x,y,z)

% Построение совокупности цилиндрообразующих поверхностей с масштабированием

[x,y,z]=cylinder([5 12 12 5 5 18 18],100); surf(x,y,20*z)

plot(x,20*z),grid % Масштаб плоскости XOZ

plot(7*x,y),grid % Масштаб плоскости XOY

plot(7*x,13*y),grid % Масштаб плоскости XOY

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

Для решения обыкновенных дифференциальных уравнений (ODE) могут быть применены численные методы, которые в MATLAB реализованы в специальных функциях-решателях: ode45, ode23, ode113 .

Общий порядок программирования:

1) Создается М-функция с описанием правых частей дифференциальных уравнений;

2) Создается М-сценарий с выбранным решателем;

Пример 1. Решить следующую систему обыкновенных дифференциальных уравнений с заданными начальными условиями:

% Программа решения примера 1

% Создаем М-функцию под именем dif31.m

% Создаем М-сценарий под именем ddd45_31.m

% Сценарий решения с помощью ode45

T=[0 15]; % Интервал интегрирования

x0=[10;5]; % Начальные условия

[t,x]=ode45(‘dif31’,T,x0); %t, x — выходные переменные решателя ode45

plot(t,x),grid,title(‘ Пример 3.1 ‘),legend(‘X1′,’X2’)

% Изменить начальные условия:

% Изменить интервал интегрирования: от 0 до 20, от 0 до 7.

% Вывести графические результаты с различным начертанием координат

% Прменить решатели ode23, ode113 . Сравнить результаты покоординатно, для чего вывести результаты решения и свести их в таблицу, например, в WORD .

Пример 2. Решить следующую систему линейных дифференциальных уравнений с заданными начальными условиями:

% Создаем М-функцию с именем dif32.m

function f=dif32(t,x); % t, x — входные переменные для М-функции

%Создаем М-сценарий под именем ddd45_32

% Сценарий решения примера 2

x0=[0;0;0]; % x0 — вектор начальных условий

% Изменить интервал интегрирования

% Изменить начальные условия

% Вывести графические результаты с различным начертанием координат

% Использовать решатели ode23, ode113 .

Пример 3. Уравнение Ван-дер-Поля.

Для решения дифференциального уравнения 2-го порядка сначала приведем его к системе дифференциальных уравнений 1-го порядка:

где

% Создаем М-функцию под именем van33.m

%Создаем М-сценарий под именем ddd45_33

plot(t,X),grid,title(‘ Ур-е Ван-дер-Поля ‘ ), legend(‘X1′,’X2’)

% Изменить интервал интегрирования

% Изменить начальные условия ( только все нулевые не должны быть)

% Изменить множитель в уравнении (вместо 2)

% Вывести графические результаты с различным начертанием координат

% Использовать решатели ode23, ode113 .

Пример 4. Интегрирование дифференциальных уравнений с выводом результатов в заданн ом диапазоне точек независимого переменного. Видоизменим пример 2 в сценарии задания интервала интегрирования.

% Сценарий решения примера 4

T=[0:1:6,7:2:18]; % от 0 до 6 шаг 1, от 7 до 18 шаг 2

Пример 5. Интегрирование дифференциальных уравнений с выводом результатов в заданных точках независимого переменного. Видоизменим пример 2 в сценарии задания интервала интегрирования.

% Сценарий решения примера 5

T=[0 0.5 1 1.5 3 4 8]; 7 точек переменного t

Задание к примерам 1-5: произвести графический вывод координат каждой в отдельности

Пример 6. Интегрирование систем линейных дифференциальных уравнений в матричном виде, т.е.

(6.1)

где — вектор переменных состояния размера n ´ 1, — вектор входного воздействия размера rx1, — матрицы чисел размера n ´ n, n ´ r, соответственно .

% Матрицы и берем из примера 2

% Создаем М-функцию под именем syst36.m

A=[-3,0,0;1,-2,0;0,4,-1]; % Матрица А размера 3 ´ 3

B=[10 0 0;0 0 0;0 0 0]; % Матрица B размера 3 ´ 3

u=[1;1;1]; % Входное воздействие размера 3 ´ 1

ds36=A*x+B*u; % Описание правой части матричного дифференциального уравнения (6.1)

% Создаем М-сценарий под именем ddd45_36

% Сценарий решения примера 3.6

plot(t,x),grid,title(‘ Система ур-й 3-го порядка ‘),

Задание к примеру 6:

% Решить систему с двумя воздействиями, с одним воздействием

% Вывести графические результаты с различным начертанием координат

% Вывести графические результаты с по отдельным координатам

% Создать программу решения системы дифференциальных уравнений 4-го порядка

% Использовать решатели ode23, ode113 .

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

с заданной точностью и с параметрами.

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

1. Установление заданной относительной погрешности RelTol — ODESET( odeset) .

С помощью установления относительной погрешности RelTol контролируется количество «правильных» цифр в решении дифференциального уравнения в соответствии с общей записью , где показатель степени P есть число контролируемых цифр в решении.

Пример1. Уравнение Ван-дер-Поля с заданной относительной погрешностью.

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

% Сформируем М-функцию для описания правых частей дифференциальных уравнений

% Сохрани ть под именем van33

% Создадим М-сценарий решения на основе ode23 и с относительной погрешностью, равной

% d1= 0.1 и d2=0.0001

% М-сценарий сохранить под именем ret71.

% Формат записи функции odeset включает строковый служебный символ RelTol и задаваемую %величину относительной погрешности (0.1 для d1 и 0.2 для d2).

% d1 и d2 подставляются в соответствующие решатели ( ode23).

Задание к примеру 1:

— выполнить с ode45, ode113;

— изменить коэффициент в М-функции van33 : 0.3, 2.3;

— изменить для d1 относительную погрешность: 1, 0.5, 0.1, 0.01, 0.001, 0.0001 (для ode23).

Пример 2. Анализ нелинейной тест-системы с задаваемой относительной погрешностью вычислений в решателях MATLAB.

где — постоянные действительные числа.

2.1. Проинтегрируем тест-систему с коэффициентами и с относительной погрешностью, равной 0.1, 0.01, 0.001, 0.4, 0.3, 0.2

% Создадим М-функцию под именем dif21

% Создадим М-сценарий под именем syst21

% Введем относительную погрешность 0.1

% В сценарии применим функцию odeset

% Проанализировать тест-систему по 2-й и 3-й координатам.

% Для графического вывода результатов по 2-й координате следует ввести plot в виде

%% Для графического вывода результатов по 3-й координате следует ввести plot в виде

% Проанализировать тест-систему с относительной погрешностью, равной 0.01, 0.4, 0.3, 0.2

% Проанализировать тест-систему с помощью решателей ode45, ode113 , сравнить результаты.

2. Задание абсолютной погрешности — AbsTol .

Абсолютная погрешность AbsTol контролирует разницу между ожидаемым решением и его действительным значением. AbsTol начинает проявляться, когда компонента (координата) решения становится неожидаемо большой. Влияние AbsTol зависит также от интервала и масштаба интегрирования. По умолчанию решатели дифференциальных уравнений Matlab устанавливают величину абсолютной погрешности, равную .

Пример3. Уравнение Ван-дер-Поля с заданной абсолютной погрешностью — ‘AbsTol’ .

% Используем имеющую М-функцию описания уравнения Ван-дер-Поля — van33

% Создадим М-сценарий ( присвоить имя) с задаваемой абсолютной погрешностью по всем координатам и по %одной из возможных

a1=odeset(‘AbsTol’,0.5); % Скаляр 0.1 по всем координатам

% Задание избирательной абсолютной погрешности осуществляется с помощью вектора в виде :

% По первой координате погрешность равна 0.5, по 2-й — 0.000001

% В целом сценарий (присвоить имя) должен иметь вид

% Поскольку система уравнений Ван-дер-Поля имеет взаимозависимые координаты, то интегрирование осуществляется практически с наименьшей погрешностью, т.е. с 0.000001

Задание к примеру 3.

— Применить скаляр абсолютной погрешности: 0.3, 0.1, 0.01.

— Вывести график по 2-й координате.

3. Интегрирование дифференциальных уравнений с параметрами.

Пример 4. Проинтегрировать однородную систему нелинейных дифференциальных уравнений с четырьмя параметрами k1, k2, k3, a:

при следующих начальных условиях:

Целью является анализ решений при различных параметрах, входящих в систему.

% Создадим М-функцию под именем dif44 с ключевым словом flag

switch flag % Начало процедуры описания правых частей дифуравнений

case » % Состояние flag с опциями по умолчанию

end % Окончание описания правых частей дифуравнений с опциями по умолчанию

% Создадим М-сценарий под именем syst44 для решателя ode23 c опциями по умолчанию

% и введения параметров

x0=[0;1;-1]; % Вектор начальных условий

tt=[0,25]; % Интервал интегрирования

k1=input(‘k1=’)%2.333; % Можно также k1=2.333;

k2=input(‘k2=’)%-0.7789; % Можно также k2=-0.7789;

k3=input(‘k3=’)%-0.7888; % Можно также k3=-0.7888;

a=input(‘a=’)%-0.1; % Можно также a=-0.1;

plot(t,x),grid,title(‘ Система с параметрами ‘), legend( ‘x1’ , ‘x2’ , ‘x3’ )

% В записи функции ode23 символ [ ] указывает на опции ( RelTol, AbsTol и др.), принятые по %умолчанию

Задание к примеру 4.

— Изменить параметр k1: 2, 1, 0.5, 0.2; ( остальные исходные) ;

— Изменить параметр k2: -0.111, -0.333,-0.555,0.7789 ( остальные исходные) ;

— Изменить параметр k3: -1.333, -0.333, -0.666, 0.7888 ( остальные исходные) ;

— Изменить параметр a: -1, 1, 0, 0.5 ( остальные исходные) ;

Произвести интегрирование системы при:

Пример 5. Интегрирование систем с циклическим изменением параметра.

% Используем М-функцию dif55

% Видоизменим М-сценарий syst66 так, чтобы программно изменялся какой-либо параметр (например, k3) и происходило наложение графиков решения по заданной координате (например, по ). Новый М-сценарий будет с именем syst77.

if i==-0.51 % Двойное равенство соответствует логической истине

plot(t,x(:,2),’r’),title(‘ Система с циклическим параметром ‘ )

k3=i; % Без точки с запятой (;) выводятся значения k3

Задание к примеру 5.

— Расширить диапазон изменения параметра k3;

— Написать программу с изменением параметра k2 ;

— Написать программу с графическим выводом всех координат системы при k3=0.51 и только координаты при остальных значениях параметра k3 .

Matlab решение дифференциальных уравнений 2 порядка

Дифференциальные уравнения и системы уравнений

Для решения дифференциальных уравнений и систем в MATLAB предусмотрены следующие функции ode45(f, interval, X0 [, options]), ode23(f, interval, X0 [, options]), ode113(f, interval, X0 [, options]), odel5s(f, interval, X0 [, options]), ode23s(f, interval, X0 [, options]), ode23t (f, interval, X0 [,options]) и ode23tb(f, interval, X0 [, options]).

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

  • f — вектор-функция для вычисления правой части уравнения системы уравнений
  • interval — массив из двух чисел, определяющий интервал интегрирования дифференциального уравнения или системы;
  • Х0 — вектор начальных условий системы дифференциальных систем
  • options — параметры управления ходом решения дифференциального уравнения или системы.

Все функции возвращают:

  • массив Т — координаты узлов сетки, в которых ищется решение;
  • матрицу X, i-й столбец которой является значением вектор-функции решения в узле Тi

В функции ode45 реализован метод Рунге-Кутта 4-5 порядка точности, в функции ode23 также реализован метод Рунге-Кутта, но 2-3 порядка, а функция ode113 реализует метод Адамса.

В М-файле с именем pr 7. m пишем:

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

ode113(@pr7,[0 20],0) %Метод Адамса: @ pr 7 – ссылка на М-функцию, [0 20]- интервалы интегрирования,0 — условие: y(0)=0

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

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

В М-файле с именем pr 8. m пишем:

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


источники:

http://apeshnik.narod.ru/matlab/part3.htm

http://solidstate.karelia.ru/p/tutorial/meth_calc/files/matlab4.shtml