3 @c File=Differential.texi
4 @c OriginalRevision=1.13
5 @c TranslatedBy: (c) 2007-09-05 Alexey V. Beshenov <al@beshenov.ru>
8 * Дифференциальные уравнения в Maxima::
9 * Функции и переменные для дифференциальных уравнений::
12 @node Дифференциальные уравнения в Maxima, Функции и переменные для дифференциальных уравнений, Дифференциальные уравнения, Дифференциальные уравнения
14 @section Дифференциальные уравнения в Maxima
16 Этот раздел описывает функции Maxima для аналитического решения некоторых
17 типов дифференциальных уравнений первого и второго порядка. Для получения
18 численного решения системы дифференциальных уравнений используйте дополнительный
19 пакет @code{dynamics}, для графического представления в фазовом пространстве -
22 @node Функции и переменные для дифференциальных уравнений, , Дифференциальные уравнения в Maxima, Дифференциальные уравнения
24 @section Функции и переменные для дифференциальных уравнений
26 @deffn {Функция} bc2 (@var{solution}, @var{xval1}, @var{yval1}, @var{xval2}, @var{yval2})
28 Решает краевую задачу для дифференциального уравнения второго порядка.
29 Здесь @var{solution} - общее решение уравнения, полученное @code{ode2}; @var{xval1}
30 задает значение независимой переменной в начальной точке в виде
31 @code{@var{x} = @var{x1}} и @var{yval1} задает значение зависимой переменной
32 в этой точке в виде @code{@var{y} = @var{y1}}. Выражения @var{xval2} и @var{yval2}
33 определяют значения для этих переменных во второй точке, используя ту же запись.
35 Пример использования см. в @code{ode2}.
37 @opencatbox{Категории:}
38 @category{Дифференциальные уравнения}
44 @deffn {Функция} desolve (@var{eqn}, @var{x})
45 @deffnx {Функция} desolve ([@var{eqn_1}, ..., @var{eqn_n}], [@var{x_1}, ..., @var{x_n}])
46 Функция @code{desolve} решает линейные системы обыкновенных дифференциальных уравнений
47 при помощи преобразования Лапласа. Здесь @var{eqn} - дифференциальные уравнения со
48 связанными переменными @var{x_1}, ..., @var{x_n}. Функциональная зависимость между
49 @var{x_1}, ..., @var{x_n} или от независимой переменной, например, @var{x},
50 должна явно задаваться в переменных и их производных. Например, следующее определение
51 двух уравнений неверно:
54 eqn_1: 'diff(f,x,2) = sin(x) + 'diff(g,x);
55 eqn_2: 'diff(f,x) + x^2 - f = 2*'diff(g,x,2);
61 eqn_1: 'diff(f(x),x,2) = sin(x) + 'diff(g(x),x);
62 eqn_2: 'diff(f(x),x) + x^2 - f(x) = 2*'diff(g(x),x,2);
65 Тогда вызов функции @code{desolve} будет иметь вид
67 desolve([eqn_1, eqn_2], [f(x),g(x)]);
70 Если известны начальные условия в @code{x=0}, то при помощи @code{atvalue} их можно
71 дополнительно определить до вызова @code{desolve}.
74 @c 'diff(f(x),x)='diff(g(x),x)+sin(x);
75 @c 'diff(g(x),x,2)='diff(f(x),x)-cos(x);
76 @c atvalue('diff(g(x),x),x=0,a);
77 @c atvalue(f(x),x=0,1);
78 @c desolve([%o1,%o2],[f(x),g(x)]);
79 @c [%o1,%o2],%o5,diff;
82 (%i1) @b{@t{'diff(f(x),x)='diff(g(x),x)+sin(x);}}
84 (%o1) -- (f(x)) = -- (g(x)) + sin(x)
86 (%i2) @b{@t{'diff(g(x),x,2)='diff(f(x),x)-cos(x);}}
89 (%o2) --- (g(x)) = -- (f(x)) - cos(x)
92 (%i3) @b{@t{atvalue('diff(g(x),x),x=0,a);}}
94 (%i4) @b{@t{atvalue(f(x),x=0,1);}}
96 (%i5) @b{@t{desolve([%o1,%o2],[f(x),g(x)]);}}
98 (%o5) [f(x) = a %e - a + 1, g(x) =
101 cos(x) + a %e - a + g(0) - 1]
102 (%i6) @b{@t{[%o1,%o2],%o5,diff;}}
104 (%o6) [a %e = a %e , a %e - cos(x) = a %e - cos(x)]
108 Если @code{desolve} не может получить решение, возвращается @code{false}.
110 @opencatbox{Категории:}
111 @category{Дифференциальные уравнения}
112 @category{Преобразование Лапласа}
116 @deffn {Функция} ic1 (@var{solution}, @var{xval}, @var{yval})
118 Решает задачи с начальными условиями для дифференциальных уравнений
119 первого порядка. Здесь @var{solution} - общее решение уравнения, полученное
120 @code{ode2}; @var{xval} задает начальное значение независимой переменной
121 в виде @code{@var{x} = @var{x0}}, и @var{yval} задает начальное значение зависимой
122 переменной в виде @code{@var{y} = @var{y0}}.
124 Пример использования см. в @code{ode2}.
126 @opencatbox{Категории:}
127 @category{Дифференциальные уравнения}
131 @deffn {Функция} ic2 (@var{solution}, @var{xval}, @var{yval}, @var{dval})
133 Решает задачи с начальными условиями для дифференциальных уравнений
134 второго порядка. Здесь @var{solution} - общее решение уравнения, полученное
135 @code{ode2}; @var{xval} задает начальное значение независимой переменной
136 в виде @code{@var{x} = @var{x0}}, @var{yval} задает начальное значение зависимой
137 переменной в виде @code{@var{y} = @var{y0}}, и @var{dval} задает начальное значение
138 для первой производной зависимой переменной по независимой в виде
139 @code{diff(@var{y},@var{x}) = @var{dy0}} (перед @code{diff} не нужно ставить кавычку).
141 Пример использования см. в @code{ode2}.
143 @opencatbox{Категории:}
144 @category{Дифференциальные уравнения}
149 @deffn {Функция} ode2 (@var{eqn}, @var{dvar}, @var{ivar})
151 Функция @code{ode2} решает обыкновенное дифференциальное уравнение (ОДУ)
152 первого или второго порядка. Она принимает три аргумента: ОДУ @var{eqn},
153 зависимую переменную @var{dvar} и независимую переменную @var{ivar}.
154 При удачном результате возвращается явное или неявное решение относительно
155 зависимой переменной. @code{%c} используется для представления константы
156 интегрирования в случае уравнений первого порядка; @code{%k1} и @code{%k2} -
157 константы в решениях уравнений второго порядка. Зависимость зависимой
158 переменной от независимой не требуется указывать явно, как в случае с
159 @code{desolve}, но независимая переменная должна всегда указываться в
160 качестве третьего аргумента.
162 Если по каким-то причинам @code{ode2} не может получить решение, возвращается
163 @code{false}, и, возможно, печатается сообщение об ошибке. Методы
164 решения уравнений первого порядка (в том порядке, в каком Maxima пытается
165 их применять): линейный, разделение переменных, явный - возможно, используется
166 интегрирующий множитель, однородное уравнение, уравнение Бернулли и обобщенный
169 Типы решаемых уравнений второго порядка:
170 уравнение с постоянными коэффициентами, явное, линейное однородное с непостоянными
171 коэффициентами, преобразующимися к постоянным, уравнение Эйлера (или равноразмерное),
172 уравнения, решаемые методом вариации переменных, а также уравнения без независимой
173 или зависимой переменной, сводимые для последующего решения к линейным уравнениям
176 В ходе решения ОДУ чисто для справки устанавливается несколько переменных:
177 @code{method} указывает на использованный метод решения (например, @code{linear}),
178 @code{intfactor} - использованный интегрирующий множитель, @code{odeindex} -
179 коэффициент, примененный в методе Бернулли или обобщенном однородном методе, а
180 @code{yp} - частное решение для метода вариации переменных.
182 Для решения задач с начальными условиями для уравнений первого и второго
183 порядка доступны функции @code{ic1} и @code{ic2}, а для решения краевых задач
184 может использоваться функция @code{bc2}.
189 @c x^2*'diff(y,x) + 3*y*x = sin(x)/x;
191 @c ic1(%o2,x=%pi,y=0);
192 @c 'diff(y,x,2) + y*'diff(y,x)^3 = 0;
194 @c ratsimp(ic2(%o5,x=0,y=0,'diff(y,x)=2));
195 @c bc2(%o5,x=0,y=1,x=1,y=3);
198 (%i1) @b{@t{x^2*'diff(y,x) + 3*y*x = sin(x)/x;}}
200 (%o1) x -- + 3 x y = ------
202 (%i2) @b{@t{ode2(%,y,x);}}
204 (%o2) y = -----------
207 (%i3) @b{@t{ic1(%o2,x=%pi,y=0);}}
209 (%o3) y = - ----------
212 (%i4) @b{@t{'diff(y,x,2) + y*'diff(y,x)^3 = 0;}}
215 (%o4) --- + y (--) = 0
218 (%i5) @b{@t{ode2(%,y,x);}}
221 (%o5) ------------ = x + %k2
223 (%i6) @b{@t{ratsimp(ic2(%o5,x=0,y=0,'diff(y,x)=2));}}
226 (%o6) - ---------- = x
228 (%i7) @b{@t{bc2(%o5,x=0,y=1,x=1,y=3);}}
231 (%o7) --------- = x - -
236 @opencatbox{Категории:}
237 @category{Дифференциальные уравнения}