2014 dxdy logo

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

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки


Правила форума


Посмотреть правила форума



Начать новую тему Ответить на тему
 
 Условия для уравнения - как правильно задать в Maple
Сообщение28.05.2019, 14:41 


01/11/17
54
Здравствуйте. Ранее в Maple ставил изредка простые задачи для популярных уравнений типа теплопроводности или колебания - чисто, чтобы посмотреть, как это выглядит. Опирался в этом деле на Help самой программы (раз, два, три, четыре) и до сегодняшнего дня не парился - не особо умел, да и не было нужды. Поэтому попрошу навести прицел на ошибку или указать, что не так.

Есть уравнение в частных производных (pde) на функцию $q(X,T)$ c мнимой единицей в качестве коэффициента.
Есть на плоскости $(X,T)$ кривая с началом в $(0,0)$, допустим, полукубическая парабола $X(T)=\pm a (-b T)^{3/2}$, где константы $a, b$ известны. Полагается рассмотрение отрицательных $T$.

Условия такие:
(bc2). От левой ветви (не включительно) этой кривой до $X=0$ (включительно) функция равна некоторой функции $q(X,T^{*})=q_1 (X,T^{*})$, от $X=0$ (включительно) до правой ветви (не включительно) - другой функции $q(X,T^{*})=q_3 (X,T^{*})$.
(bc1). Левее левой ветви и правее правой полагаем, что $q=0$.

Для кривой $X(T)=\pm a (-b T)^{3/2}$ рассматриваем разные значения $T=T^{*}$, соответственно меняем и краевые условия, подставляя в них выбранное $T=T^{*}$. То есть, одну и ту же задачу решаем несколько раз для разных значений $T=T^{*}$.

И вот, что я скармливаю Maple, выбрав $T^{*}=-9$ и подставив его в уравнение кривой и в нужные функции. Подразумевается, что вычислять надо не всюду, а для конечного отрезка $X$ от $-1000$ до $1000$.

Код:
bc1 := {q(X, -9) = piecewise(X > 6*sqrt(3), 0, X < -6*sqrt(3), 0)}

Код:
bc2 := {q(X, -9) = piecewise(0 >= X and X > -6*sqrt(3), q1, 0 <= X and X < 6*sqrt(3), q3)};

Код:
pdsolve(pde, bc1 union bc2, numeric, time = T, range = -1000 .. 1000)


На что получаем ответ:
Код:
Error, (in pdsolve/numeric) initial/boundary conditions must be defined at one or two points for each independent variable


То есть, условия надо определить для каждой независимой переменной функции $q(X,T)$ в одной или двух точках. Но у меня нет больше условий. Ни на производные, ни на $X$, а $T$ и так в деле.
Может, взять функции $q_1, q_3$, подставить $T^{*}=-9$ в их производные, дополнить условия? Но это выглядит излишним.

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

 Профиль  
                  
 
 Re: Условия для уравнения - как правильно задать в Maple
Сообщение28.05.2019, 19:30 
Заслуженный участник
Аватара пользователя


23/07/08
10910
Crna Gora
Попробуйте в порядке эксперимента добавить два дополнительных условия:
$q(-1000, T)=0$
$q(+1000, T)=0$
Просто чтобы понять, верно ли, что Maple не хватает boundary conditions. Все условия, которые Вы до сих пор задавали — initial conditions, хотя Вы их обозначали bc1, bc2.

 Профиль  
                  
 
 Re: Условия для уравнения - как правильно задать в Maple
Сообщение29.05.2019, 16:01 


11/07/16
825
Пожалуйста, сообщите Ваше уравнение в частных производных pde, иначе это беспредметный разговор.

 Профиль  
                  
 
 Re: Условия для уравнения - как правильно задать в Maple
Сообщение29.05.2019, 19:36 


01/11/17
54
svv в сообщении #1396019 писал(а):
Попробуйте в порядке эксперимента добавить два дополнительных условия:
$q(-1000, T)=0$
$q(+1000, T)=0$
Просто чтобы понять, верно ли, что Maple не хватает boundary conditions. Все условия, которые Вы до сих пор задавали — initial conditions, хотя Вы их обозначали bc1, bc2.

Добавил:
Код:
bc3 := {q(-1000, T) = 0, q(1000, T) = 0}

В ответ на команду
Код:
sol := pdsolve(pde, bc1 union bc2 union bc3, numeric);

ошибка
Код:
Error, (in pdsolve) invalid input: `pdsolve/numeric` expects its 2nd argument, IBCs, to be of type {list, set}, but received `union`(bc1, bc2, {q(-1000, T) = 0, q(1000, T) = 0})

Честно говоря, тут не понял, что не устраивает Мэйпл. И на $X$ условие, и на $T$.

Markiyan Hirnyk писал(а):
Пожалуйста, сообщите Ваше уравнение в частных производных pde, иначе это беспредметный разговор.

НУШ
$-i \varepsilon q_T=\varepsilon^2 q_{XX}-2 \left | q \right |^2 q, \ (\varepsilon \ll  1)$
с малым параметром $\frac{1}{100}$:
$-i (\frac{1}{100}) q_T=(\frac{1}{100})^2 q_{XX}-2 \left | q \right |^2 q$.
С комплексными коэффициентами могут быть сложности?

 Профиль  
                  
 
 Re: Условия для уравнения - как правильно задать в Maple
Сообщение29.05.2019, 20:26 


11/07/16
825
Ваше условие
Код:
bc1 := {q(X, -9) = piecewise(X > 6*sqrt(3), 0, X < -6*sqrt(3), 0)}

некорректно, т.к. функция
Код:
q(X, -9)

не определена на отрезке $[-6\sqrt 3, 6\sqrt 3]$ (по умолчанию он равна там нулю, но тогда кусочное задание не имеет смысла).

 Профиль  
                  
 
 Re: Условия для уравнения - как правильно задать в Maple
Сообщение30.05.2019, 10:38 


01/11/17
54
Markiyan Hirnyk в сообщении #1396373 писал(а):
Ваше условие
Код:
bc1 := {q(X, -9) = piecewise(X > 6*sqrt(3), 0, X < -6*sqrt(3), 0)}

некорректно, т.к. функция
Код:
q(X, -9)

не определена на отрезке $[-6\sqrt 3, 6\sqrt 3]$ (по умолчанию он равна там нулю, но тогда кусочное задание не имеет смысла).

Она определена, нулю она равна вне этого отрезка, а не в нем. Функция внутри (bc2) этого отрезка (отрезок на оси $X$) сначала q1, потом q3 (при $X=0$ значения q1 и q3 совпадают). А вне (bc1) этого отрезка функция равна нулю. Так что я не понял проблему с определением - вот такие вот значения и требуются. Возможно, я упускаю какой-то теоретический аспект - тогда буду признателен за ликбез или ссылку на литературу.

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

Попробую заново поставить условие. Если кто-то заметит ошибку в рассуждении - буду рад замечанию.

Есть НУШ:
btoom в сообщении #1396350 писал(а):
$-i \varepsilon q_T=\varepsilon^2 q_{XX}-2 \left | q \right |^2 q, \ (\varepsilon \ll  1)$
с малым параметром $\frac{1}{100}$:
$-i (\frac{1}{100}) q_T=(\frac{1}{100})^2 q_{XX}-2 \left | q \right |^2 q$.


Есть кривая:
btoom в сообщении #1395913 писал(а):
кривая с началом в $(0,0)$, допустим, полукубическая парабола $X(T)=\pm a (-b T)^{3/2}$, где константы $a, b$ известны


Что хотим? Хотим решение уравнения, удовлетворяющее условиям. Для начала выберем $T=-9$ и при этом значении кривая принимает значение $-6 \sqrt{3}$ на левой ветви и $6 \sqrt{3}$ на правой.
От левой ветви кривой (не включительно) до оси $X=0$ (включительно) q=q1, где q1 это некоторая функция, известно какая (комплекснозначная). От $X=0$ (включительно) до правой ветви (не включительно) q=q3. При $X=0$ q1=q3.
Код:
bc2 := {q(X, -9) = piecewise(0 >= X and X > -6*sqrt(3), q1, 0 <= X and X < 6*sqrt(3), q3)};

Вне ветвей предполагается, что q=0.
Код:
bc1 := {q(X, -9) = piecewise(X > 6*sqrt(3), 0, X < -6*sqrt(3), 0)}

В общем, похоже, легче будет воспользоваться методом ВКБ и как-нибудь переписать условия.

 Профиль  
                  
 
 Re: Условия для уравнения - как правильно задать в Maple
Сообщение30.05.2019, 11:59 


11/07/16
825
btoom
Цитата:
Она определена, нулю она равна вне этого отрезка, а не в нем. Функция внутри (bc2) этого отрезка (отрезок на оси $X$) сначала q1, потом q3 (при $ X=0$ значения q1 и q3 совпадают). А вне (bc1) этого отрезка функция равна нулю. Так что я не понял проблему с определением - вот такие вот значения и требуются. Возможно, я упускаю какой-то теоретический аспект - тогда буду признателен за ликбез или ссылку на литературу.

В таком стиле мне с Вами нечего обсуждать. Посмотрите справку.

 Профиль  
                  
 
 Re: Условия для уравнения - как правильно задать в Maple
Сообщение30.05.2019, 19:36 


01/11/17
54
Markiyan Hirnyk в сообщении #1396572 писал(а):
btoom
Цитата:
Она определена, нулю она равна вне этого отрезка, а не в нем. Функция внутри (bc2) этого отрезка (отрезок на оси $X$) сначала q1, потом q3 (при $ X=0$ значения q1 и q3 совпадают). А вне (bc1) этого отрезка функция равна нулю. Так что я не понял проблему с определением - вот такие вот значения и требуются. Возможно, я упускаю какой-то теоретический аспект - тогда буду признателен за ликбез или ссылку на литературу.

В таком стиле мне с Вами нечего обсуждать. Посмотрите справку.

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

В общем, убрал bc 1, внес пару мелочей (умножение на $i$ задал точкой, а не пробелом) плюс в качестве bc4
svv в сообщении #1396019 писал(а):
в порядке эксперимента добавить два дополнительных условия:
$q(-1000, T)=0$
$q(+1000, T)=0$

и в ответ на
Код:
s := pdsolve(pde2, bc2 union bc4, numeric)

получил долгожданный
Код:
s:=module() ... end module


Поработав с файлом с другим уравнением (теплопроводность), убедился, что если есть мнимая единица в качестве коэффициента, то график и анимацию Мэйпл не рисует. Стоило ожидать.

Но может ли программа нарисовать только действительную часть или выкатить мне таблицу значений функции для разных $T$ и $X$? За неимением лучшего я использовал код (на основе этого).

(Оффтоп)

Функцию мы "не видим" (а хорошо бы получить формулу, пусть она и будет громоздкой), поэтому делаем вот такой финт, пользуясь тем, что ей все равно присвоено имя:
Код:
a := proc (X, T) options operator, arrow; s end proc

Фиксируем точку:
Код:
T := -1

Требуем значения:
Код:
for X from -10 to 10 do printf("X =% 6.2f q=% 6.2f T =% 6.2f  \n", X, evalf(a(X, T)), T) end do

На что, увы, получаем
Код:
Error, (in fprintf) number expected for floating point format

Потому что с комплексными числами этот маневр не работает.

 Профиль  
                  
 
 Re: Условия для уравнения - как правильно задать в Maple
Сообщение30.05.2019, 20:48 


11/07/16
825
btoom Опять беспредметный разговор: отсутствует полный якобы работающий код, перескакивание от одного к другому
Цитата:
Поработав с файлом с другим уравнением (теплопроводность)
. Какой вопрос - такой ответ. Сложно ответить на неаккуратно и неполно сформулированный вопрос.

 Профиль  
                  
 
 Re: Условия для уравнения - как правильно задать в Maple
Сообщение31.05.2019, 09:03 


01/11/17
54
Окей, вот файл и комментарии.

Уравнение:
Код:
pde2 := -(I*(1/100))*(diff(q(X, T), T)) = (1/10000)*(diff(q(X, T), X, X))-2*abs(q(X, T))^2*q(X, T)


Функция $q1=\sqrt{H1} e^{100 i p1}$, $q3=\sqrt{H3} e^{100 i p3}$

Условие внутри кривой.
Код:
bc2 := {q(X, -9) = piecewise(0 >= X and X > -6*sqrt(3), q1, 0 <= X and X < 6*sqrt(3), q3)}


Условие равенства нулю на большой дистанции от начала координат по оси $X$.
Код:
bc4 := {q(-1000, T) = 0, q(1000, T) = 0};


Команда к решению:
Код:
s := pdsolve(pde2, bc2 union bc4, numeric);


Попытка получить таблицу значений сначала для фиксированного $T$.
Код:
a := proc (X, T) options operator, arrow; s end proc

Код:
T := -1

Код:
for X from -10 to 10 do printf("X =% 6.2f q=% 6.2f T =% 6.2f  \n", X, evalf(a(X, T)), T) end do

Выдаваемая ошибка:
Код:
X =-10.00 q=

Error, (in fprintf) number expected for floating point format


Предположение - с комплекснозначной функцией так получить таблицу значений, график и анимацию нельзя. Обоснование этого предположения:
btoom в сообщении #1396707 писал(а):
Поработав с файлом с другим уравнением (теплопроводность), убедился, что если есть мнимая единица в качестве коэффициента, то график и анимацию Мэйпл не рисует.


Что хочу:
1. Все-таки получить таблицу значений функции $q$. Интересует поведение в окрестности начала координат и при положительных $T$.
2. Понять, гладкая ли функция $q$. Нет ли особенности.
3. График и анимация действительной части функции.

 Профиль  
                  
 
 Re: Условия для уравнения - как правильно задать в Maple
Сообщение31.05.2019, 15:07 


11/07/16
825
Теперь разговор предметный и конкретный. К сожалению, результат
Код:
s := pdsolve(pde2, bc2 union bc4, numeric);
                        s :=module() ... end module

только видимость, т.к. с ним невозможно дальше работать:
Код:
p1 := s[value](T = 1, output = listprocedure);
Error, (in pdsolve/numeric/xprofile) unable to compute solution for T>HFloat(-9.0):
unable to store HFloat(undefined)+.0001*I when datatype=float[8]

Ответ такого типа и для всех других попробованных мною значений $T$. Ср. с (8) в справке.
Теперь Ваш вопрос мне понятен: " Как работать с комплекснозначными численными решениями уравнения в частных производных?" Для содержательного ответа необходимо иметь такое решение. Попробуйте сначала с уравнением первого порядка и простыми условиями. Попробуйте также использовать Математику, которая оперирует с комплекснозначными численными решениями УЧП (см. справку ).

 Профиль  
                  
 
 Re: Условия для уравнения - как правильно задать в Maple
Сообщение02.06.2019, 15:46 


01/11/17
54
Markiyan Hirnyk в сообщении #1396899 писал(а):
Теперь разговор предметный и конкретный. К сожалению, результат
Код:

s := pdsolve(pde2, bc2 union bc4, numeric);
s :=module() ... end module


только видимость, т.к. с ним невозможно дальше работать:
Код:

p1 := s[value](T = 1, output = listprocedure);
Error, (in pdsolve/numeric/xprofile) unable to compute solution for T>HFloat(-9.0):
unable to store HFloat(undefined)+.0001*I when datatype=float[8]


Ответ такого типа и для всех других попробованных мною значений $T$. Ср. с (8) в справке
.
Теперь Ваш вопрос мне понятен: " Как работать с комплекснозначными численными решениями уравнения в частных производных?" Для содержательного ответа необходимо иметь такое решение. Попробуйте сначала с уравнением первого порядка и простыми условиями. Попробуйте также использовать Математику, которая оперирует с комплекснозначными численными решениями УЧП (см. справку
).


Эх, очень жаль. Ладно, сведу к системе двух уравнений заменой $q=u+iv$. Вольфрам тоже попробую.
Спасибо за терпеливый ликбез.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 12 ] 

Модераторы: Модераторы Математики, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: confabulez


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group