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
10887
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
10/11/24
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
10/11/24
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
10/11/24
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
10/11/24
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
10/11/24
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 ] 

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



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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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