Решение в пакете MathCAD

В пакете MathCAD кроме функции odesolve имеется функция


rkfixed решения обыкновенных


дифференциальных


уравнений и


систем дифференциальных уравнений методом Рунге-Кутта. Она имеет пять аргументов:

· Имя переменной с начальным условием;

· Левый конец промежутка интегрирования;

· Правый конец промежутка интегрирования;

· Число точек деления промежутка интегрирования;


· Имя функции, где описана уравнения.


правая часть дифференциального


На рис. 10 приведено решение задания 2 с использованием функ- ции rkfixed.

 

 

 

 

 

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


столбец –


значения аргумента х, второй –


значения функции при


этих значениях аргумента (рис. 11).

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


чин, расположенных


во втором


столбце,


от значений аргумента,


расположенных в первом столбце. Так как отсчет в MathCAD начи- нается с нуля, нужно по оси абсцисс отложить значения нулевого столбца, по оси ординат – первого. Выделение n- го столбца матрицы M в MathCAD производится оператором M<n>. Это достигается с по- мощью кнопки  панели «Матрицы» или одновременным нажа- тием клавиш M Ctrl ^ n. Решение можно показать графически, т.к. решение является матрицей, где в нулевом столбце – значения аргу- мента, в первом столбце – значения функции (рис. 12).

 

 

Рис. 11. Решение уравнения с использованием функции rkfixed

 

 

 

Рис. 12. Графическое представление решения

 

 

5. Решение Обыкновенных Дифференциальных Уравнений (ОДУ)

ОДУ первого порядка.

ОДУ первого порядка называется уравнение

F(x,y,y’)=0

F – известная функция трех переменных;

x – независимая переменная на интервале интегрирования[a,b];

y – неизвестная функция;

 

 


Вычислительный блок для решения одного ОДУ состоит из трех частей:

- ключевое слово given;

- ОДУ и начальные условия, записанные с помощью логического равенства;

- встроенная функция Odesolve(x, b) относительно независимой переменной x на интервале [a, b]; b – верхняя граница отрезка интегрирования. Допустимо и даже предпочтительнее задание функции Odesolve(a, b, step) с тремя параметрами, где step – внутренний параметр численного метода, определяющий количество шагов; чем больше step, тем с лучшей точностью будет получен результат, но тем больше времени будет затрачено на его поиск.

Функция Odesolve возвращает решение задачи в виде функции. Эта функция не имеет символьного представления и может только вернуть численное значение решения уравнения в любой точке интервала интегрирования.

Функция Odesolve использует для решения дифференциальных уравнений наиболее популярный алгоритм Рунге-Кутта четвертого порядка, описанный в большинстве книг по методам вычислений. Он обеспечивает малую погрешность для широкого класса систем ОДУ за исключением жестких систем. Если щелчком правой кнопки мыши на блоке формул с функцией Odesolve вызвать контекстное меню, то можно изменить метод вычисления решения, выбрав один из трех вариантов: Fixed – метод Рунге-Кутта с фиксированным шагом интегрирования (этот метод используется по умолчанию), Adaptive – также метод Рунге-Кутта, но с переменным шагом, изменяемым в зависимости от скорости изменения функции решения, Stiff – метод, адаптированный для решения жестких уравнений и систем (используется так называемый метод PADAUS).

Альтернативный метод решения ОДУ заключается в использовании одной из встроенных функций: rkfixed, Rkadapt, или Bulstoer. Все они решают задачу Коши для системы дифференциальных уравнений первого порядка, но каждая из них использует для этого свой метод. Для простых систем не играет большой роли, какой метод использовать – все равно получите решение достаточно быстро и с высокой точностью. Но для сложных или специфических систем бывает, что некоторые методы вообще не могут дать удовлетворительного решения за приемлемое время. Именно для таких сложных, но не редких случаев в MathCAD и введено несколько различных методов решения систем ДУ.

- rkfixedметод Рунге-Кутта с фиксированным шагом интегрирования. Самый простой и быстрый метод, но далеко не всегда самый точный. Полностью аналогичен использованию функции Odesolve с выбранным в контекстном меню методом Fixed.

- Rkadaptметод Рунге-Кутта с переменным шагом интегрирования. Величина шага адаптируется к скорости изменения функции решения. Данный метод позволяет эффективно находить решения уравнений, в случае если оно содержит как плавные, так и быстро меняющиеся участки. Там, где решение меняется слабо, шаги выбираются более редкими, а в областях его сильных изменений – частыми. В результате для достижения одинаковой точности требуется меньшее число шагов, чем для rkfixed. Полностью аналогичен использованию функции Odesolve с выбранным в контекстном меню методом Adaptive.

- Bulstoer – метод Булирша-Штера. Этот метод более эффективен, чем метод Рунге-Кутта, в случае если решение является плавной функцией.

Имена функций Rkadapt и Bulstoer начинаются с прописной буквы. В MathCAD для некоторых имен функций неважно, с какой буквы они записаны, но для перечисленных функций это принципиально, т.к. в MathCAD также существуют функции с такими же именами, только записанные с маленькой буквы – rkadap, bulstoer. Эти функции используются в тех случаях, когда важным является решение задачи в конечной точке интервала интегрирования.

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

Применение встроенных функций в документах MathCAD выглядит сходным образом, т.е. функции Rkadapt и Bulstoer имеют тот же синтаксис, что и выше приведенная функция rkfixed. Назначение аргументов в этих встроенных функциях следующее:

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

- а – начало отрезка, на котором ищется решение системы (отрезка интегрирования). Именно в этой точке значения неизвестных функций принимаются равными элементам вектора y.

- b – конец отрезка интегрирования.

- n – количество частей, на которые разбивается отрезок [a, b] при решении системы. Чем больше это число, тем точнее получается решение, но расчет занимает больше времени.

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

Возвращаемым значением всех вышеперечисленных встроенных функций является матрица. Первый столбец этой матрицы – это точки, на которые разбивается отрезок [a, b], а остальные столбцы – это значения функций системы в этих точках. Если в аргументе функции rkfixed было указано количество частей n = 100, то матрица будет содержать 101 строку вместе с начальной.





















Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: