![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Решение командой pdsolve.
Обратимся к тому же примеру 1-мерного волнового уравнения, что и в п. 18.1 (см. pde1). Формальное применение команды решения даёт суперпозицию двух функций, отличающихся знаком при х, что обычно истолковывают как 2 волны, распространяющиеся в противоположных направлениях. > pdsolve(pde1); Задача состоит в отыскании этих двух функций конкретно. Для этого используем развёрнутую команду pdsolve с дополнительными параметрами (см. Help). Параметры INTEGRATE и build уточняют задание для программы. Параметр HINT (подсказка) предлагает программе искать решение в виде произведения (`*`), как и в п. 18.1. > pdsolve(pde1, f(x, t), HINT= `*`, INTEGRATE, build); (1)
Выражение (1) содержит 4 константы интегрирования, заданный параметр v и неопределённый параметр, обозначенный программой _с1 (вообще, комплексный). Обозначим (1) (ниже ряд промежуточных результатов не выводятся на экран): > F: =exp(_c[1]^(1/2)*x)*_C1*_C3*exp(_c[1]^(1/2)*v*t)+exp(_c[1]^(1/2)*x)*_C1*_C4/exp(_c[1]^(1/2)*v*t)+1/exp(_c[1]^(1/2)*x)*_C2*_C3*exp(_c[1]^(1/2)*v*t)+ 1/exp(_c[1]^(1/2)*x)*_C2*_C4/exp(_c[1]^(1/2)*v*t): Константы _С1 -_С4 найдём из Н.У., которые наложим на F и её производные по x и t. Ниже dx и dt - не дифференциалы, а просто обозначения! > Fdx: =diff(F, x): Fdt: =diff(F, t): Эти условия зададим несколько по-иному, чем в п. 18.1, что упрощает запись, но не имеет принципиального значения. Именно, потребуем, чтобы при (t=0, x=0) искомая функция равнялась А, а обе производных - нулю: > subs([x=0, t=0], F): subs(exp(0)=1, %): eq1: =%=A; > subs([x=0, t=0], Fdx): subs(exp(0)=1, %): simplify(%): eq2: =%=0; > subs([x=0, t=0], Fdt): subs(exp(0)=1, %): simplify(%): eq3: =%=0; (Для упрощения сделана подстановка exp(0)=1, что программа сама не делает, но знает). Получили систему 3-х уравнений, позволяющих выразить три константы через одну, напр. _С1 (см. п. 9), что и подставим в F. (Надо точно сохранять введённые программой обозначения констант!) > solve({eq1, eq2, eq3}, {_C2, _C3, _C4}); > subs([_C2=_C1, _C3=1/4*A/_C1, _C4=1/4*A/_C1], F): simplify(%): expand(%): combine(%); (2) В итоге _C1 выпало из решения, вместо него вошло заданное А. Решение (2) описывает весьма широкий класс функций, отличающихся параметром _с1. Будем искать периодические решения, для чего положим _с1< 0, так что корень из этой величины - мнимый. > factor(%); > subs(_c[1]^(1/2)=I*k, %); convert(%, trig); > y: =simplify(1/4*A*(2*cos(k*(v*t+x))+2*cos(k*(v*t-x)))); Полученное решение согласно с решением, данным программой в ответе на самую первую команду, и отличается от решения, найденного в п. 18.1 только сдвигом по фазе. Дополнительное определение k - как в п. 18.1. Решение ДУЧП с заданными граничными условиями здесь не обсуждается. >
|