Как решить систему дифференциальных уравнений в maple

Zoloto585CPA

Иллюстрированный самоучитель по Maple 6/7

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

Основная функция dsolve

Важное место в математических расчетах занимает решение дифференциальных уравнений. К нему, в частности, обычно относится анализ поведения различных систем во времени (анализ динамики), а также вычисление различных полей (тяготения, электрических зарядов и т. д.). Трудно переоценить роль дифференциальных уравнений в моделировании физических и технических объектов и систем, Maple 7 позволяет решать одиночные дифференциальные уравнения и системы дифференциальных уравнений как аналитически, так и в численном виде.

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

Здесь ODE – одно обыкновенное дифференциальное уравнение или система из дифференциальных уравнений первого порядка с указанием начальных условий, у(х) – функция одной переменной, Ics – выражение, задающее начальные условия, – множество дифференциальных уравнений, – множество неопределенных функций, extra_argument – опция, задающая тип решения. Параметр extra_argument задает класс решаемых уравнений.

Отметим основные значения этого параметра:

  • exact – аналитическое решение (принято по умолчанию);
  • explicit – решение в явном виде;
  • system – решение системы дифференциальных уравнений;
  • ICs – решение системы дифференциальных уравнений с заданными начальными условиями;
  • formal series – решение в форме степенного многочлена;
  • integral transform – решение на основе интегральных преобразований Лапласа, Фурье и др.;
  • series – решение в виде ряда с порядком, указываемым значением переменной Order;
  • numeric – решение в численном виде.

Для решения задачи Коши в параметры dsolve надо включать начальные условия, а при решении краевых задач – краевые условия. Если Maple способна найти решение при числе начальных или краевых условий меньшего порядка системы, то в решении будут появляться неопределенные константы вида _С1, _С2 и т. д. Они же могут быть при аналитическом решении системы, когда начальные условия не заданы. Если решение найдено в неявном виде, то в нем появится параметр _Т.

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

Допустимы следующие методы:

quadrature linear Bernoulli separable
inverse linear homogeneous Chini lin_sym
exact Abel pot_sym

Информацию о каждом методе можно получить, используя команду Tdsolve, method и указав в ней конкретный метод. Например, команда Tdsolve, linear вызовет появление страницы справочной системы с подробным описанием линейного метода решения дифференциальных уравнений.

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

Примеры решения алгебро-дифференциальных уравнений в СКМ Maple

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

Найдём решение, не задавая начальных условий:

> Du := diff (x(t),t) + 2*y(t) = 2, 5*x(t) + y(t) = 2*sin(3*t) :

> Rs := dsolve ( , Ds ) :

Таким образом, пакет выдал решение решение с одной постоянной интегрирования.

Теперь попробуем получить решение с начальными условиями:

> Du := diff (x(t),t) + 2*y(t) = 2, 5*x(t) + y(t) = 2*sin(3*t) :

> Nu := x(0) = 1 , y(0) = 1 :

> Rs := dsolve ( , Ds ) ;

Как видим, СКМ Maple выдала т.н. "нулевое" решение, т.е. аналитическое решение для системы алгебро-дифференциальной уравнений с начальными условиями в силу каких-то причин не найдено.

Следует иметь ввиду, что некоторые версии Maple не решают аналитически алгебро-дифференциальной уравнения и системы таких уравнений, а также системы ДУ, в которых присутствует кусочно-определённые функции.

Поэтому попытаемся найти численное решение данной системы.

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

Помимо этого, в опциях можно указывать метод решения. По «умолчанию» как правило пакет использует метод Рунге-Кутта порядка 4.5.

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

> restart:

> Du := diff (x(t),t) + 2*y(t) = 2, 5*x(t) + y(t) = 2*sin(3*t) :

> Nu := x(0) = 1 , y(0) = 1 :

> Rs := dsolve ( , Ds, type= numeric ) ;

Warning, Initial value of y(t) changed from 1.000000 to -5.000000

Ниже показано, как можно получить значения функций x(t) и y(t) в точке 0.5:

Теперь построим графики функций на интервале изменения аргумента от 0 до 0.1, для чего предварительно необходимо подключить пакет plots:

Warning, the name changecoords has been redefined

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

