Как решать дифференциальные уравнения в маткаде
Перейти к содержимому

Как решать дифференциальные уравнения в маткаде

  • автор:

Решение дифференциальных уравнений в MathCad 15

В свободном поле mathcad введите оператор Given. Этот оператор запускает процесс ввода исходных данных для корректной работы функции odesolve. После этого найдите панель под названием Calculus. В этой панели нам понадобятся кнопки Derivative и Nth Derivative. Эти кнопки вводят заготовки для дифференциального уравнения. С помощью клавиатуры введите уравнение, как показано на рисунке 1. Знак равенства необходимо использовать из панели Boolean

Рис. 1. Ввод исходных данных для решения дифференциального уравнения

Далее введите начальные приближения. Количество начальных приближений зависит от порядка дифференциального уравнения. В нашем случае их будет 2. Введите приближения, как показано на рисунке 2. Обратите внимание, что для ввода значания первой производной вам нужно использовать символ «верхний апостроф«. Если вы его не можете ввести с клавиатуры вручную воспользуйтесь приложением windows Capter Map или используйте комбинацию клавиш Alt + 96 или Alt + 39

Рис. 2. Ввод первого приближения для решения дифференциального уравнения

Теперь, после начального приближения введите любую переменную (например y) и присвойте ей функцию Odesolve, как показано на рисунке 3. В качестве параметров функции Odesolve используется переменная t и интервал интегрирования. В нашем случае интервал равен 15

Рис. 3. Ввод функции odesolve для решения дифференциального уравнения

Можно отобразить функцию y на графике, где в качестве аргумента будет переменная t. Этот график и будет являться решением дифференциального уравнения. Обратите внимание, что график строится в пределах интервала интегрирования. Особенности оформления и отображения графиков в mathcad 15 смотрите в соответствующем разделе

Рис. 4. Вывод результата решения дифференциального уравнения на график

После корректного решения дифференциального уравнения функцию y(t) можно использовать далее в расчетах

Рис. 5. Результат решения дифференциального уравнения в mathcad 15 и старше

Donec eget ex magna. Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque venenatis dolor imperdiet dolor mattis sagittis. Praesent rutrum sem diam, vitae egestas enim auctor sit amet. Pellentesque leo mauris, consectetur id ipsum sit amet, fergiat. Pellentesque in mi eu massa lacinia malesuada et a elit. Donec urna ex, lacinia in purus ac, pretium pulvinar mauris. Curabitur sapien risus, commodo eget turpis at, elementum convallis elit. Pellentesque enim turpis, hendrerit tristique.

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis dapibus rutrum facilisis. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Etiam tristique libero eu nibh porttitor fermentum. Nullam venenatis erat id vehicula viverra. Nunc ultrices eros ut ultricies condimentum. Mauris risus lacus, blandit sit amet venenatis non, bibendum vitae dolor. Nunc lorem mauris, fringilla in aliquam at, euismod in lectus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. In non lorem sit amet elit placerat maximus. Pellentesque aliquam maximus risus, vel venenatis mauris vehicula hendrerit.

Interdum et malesuada fames ac ante ipsum primis in faucibus. Pellentesque venenatis dolor imperdiet dolor mattis sagittis. Praesent rutrum sem diam, vitae egestas enim auctor sit amet. Pellentesque leo mauris, consectetur id ipsum sit amet, fersapien risus, commodo eget turpis at, elementum convallis elit. Pellentesque enim turpis, hendrerit tristique lorem ipsum dolor.

Форма обратной связи

Поделиться

Статистика

  • © student-engineer.pro :: Semen Kuptcov

Как решать дифференциальные уравнения в маткаде

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

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

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

1. ДУ с разделяющимися переменными. Общая постановка задачи: y’=f(x,y)=g(x)*h(y) , y(x0)=y0 . То есть, f(x,y) допускает представление в виде произведения функций от x и от y .

Для решения уравнения достаточно задать его правую часть как пользовательскую функцию MathCAD, определить интервал поиска решения [x0,x1] , начальное условие y0 и применить стандартную функцию Odesolve . Покажем этот процесс на примере уравнения y’=2x-y+x 2 , x∈[0,2] , y(0)=0 с известным решением y(x)=x 2 :

Решение дифференциальных уравнений с разделяющимися переменными

Решение дифференциальных уравнений с разделяющимися переменными

Знак «равно» в записи уравнений, конечно же, жирный (панель Boolean или сочетание клавиш Ctrl+=).

Функция Odesolve вернула именно функцию y , её нужно смотреть от аргумента, например, y(1)= .

И ещё 2 особенности:

Фича MathCAD — у ряда функций решения ДУ есть «версии», которые пишутся и с Большой, и с маленькой буквы. Функции, имена которых начинаются с маленькой буквы, используются в тех случаях, когда важным является решение задачи в конечной точке интервала.

Фича MathCAD — в блоке Given-Odesolve штрих ` является не просто знаком, а оператором взятия производной. И это не штрих ‘ с клавиши русской «Э». это обратный штрих ` с клавиши «Ё», слева от «1».

Зная точное решение, графически сравним с ним найденное решение. Как видно на графике, MathCAD справился с задачей отлично.

Графики полученного и точного решения совпадают

Графики полученного и точного решения совпадают

2. Неоднородное ДУ первого порядка. В общем виде такое уравнение можно записать как y’=a(x)*y+b(x) . Оно решается аналитически по формуле, которую можно найти в любой книге по решению обыкновенных ДУ:

Формула для решения неоднородного ДУ первого порядка

Формула для решения неоднородного ДУ первого порядка

Здесь С – константа интегрирования. Остаётся применить формулу к конкретному уравнению (возьмём для примера задачу y’+2xy=x*e -x 2 sin(x) , y(0)=1 ) и оценить её символьно:

Аналитическое решение неоднородного ДУ первого порядка в MathCAD

Аналитическое решение неоднородного ДУ первого порядка в MathCAD

Здесь мы получаем решение в общем виде. Нижний оператор оценён символьно (см. панель «Символика»), а аргумент t используется, так как x в документе «уже занят» (для корректной работы символьной оценки переменные не должны быть определены заранее).

После подстановки начального условия получим частное решение y(t,Y0) , а для проверки решения будет достаточно подставить полученную функцию в исходное уравнение и упростить его символьной функцией simplify . Полученный результат в нашем случае совпал с заданной в условии правой частью. Также для y(x,Y0) , как и для любой функции, можно построить график на нужном интервале изменения x.

Проверка решения неоднородного ДУ первого порядка и построение графика

Проверка решения неоднородного ДУ первого порядка и построение графика

3. Неоднородное ДУ второго порядка. В общем виде имеем уравнение y» + p(x)*y’ + g(x)*y = f(x) плюс набор краевых условий, количество которых соответствует порядку задачи, например y(0)=. y'(0)=. или y(0)=. y(1)=.

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

Решение неоднородного ДУ второго порядка в MathCAD

Решение неоднородного ДУ второго порядка в MathCAD

Здесь при вызове Odesolve второй параметр, равный единице — это правая граница интервала, третий параметр, равный 10, задаёт количество интервалов. Точное решение u(t) взяли по ссылке. Как видим, даже на 10 интервалах всё очень хорошо совпадает.

4. Система ДУ. Подход к решению системы ДУ покажем на примере. Пусть задана система дифференциальных уравнений

x’ = a*x — y — (x 2 + y 2 )*x,
y’ = a*y + x — (x 2 + y 2 )*y,
x(0)=0, y(0)=1, a=-0.2

Чтобы решить эту систему стандартной функцией rkfixed , нужно задать для неё вектор начальных значений x = (x0, y0) и вектор правых частей D(t,x) .

После этого задача решится вызовом rkfixed , второй и третий параметры ( 0, 20 ) задают интервал по времени t , на котором ищется решение, четвёртый параметр 100 означает количество точек на интервале.

Функция вернёт матрицу решений системы, в которой количество строк соответствует количеству точек на интервале, а количество столбцов — количеству уравнений в системе.

Для построения графика достаточно отобразить зависимость столбцов Zi,1 , Zi,2 от Zi,0 , i=0..99 :

Решение системы ДУ в MathCAD функцией rkfixed

Решение системы ДУ в MathCAD функцией rkfixed

10.11.2015, 17:16 [50724 просмотра]

28. Тема 7. Решение дифференциальных уравнений и систем в MathCad. Краткие теоретические сведения

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

Rkfixed – функция для решения ОДУ и систем ОДУ методом Рунге–Кутта четвертого порядка с постоянным шагом;

Rkadapt – функция решения ОДУ и систем ОДУ методом Рунге–Кутта с переменным шагом;

Odesolve – функция, решающая ОДУ блочным методом.

Ниже приведено описание стандартной функции Rkfixed с указанием параметров функции.

