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



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

· Определить вектор, содержащий начальные значения для каждой неизвестной функции.

· Определить функцию D, являющуюся вектором из n элементов, которые содержат первые производные каждой из неизвестных функций.

· Определить точки, в которых нужно найти приближенное решение.

· Записать функцию Rkfixed.

Пример:

Решить систему диф. уравнений:

X0¢(t)=.2X0(t) – X1(t) – (X0(t)2+X1(t)2)X0(t)

X`1(t)=.2X1(t) + X0(t) –(X0(t) + X1(t)X1(t)

На интервале (0,1) с начальными условиями:

X0(0)=0

X1(1)=1.


Решение:

Приближенное решение содержится в первом столбце матрицы Z.

Строим график решения – функцию Y(X) - 0-й столбец матрицы откладывается по оси X, по оси Y- 1-й столбец.

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

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

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

Т.е. каждое уравнение, входящее в искомую систему, вида:

X(n)=f(X(n-1),X(n-2),…,X,…)

представляется совокупностью уравнений первого порядка:

Y1=X¢

1=X¢¢=Y2

2=X¢¢¢=Y3

--------------

n-1=X(n)=f(Y0,Y1,…,Yn-1)

посредством замены:

Y0=X

Y1=X¢

Y2=X¢¢

------------------

Yn-1=X(n-1).

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

· Записать вектор начальных условий.

· Записать функцию D в виде вектора, содержащего первые производные от исходных и вспомогательных функций.

·

·

·

· Каждое уравнение, входящее в систему даст элементы вектора:

Y1

Y2

Y3

-----------

f(Y0,Y1,…,Yn-1)

· Записать функцию Rkfixed.

Пример:

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

U¢¢(x)=2V(x)

V¢¢(x)=4V(x)-2V(x)

С начальными условиями:

U(X)=1.5

U¢ (X)=1.5

V(X)=1

V¢ (X)=1 на интервале (0,1).

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

Y0=U

Y1= U¢, тогда Y¢1=U¢¢

Y2=V

Y3= V¢, тогда Y¢3=V¢¢

Используя эти обозначения, преобразуем исходную систему в систему первого порядка:

1=2Y2

3=4Y2- 2Y0

Решение:

Записываем вектор начальных условий:


Записываем функцию D:


 


Записываем функцию rkfixed:

 

получаем решение в виде матрицы Z, строим график решения:

 

Вычислительный блок Given/Odesolve для решения ОДУ.

Существует еще один более предпочтительный способ решения дифференциальных уравнений, реализующий численный метод Рунге-Кутта и состоящий из 3-х частей:

· Given – ключевое слово;

· ОДУ и начальное условие, записанное с помощью логических операторов в форме Y(X0)=b;

· Odesolve (X,X1, step) – встроенная функция для решения ОДУ относительно переменной Х на интервале (Х0, Х1), step (может опускаться) определяет количество шагов, в которых метод Рунге-Кутта будет рассчитывать решение ОДУ.

Логические операторы вставляются с помощью панели Boolean.

Символ производной вводится с помощью панели Calculus.

Mathcad требует, чтобы Х0 < Х1. решением будет являться функция Y(X), определенная на интервале (Х0, Х1)

Пример: Решить ОДУ первого порядка Y' =Y-Y2 на интервале(0,10) с начальными условиями Y(0)=0.1

Листинг документа в системе Mathcad:

 

 

График решения на интервале (0,10) строится обычными средствами

Mathcad:

 

 

Можно получить значение функции в любой точке указанного интервала,

знак равенства выбирается с панели

Calculus.

Например:

Y(3)=0.691

 

 

Пример: Решить ОДУ 2-го порядка Y''(t) + 0.1 Y'(t) + Y(t) = 0 на интервале (0, 50) с начальными условиями Y(0) = 0.1 Y'(0) = 0

Листинг документа в системе Mathcad:

 

 

График решения на интервале t=(0,50)

 

 

 

 

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

 

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

 

создавать ветвления (условные переходы) при помощи ключевых слов while

 

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

 

Новое ключевое слово on error позволяет производить обработку ошибок.


Дата добавления: 2016-01-05; просмотров: 17; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!