Ниже приведены эпюры напряжений (источника сигнала и на конденсаторе) и токов всех трёх ветвей, полученные для данной схемы в пакете MicroCAP:

Зададим модель в виде системы алгебро-дифференциальных уравнений (система уравнений получена по законам Кирхгофа)

и получим решение системы уравнений в СКМ Maple:

> Du := i1(t) + i2(t) + i3(t) =0, R1*i1(t) + R2*i2(t) + L*diff (i2(t) , t) = U(t), R1*i1(t) + Uc(t) =U(t), C*diff (Uc(t),t) = i3(t) :

> R1 := 100: R2 := 6: C := 0.0001: L := 0.02:

Входной сигнал U(t) зададим в виде прямоугольного импульса:

> U := (t) -> piecewise (t<0, 0, 0 <= t and t <= 0.02, 1, t > 0 , 0):

> plot ( U(t) , t = -0.01 .. 0.04) ;

Начальные условия зададим нулевые:

> Nu := i1(0) = 0, i2(0) = 0, i3(0) = 0, Uc(0) = 0:

> Rd := i1(t), i2(t), i3(t), Uc(t) :

> Rs := dsolve ( , , type = numeric) ;

Warning, Initial value of i1(t) changed from 0.000000 to 0.010000

Warning, Initial value of i3(t) changed from 0.000000 to -0.010000

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

Warning, the name changecoords has been redefined

Zoloto585CPA

Число точек при выводе графика не большое, поэтому графики получаются при подобном их построении "ломаными". Улучшить качество их воспроизведения можно, добавив число точек кривой в опции numpoints. Приведём пример её использования, повторив вывод графики изменения напряжения на конденсаторе.

> odeplot(Rs,[t,Uc(t)],0..0.04 , numpoints = 500);

Получим решение системы при входном синусоидальном сигнале и ненулевых начальных условиях:

> Du := i1(t) + i2(t) + i3(t) =0, R1*i1(t) + R2*i2(t) + L*diff (i2(t) , t) = U(t), R1*i1(t) + Uc(t) =U(t), C*diff (Uc(t),t) = i3(t) :

> R1 := 100: R2 := 6: C := 0.0001: L := 0.02:

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

> U := (t) -> 2 * sin ( 50*Pi*t + phi ) ;

> phi := 0.01 * Pi:

> plot ( U(t) , t = 0 .. 0.03 * Pi) ;

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

> Nu := i1(0) = 0, i2(0) = 0.01, i3(0) = 0, Uc(0) = 0:

> Rd := i1(t), i2(t), i3(t), Uc(t) :

> Rs := dsolve ( , , type = numeric) ;

Warning, Initial value of i1(t) changed from 0.000000 to 0.000628

Warning, Initial value of i3(t) changed from 0.000000 to -0.010628

> Rs(0.1); # Решение в точке t = 0.1

Построим графики изменения токов в ветвях цепи и напряжения на конденсаторе:

Warning, the name changecoords has been redefined

> odeplot(Rs,[t,i1(t)], 0..0.03*Pi , numpoints=500);

> odeplot(Rs,[t,i2(t)], 0..0.03*Pi , numpoints=500);

> odeplot(Rs,[t,i3(t)], 0..0.03*Pi , numpoints=500);

> odeplot(Rs,[t,Uc(t)], 0..0.03*Pi , numpoints=500);

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

Зададим модель для вышеприведённой схемы, исключив одно дифференциальное уравнение и сравним результаты решения:

> Ode := i1(t) + i2(t) + i3(t) =0, R1*i1(t) + R2*i2(t) + L*diff (i2(t) , t) = U(t), R1*diff(i1(t),t) + i3(t)/C = diff (U(t) , t ) :

> Nu1 := i1(0) = 0, i2(0) = 0.01, i3(0) = 0 :

> Rs1 := dsolve ( , , type = numeric) ;

Warning, Initial value of i3(t) changed from 0.000000 to -0.010000

> odeplot(Rs1,[t,i1(t)],0..0.03 * Pi);

> odeplot(Rs1,[t,i2(t)],0..0.03 * Pi, numpoints = 100);

> odeplot(Rs1,[t,i3(t)],0..0.03 * Pi, numpoints = 500);

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