Rkfixed(y, x1, x2, p, D)

Y – вектор начальных условий из K элементов (k – количество уравнений в системе);

X1 и X2 – левая и правая границы интервала, на котором ищется решение ОДУ или системы ОДУ;

P – число точек внутри интервала (x1, x2), в которых ищется решение;

D – вектор, состоящий из K-Элементов, который содержит первую производную искомой функции или первые производные искомых функций, если речь идет о решении системы.

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

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

При решении дифференциального уравнения первого порядка нужно создать вектор начальных условий из одного элемента Y1, который затем используется при формировании вектора-функции правой части дифференциального уравнения. При обращении к функции Rkfixed Указывается имя вектора Y, границы интервала, на котором ищется решение уравнения, например, (0 ; 2), количество точек, в которых ищется решение – 100, вектор-функция, описывающая правую часть дифференциального уравнения – D. В результате получается матрица Z, в первом столбце которой содержатся значения аргумента искомой функции, во втором – значения самой результирующей функции. При построении графика функции первый столбец полученной матрицы указывается как аргумент, второй столбец – как функция.

При решении системы дифференциальных уравнений нужно создать вектор начальных условий из двух элементов, например, вектор V, который затем используется при формировании вектора-функции правой части дифференциального уравнения. При обращении к функции Rkfixed Указывается имя вектора V, и границы интервала, на котором ищется решение уравнения, например, (0 ; 5), количество точек, в которых ищется решение – 100, вектор-функция, описывающая правую часть дифференциального уравнения – D. В результате получается матрица S, в первом столбце которой содержатся значения аргумента искомых функций, во втором и третьем столбцах – значения самих функций при соответствующем значении аргумента. При построении графика можно воспользоваться первым столбцом полученной матрицы как аргументом, а вторым и третьим столбцами – как функциями.

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

Рисунок 2.7.2 – Пример решения дифференциальных уравнений второго порядка с помощью Rkfixed

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

Документ формируется точно так же, как и при решении системы ОДУ.

На рисунке 2.7.2 показана возможность вычисления вектора второй производной найденной функции – вектора А, построены графики исходной функции, функций первой и второй производных.

  • Главная
  • Заказать работу
  • Стоимость решения
  • Варианты оплаты
  • Ответы на вопросы (FAQ)
  • Отзывы о нас
  • Примеры решения задач
  • Методички по математике
  • Помощь по всем предметам
  • Заработок для студентов

9. РЕШЕНИЕ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙ В СРЕДЕ MATHCAD

Дифференциальные уравнения – это уравнения, в которых неизвестными являются не переменные (т.е. числа), а функции одной или нескольких переменных. Эти уравнения (или системы) включают соотношения между искомыми функциями и их производными. Если в уравнения входят производные только по одной переменной, то они называются обыкновенными дифференциальными. В противном случае говорят об уравнениях в частных производных. Таким образом, решить (иногда говорят проинтегрировать) дифференциальное уравнение – значит, определить неизвестную функцию на определенном интервале изменения ее переменных.

Обыкновенные дифференциальные уравнения (ОДУ) с неизвестной функцией y(t), в которое входят производные этой функции вплоть до y ( N) (t), называется ОДУ N-го порядка. В частности, уравнение первого порядка может по определению содержать помимо самой искомой функции y(t) только ее первую производную у'(t), второго порядка – у'(t) и у»(t) и т.д. В подавляющем большинстве случаев дифференциальное уравнение можно записать в стандартной форме (форме Коши): у'(t) = f(y(t), t). Уравнение второго порядка может содержать, помимо самой функции, ее первую и вторую производные и т.д.

Имеются два типа задач, которые возможно решать с помощью MathCAD:

— задачи Коши – для которых заданы значения функций в начальной точке интервала интегрирования уравнения;

— краевые задачи для которых заданы определенные соотношения сразу на обоих границах интервала.

MathCAD умеет решать только такие системы дифференциальных уравнений, которые могут быть представлены в стандартной форме (форме Коши). Для неизвестных функций y0(t) ,y1(t),…..yN-1(t) система ОДУ должна быть записана в форме:

что эквивалентно следующему векторному представлению:

где Y и Y’ – соответствующие неизвестные векторные функции переменой t размера Nx1, F – векторная функция того же размера и количества переменных (N+1) (N компонент вектора и, возможно, t). Именно векторное представление (2) используется для ввода системы ОДУ в среде MathCAD.

