Maxima Manual: Функции и переменные для дифференциальных уравнений

Previous: Дифференциальные уравнения в Maxima, Up: Дифференциальные уравнения [Contents][Index]

### 20.2 Функции и переменные для дифференциальных уравнений

Функция: bc2 (solution, xval1, yval1, xval2, yval2)

  Решает краевую задачу для дифференциального уравнения второго порядка. Здесь solution - общее решение уравнения, полученное `ode2`; xval1 задает значение независимой переменной в начальной точке в виде `x = x1` и yval1 задает значение зависимой переменной в этой точке в виде `y = y1`. Выражения xval2 и yval2 определяют значения для этих переменных во второй точке, используя ту же запись.

  Пример использования см. в `ode2`.

Функция: desolve (eqn, x)
Функция: desolve ([eqn_1, ..., eqn_n], [x_1, ..., x_n])

  Функция `desolve` решает линейные системы обыкновенных дифференциальных уравнений при помощи преобразования Лапласа. Здесь eqn - дифференциальные уравнения со связанными переменными x_1, ..., x_n. Функциональная зависимость между x_1, ..., x_n или от независимой переменной, например, x, должна явно задаваться в переменных и их производных. Например, следующее определение двух уравнений неверно:

      eqn_1: 'diff(f,x,2) = sin(x) + 'diff(g,x);
      eqn_2: 'diff(f,x) + x^2 - f = 2*'diff(g,x,2);

  Правильная запись -

      eqn_1: 'diff(f(x),x,2) = sin(x) + 'diff(g(x),x);
      eqn_2: 'diff(f(x),x) + x^2 - f(x) = 2*'diff(g(x),x,2);

  Тогда вызов функции `desolve` будет иметь вид

      desolve([eqn_1, eqn_2], [f(x),g(x)]);

  Если известны начальные условия в `x=0`, то при помощи `atvalue` их можно дополнительно определить до вызова `desolve`.

      (%i1) 'diff(f(x),x)='diff(g(x),x)+sin(x);
                       d           d
      (%o1)            -- (f(x)) = -- (g(x)) + sin(x)
                       dx          dx
      (%i2) 'diff(g(x),x,2)='diff(f(x),x)-cos(x);
                        2
                       d            d
      (%o2)            --- (g(x)) = -- (f(x)) - cos(x)
                         2          dx
                       dx
      (%i3) atvalue('diff(g(x),x),x=0,a);
      (%o3)                           a
      (%i4) atvalue(f(x),x=0,1);
      (%o4)                           1
      (%i5) desolve([%o1,%o2],[f(x),g(x)]);
                        x
      (%o5) [f(x) = a %e  - a + 1, g(x) =

                                                      x
                                         cos(x) + a %e  - a + g(0) - 1]
      (%i6) [%o1,%o2],%o5,diff;
                   x       x      x                x
      (%o6)   [a %e  = a %e , a %e  - cos(x) = a %e  - cos(x)]

  Если `desolve` не может получить решение, возвращается `false`.

Функция: ic1 (solution, xval, yval)

  Решает задачи с начальными условиями для дифференциальных уравнений первого порядка. Здесь solution - общее решение уравнения, полученное `ode2`; xval задает начальное значение независимой переменной в виде `x = x0`, и yval задает начальное значение зависимой переменной в виде `y = y0`.

  Пример использования см. в `ode2`.

Функция: ic2 (solution, xval, yval, dval)

  Решает задачи с начальными условиями для дифференциальных уравнений второго порядка. Здесь solution - общее решение уравнения, полученное `ode2`; xval задает начальное значение независимой переменной в виде `x = x0`, yval задает начальное значение зависимой переменной в виде `y = y0`, и dval задает начальное значение для первой производной зависимой переменной по независимой в виде `diff(y,x) = dy0` (перед `diff` не нужно ставить кавычку).

  Пример использования см. в `ode2`.

Функция: ode2 (eqn, dvar, ivar)

  Функция `ode2` решает обыкновенное дифференциальное уравнение (ОДУ) первого или второго порядка. Она принимает три аргумента: ОДУ eqn, зависимую переменную dvar и независимую переменную ivar. При удачном результате возвращается явное или неявное решение относительно зависимой переменной. `%c` используется для представления константы интегрирования в случае уравнений первого порядка; `%k1` и `%k2` - константы в решениях уравнений второго порядка. Зависимость зависимой переменной от независимой не требуется указывать явно, как в случае с `desolve`, но независимая переменная должна всегда указываться в качестве третьего аргумента.

  Если по каким-то причинам `ode2` не может получить решение, возвращается `false`, и, возможно, печатается сообщение об ошибке. Методы решения уравнений первого порядка (в том порядке, в каком Maxima пытается их применять): линейный, разделение переменных, явный - возможно, используется интегрирующий множитель, однородное уравнение, уравнение Бернулли и обобщенный однородный метод.

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

  В ходе решения ОДУ чисто для справки устанавливается несколько переменных: `method` указывает на использованный метод решения (например, `linear`), `intfactor` - использованный интегрирующий множитель, `odeindex` - коэффициент, примененный в методе Бернулли или обобщенном однородном методе, а `yp` - частное решение для метода вариации переменных.

  Для решения задач с начальными условиями для уравнений первого и второго порядка доступны функции `ic1` и `ic2`, а для решения краевых задач может использоваться функция `bc2`.

  Пример:

      (%i1) x^2*'diff(y,x) + 3*y*x = sin(x)/x;
                            2 dy           sin(x)
      (%o1)                x  -- + 3 x y = ------
                              dx             x
      (%i2) ode2(%,y,x);
                                   %c - cos(x)
      (%o2)                    y = -----------
                                        3
                                       x
      (%i3) ic1(%o2,x=%pi,y=0);
                                    cos(x) + 1
      (%o3)                   y = - ----------
                                         3
                                        x
      (%i4) 'diff(y,x,2) + y*'diff(y,x)^3 = 0;
                               2
                              d y      dy 3
      (%o4)                   --- + y (--)  = 0
                                2      dx
                              dx
      (%i5) ode2(%,y,x);
                            3
                           y  + 6 %k1 y
      (%o5)                ------------ = x + %k2
                                6
      (%i6) ratsimp(ic2(%o5,x=0,y=0,'diff(y,x)=2));
                                   3
                                2 y  - 3 y
      (%o6)                   - ---------- = x
                                    6
      (%i7) bc2(%o5,x=0,y=1,x=1,y=3);
                               3
                              y  - 10 y       3
      (%o7)                   --------- = x - -
                                  6           2

Previous: Дифференциальные уравнения в Maxima, Up: Дифференциальные уравнения [Contents][Index]