> odeplot(Rs,[t,i3(t)],0..0.03 * Pi, numpoints = 500);

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

> odeplot(Rs,[ t, U(t) — i1(t)* R1 ],0..0.03 * Pi, numpoints = 500);

Научный форум dxdy

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

Здравствуйте, уважаемые Знатаки.

Прошу Вашей помощи.

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

и получаю ошибку Error, (in DEtools/convertsys) numeric exception: division by zero .
Поколупавшись выяснил, что ошибку вызывает $arctan(b1*(diff(F(t), t)))$.
Дальше у меня уже мозгов не хватает, что-бы как то обойти эту ошибку или решить ее.

Можит Кто, знает как выкрутится из данной ситуации.

Рассматриваемая Вами система является системой дифференциальных уравнений второго порядка.
1. Для такой системы, в задаче Коши (initial value problem, IVP) в начальный момент времени должны быть заданы не только функции, но и производные первого порядка.
2. Относительно $\frac<d^2i1(t)> <dt^2>+\frac <d^2 i2(t)><dt^2>$, система имеет вид
$\frac<d^2i1(t)> <dt^2>+\frac <d^2 i2(t)> <dt^2>= f_1 \left(t, i1(t), i2(t), \frac <d i1(t)><dt>, \frac<d i2_t(t)><dt>\right)$,
$\frac<d^2i1(t)> <dt^2>+\frac <d^2 i2(t)> <dt^2>= f_2 \left(t, i1(t), i2(t), \frac <d i1(t)><dt>, \frac<d i2_t(t)><dt>\right)$.
Очевидно, что задача Коши для такой системы, в общем случае, не имеет решения.

Для того чтобы «выкрутиться из данной ситуации», следует разобраться: как получена эта система, не допущены ли ошибки при её выводе.

Огромное спасибо за подсказку и помощь.
Система получена из Т-образной схемы замещения трансформатора по законам Кирхгофа, проверял несколько раз и ошибки в составлении нет.
Уравнение $A(t):= a2*arctan(b2*F(t))+c2*F(t)-a1*arctan(b1*(diff(F(t), t)))*exp(-c1^2*F(t)^2);$описывает петлю Гистерезиса и работает правильно (с соответствующими коэффициентами аппроксимации).

Еще проверил раз составлиную систему — составлено верно.

И . что-то тогда совсем не понятно!

Таким образом, имеем систему двух дифференциальных уравнений второго порядка вида $40\frac<d^2 i_1(t)> <dt^2>+60\frac <d^2 i_2(t)> <dt^2>= f_1\left(t, i_1(t), i_2(t), \frac <d \, i_1(t)><dt>, \frac<d \, i_2(t)><dt>\right)$,
$40\frac<d^2 i_1(t)> <dt^2>+60\frac <d^2 i_2(t)> <dt^2>= f_2 \left(t, i_1(t), i_2(t), \frac <d \, i_1(t)><dt>, \frac<d \, i_2(t)><dt>\right)$.
Причем в этой системе $f_1$не совпадает с $f_2$. Maple численно решение задачи Коши для такой системы не найдет.

Для существования решения должно выполняться
$ f_1\left(t, i_1(t), i_2(t), \frac <d\, i_1(t)><dt>, \frac<d\, i_2(t)><dt>\right) = f_2 \left(t, i_1(t), i_2(t), \frac <d\, i_1(t)><dt>, \frac<d \, i_2(t)><dt>\right)$,
т.е. получили дифференциальное уравнение первого порядка с двумя неизвестными функциями.

Я в трансформаторах абсолютно ничего не понимаю. С вопросом о составлении уравнений, описывающих работу трансформаторов, думаю, следует обратиться в раздел «Физика», приведя подробную постановку задачи и вывод системы уравнений (формулы набрать в $\TeX$!).

Спасибо.
Я, в вышей математике, почти ни чего не понимаю. Вот и пытаю разобраться на форумах что куда и зачем. Понимая, что в сети находятся очень толковые люди.
По поводу составления уравнений из схемы замещения то они (уравнения) составлены верно (проверено не тока мною).
И как полученные выражения дальше применить?! Как еще одно выражение использовать.

Zoloto585CPA

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

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