Для того чтобы определить задачу Коши для системы из N ОДУ первого порядка, следует определить еще ровно N начальных условий, задающих значение каждой из функций yi(t0) в начальной точке интегрирования системы t0. В векторной форме они могут быть записаны в виде:

где В – вектор начальных условий размера Nx1, составленный из yi(t0).

Стандартные процедуры MathCAD применимы для систем ОДУ первого порядка, записанных в форме (2)–(3).

Дифференциальное уравнение N-го порядка

Для решения ОДУ порядка N≥1 в MathCAD предусмотрены две возможности:

— вычислительный блок Given/Odesolve – решение имеет вид функции от t;

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

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

Вычислительный блок для решения ОДУ, реализующий численный метод Рунге–Кутта, состоит из трех частей:

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

ОДУ и начальные условия в формате y(t0) = b, записанные с помощью логических операторов, которые должны набираться на панели инструментов Boolean (Булевы операторы);

Odesolve(t, t1) – встроенная функция для решения ОДУ относительно переменной t на интервале (t0, t1), причем t0

На запись ОДУ в пределах вычислительного блока накладывается несколько

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

у(t0) = b или у ( N) (t0) = b.

Рис. 9.1. Пример решения задачи Коши

Предпочтительнее задание функции Odesolve(t, t1, step) с тремя параметрами, где step – внутренний параметр численного метода, определяющий количество шагов, в которых метод Рунге–Кутта будет рассчитывать решение дифференциального уравнения. Чем больше step, тем с лучшей точностью будет получен результат, но тем больше времени будет затрачено на его поиск. Помните, что подбором этого параметра можно заметно ускорить расчеты без существенного ухудшения их точности.

Пример решения задачи Коши для ОДУ второго порядка – системы генератора с затуханием (с параметром квадратичной нелинейности γ), приведен на рис. 9,1.

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

Результатом применения блока Given/Odesolve является функция y(t), определенная на промежутке (t0, t1). Следует воспользоваться обычными средствами MathCAD, чтобы построить ее график или получить значение функции в какой-либо точке указанного интервала.

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

Система N дифференциальных уравнений

При помощи MathCAD можно решать системы N>1 ОДУ первого порядка, если они записаны в стандартной форме (Коши) в виде векторного соотношении Y'(t)=F,(Y(t), t).

В MathCAD имеется несколько встроенных функций, которые позволяют решать задачу Коши различными численными методами. Для «хороших» нежестких систем ОДУ применяются следующие функции:

rkfixed(y0, t0, t1, M, D) – метод Рунге–Кутта с фиксированным шагом;

Rkadapt(y0, t0, t1, M, D) – метод Рунге–Кутта с переменным шагом;

Bulstoer(y0, t0, t1, M, D) –метод Булирша–Штера:

у0 – вектор начальных значений в точке to размера Nx1;

t0 – начальная точка расчета;

t1 – конечная точка расчета;

М – число шагов, на которых численный метод находит решение;

D – векторная функция размера Nx1 двух аргументов – скалярного t и векторного у. При этом у – искомая векторная функция аргумента t того же размера Nx1.

Необходимо соблюдать регистр первой буквы рассматриваемых функций, поскольку это влияет на выбор алгоритма счета, в отличие от многих других встроенных функций MathCAD, например, Find ≡ find.

Каждая из приведенных функций выдает решение в виде матрицы размера (М+1)x(N+1). В ее левом столбце находятся значения аргумента t, делящие интервал на равномерные шаги, а в остальных N столбцах – значения искомых функций y0(t), y1(t), …, yN-1(t), рассчитанные для этих значений аргумента. Поскольку всего точек

(помимо начальной) М, то строк в матрице решения будет всего М+1.

На рис. 56 приведен пример решения системы ОДУ генератора с затуханием при помощи функции rkfixed, результат расчетов представлен как содержимое матрицы и в виде графика. Точки, в которых получено решение, отмечены на графике кружками. Чтобы использовать другой численным алгоритм, достаточно поменять имя функции rkfixed в последней строке программы на другое (на практике более эффективны функции Rkadapt и Bulstoer).

Первая строка листинга представляет задание параметров модели, вторая – начального условия задачи Коши, а в третьей строке листинга определено число шагов, на которых рассчитывается решение. Самая важная – это предпоследняя строка листинга, в которой, собственно, определяется система ОДУ. Последняя строка присваивает матричной переменной и результат действия функции rkfixed. Решение системы ОДУ будет осуществлено на промежутке (0,40).

Функция D, входящая в число параметров встроенных функций для решения ОДУ, должна быть функцией обязательно двух аргументов. Второй ее аргумент должен быть вектором того же размера, что и сама функция D. Точно такой же размер должен быть и у вектора начальных значений у0. Векторную функцию D(t,y) следует определять через компоненты вектора у с помощью кнопки Subscript (Нижний индекс) с наборной панели Calculator (Калькулятор) или нажатием клавиши <[>.

Рис. 9.2. Пример решения

Размер полученной матрицы, представляющей решение, равен (M+1)x(N+1), т.е. 51х3. Просмотреть все компоненты матрицы u, которые не помещаются на экране, можно с помощью вертикальной полосы прокрутки.

Рис. 9.3. Уравнение

Решение одного уравнения (N=1)

Вычислительный блок Given/Odesolve выигрывает в простоте и в наглядности, однако иногда предпочтительнее решать ОДУ первого порядка с помощью встроенных функций rkfixed, Rkadapt или Bulstoer, например, при следующих обстоятельствах:

— одно ОДУ решается в контексте решения более сложных задач, в которые входят системы дифференциальных уравнений – в этом случае может потребоваться единый стиль программирования;

— ответ предпочтительнее получить в виде вектора, а не функции и т.п.

При решении одного ОДУ и само уравнение, и начальное условие можно задавать в скалярной форме (рис. 57). Результат выдается в виде матрицы размерности Мх2, которая состоит из двух столбцов: в одном находятся значения аргумента t (от t0 до t1 включительно), в другом – соответствующие значения искомой функции у(t).

Решение систем ОДУ в заданной точке

При решении дифференциальных уравнений требуется определить значения искомых функций не на всем интервале (t0, t1), а только в одной его последней точке. Известно, что для широкого класса ОДУ одна и та же система при разных начальных условиях при t → ∞ приходит в одну и ту же точку. Поэтому часто нужно определить именно эту точку.

Такая задача требует меньше ресурсов компьютера, чем решение системы ОДУ на всем интервале, поэтому в MathCAD имеются модификации встроенных функций Rkadapt и Bulstoer. Они имеют несколько другой набор параметров и работают значительно быстрее своих аналогов:

rkadapt(у0, t0, t1, асс, D, k, s) – метод Рунге–Кутта с переменным шагом;

bulstoer(у0, t0, t1, асс, D, k, s) – метод Булирша–Штера:

у0 – вектор начальных значений в точке to;

t0, t1 – начальная и конечная точки расчета;

асc – погрешность вычисления (чем она меньше, тем с лучшей точностью будет найдено решение; рекомендуется выбирать значения погрешности в районе 0.001);

d – векторная функция, задающая систему ОДУ;

k – максимальное число шагов, на которых численный метод будет находить решение;

s – минимально допустимая величина шага.

Вместо числа шагов на интервале интегрирования ОДУ в этих функциях необходимо задать точность расчета численным методом значения функций в последней точке. В этом смысле параметр асс похож на константу TOL, которая влияет на большинство встроенных численных алгоритмов MathCAD. Количество шагов и их расположение определяются численным методом автоматически, чтобы обеспечить эту точность. Два последних параметра нужны для того, чтобы пользователь мог искусственно повлиять на разбиение интервала на шаги. Параметр k служит для того, чтобы шагов не было чрезмерно много, причем нельзя сделать k >1000. Параметр s – для того, чтобы ни одни шаг не был слишком малым для появления больших погрешностей при разностной аппроксимации дифференциальных уравнений внутри алгоритма. Эти параметры следует задавать явно, исходя из свойств конкретной системы ОДУ. Как правило, проведя ряд тестовых расчетов, можно подобрать их оптимальный набор для каждого конкретного случая.

Рис. 9.4. Тестовый расчет

Пример использования функции bulstoer для той же модели линейного генератора приведен на рис. 58. В его первых двух строках, как обычно, определяется система уравнений и начальные условия; в следующей строке матрице и присваивается решение, полученное с помощью bulstoer. Структура этой матрицы в точности такая же, как и в случае решения системы ОДУ посредством уже рассмотренных нами ранее встроенных функций, однако в данном случае нам интересна только последняя точка интервала. Поскольку сделанное численным методом количество шагов, размер матрицы u, заранее неизвестно, то его необходимо предварительно определить. Это сделано в четвертой строке листинга, присваивающей это число

переменной М, в этой же строке оно выведено на экран.

В предпоследней программе осуществлен вывод решения системы ОДУ на конце интервала, т. е. в точке t=50 в виде вектора. В последней строке для примера еще раз выводится искомое значение первой функции из системы ОДУ (сравните его с соответствующим местом вектора из предыдущей строки). Чтобы попробовать альтернативный численный метод, достаточно заменить имя функции bulstoer на rkadapt.

Функции bulstoer и rkadapt (те, что пишутся со строчной буквы) не предназначены для нахождения решения в промежуточных точках интервала, хотя они и выдают их в матрице-результате.

О численных методах

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

Функция Rkadapt может быть полезна в случае, когда известно, что решение на рассматриваемом интервале меняется слабо либо существуют участки медленных и быстрых его изменений. Метод Рунге–Кутта с переменным шагом разбивает интервал не на равномерные шаги, а более оптимальным способом. Там, где решение меняется слабо, шаги выбираются более редкими, а в областях его сильных изменений – частыми. В результате для достижения одинаковой точности требуется меньшее число шагов, чем для rkfixed. Метод Булирша–Штера (Bulstoer) часто оказывается более эффективным для поиска гладких решений.

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

для решения единственного уравнения (любого порядка) используйте

— вычислительный блок Given/Odesolve;

— для стандартных нежестких систем используйте алгоритм Булирша– Штера (Bulstoer);

— для систем с участками быстро и медленно меняющихся решений используйте адаптивный алгоритм Рунге–Кутта (Rkadapt);

— в учебных целях и для решения несложных задач можно использовать алгоритм Рунге–Кутта с фиксированным шагом (Rkfixed);

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

Тем не менее, в MathCAD можно реализовать любой численный метод. Обычно решение заключается в нахождении ряда значений хi и уi искомой зависимости у(х) при i, изменяющемся от 0 до N при шаге изменения х, равном h. Рассмотрим три наиболее распространенных способа решения дифференциального уравнения, при которых h = const. Значения х0 и у0 должны быть известны как начальные условия, без них невозможно единственное решение.

Аналитическое решение обыкновенного дифференциального уравнения имеет вид: у(х)=А·ехр(х 2 /2). Погрешность метода определяется выражением: h n+1 , где n – порядок метода. Простой метод Эйлера имеет первый порядок, при этом погрешность метода составляет h 2 . Будучи самым простым из известных, этот метод имеет и наибольшую погрешность. При малых h и достаточно гладких решениях этот метод вполне приемлем для решения многих практических задач.

Простой метод Эйлера реализуется применением на каждом шаге вычислений следующих итерационных выражений:

Для уменьшения погрешности решения следует применять методы более высокого порядка. Модифицированный метод Эйлера является методом второго порядка, и его погрешность пропорциональна h 3 .

Данный метод реализуется следующими итерационными выражениями на каждом шаге вычислений:

При высоких требованиях к точности решения можно воспользоваться методом Рунге-Кутта четвертого порядка. При нем погрешность пропорциональна h 5 . Этот метод реализуется с помощью следующих используемых на каждом шаге вычислений выражений:

Решение дифференциального уравнения второго порядка рассмотрим методом Рунге-Кутта четвертого порядка. Итерационные уравнения имеют вид:

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

Модифицированный метод Эйлера имеет следующие уравнения:

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

Категории

  • Безопасность жизнедеятельности в техносфере (14)
  • Бухгалтерский учет, анализ и аудит (5)
  • Гуманитарные науки (56)
  • Естественные науки (20)
  • Информатика и вычислительная техника (27)
  • Медицина (3)
  • Менеджмент организации (20)
  • Науки о человеке и обществе (2)
  • Общетехнические дисциплины (18)
  • Прикладная информатика в экономике (3)
  • Программное обеспечение вычислительной техники и автоматизированных систем (2)
  • Прочее (14)
  • Социальная работа (26)
  • Технология машиностроения (9)
  • Финансы и кредит (25)
  • Электротехника и промышленная электроника (3)
  • Юриспруденция (28)

Свежие записи

  • 8.13 Правоприменительная деятельность и средства массовой информации
  • 8.12. Психологическая характеристика деятельности инспектора ГИБДД
  • 8.11. Психологическая характеристика деятельности участкового инспектора
  • 8.10. Психологическая характеристика деятельности инспектора ОБЭП
  • 8.9. Психологическая характеристика деятельности инспектора таможни

Материал представлен на сайте исключительно в ознакомительных целях.
Все права принадлежат авторам этих материалов.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *