2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 численное решение ОДУ не в ф. Коши
Сообщение12.12.2008, 20:04 


11/04/08
632
Марс
Диф.ур 2-го порядка. При этом заданы граничные условия в виде типа
y'(0)=3, y(2)=1.
NDSolve в Mathematica ругается и ответа не дает. Matlab вроде умеет, но я с ним плохо знаком. Можно ли эти задачи решать в Mathematica или Mathcad?

 Профиль  
                  
 
 
Сообщение12.12.2008, 20:47 
Заслуженный участник


09/01/06
800
А где дифур?

 Профиль  
                  
 
 
Сообщение13.12.2008, 01:20 
Заслуженный участник


22/01/07
605
Mathematica считает. А ругаться она может по-разному. Например, на неправильный синтаксис. Если есть код, приведите. Больше шансов получить конкретный ответ.

 Профиль  
                  
 
 Re: численное решение ОДУ не в ф. Коши
Сообщение13.12.2008, 01:47 


11/11/07
80
spyphy писал(а):
Диф.ур 2-го порядка. При этом заданы граничные условия в виде типа
y'(0)=3, y(2)=1.


А разве это нормально что граничные условия заданы в разных точках? :roll:

 Профиль  
                  
 
 Re: численное решение ОДУ не в ф. Коши
Сообщение13.12.2008, 10:45 
Заслуженный участник


09/01/06
800
zuj писал(а):
А разве это нормально, что граничные условия заданы в разных точках?


А что же в этом ненормального?

 Профиль  
                  
 
 
Сообщение13.12.2008, 16:33 


11/11/07
80
Просто вспомнил что у меня математика как то ругалась когда я с граничными условиями напортачил. Тогда думаю автору и вправду проще здесь код выложить ... понятней будет.

 Профиль  
                  
 
 
Сообщение15.12.2008, 17:13 


11/04/08
632
Марс
Да, я здесь ошибся, Математика такие задачи в принципе решать может (для простейшего примера у меня получилось). Видимо, дело здесь в другом. Возможно, задача слишком навороченная и не исключены ошибки в условии. Буду сам ещё разбираться. Тем ни мение приведу здесь этот пример в упрощенном варианте, когда одну и ту же систему ОДУ метод DSolve решает, а метод NDSolve не решает. В более сложном варианте, когда уравнения уже нелинейные, методу DSolve эта задача тоже не посилам.

Короче, вот пример, здесь это решается и строится соот-щий график:
Код:
b1 = 2;  b2 = 3;
q1 = 2; q2 = 4;
n1 = 3; n2 = 1;
s = DSolve[{
      p1''[x] + p1[x]/b1 == 0,
      p2''[x] + p2[x]/b2 == 0,
      q1 - p1'[0] == q2 - p2'[0],
      n1*p1[0] == n2*p2[0],
      p1[-1] == 1,
      p2[1] == 1
       }, {p1, p2}, x]
f[x_] := p1[x] /. s;
f[x]
Plot[f[x], {x, 0, xm}, PlotRange -> {-3, 3}, AxesLabel -> {"x", "p"}];


Тоже самое, но численно, уже не решаемо:
Код:
xm = 2;
b1 = 2;  b2 = 3;
q1 = 2; q2 = 4;
n1 = 3; n2 = 1;
s = NDSolve[{
      p1''[x] + p1[x]/b1 == 0,
      p2''[x] + p2[x]/b2 == 0,
      q1 - p1'[0] == q2 - p2'[0],
      n1*p1[0] == n2*p2[0],
      p1[-1] == 1,
      p2[1] == 1
       }, {p1, p2}, {x, -xm, xm}]
f[x_] := p1[x] /. s;
f[x]
Plot[f[x], {x, 0, xm}, PlotRange -> {-3, 3}, AxesLabel -> {"x", "p"}];

пишет
Цитата:
NDSolve::"ndv": "For a boundary value problem, only nth order single linear ordinary differential equations is supported."

и ещё много всего.
Какие здесь возможны варианты?

 Профиль  
                  
 
 
Сообщение15.12.2008, 18:26 
Заслуженный участник


09/01/06
800
А зачем численно решать, если можно аналитически?

 Профиль  
                  
 
 
Сообщение15.12.2008, 21:00 


02/09/08
143
Ну видимо случай, который можно решить аналитически, является лишь приближением к настоящей задаче.

 Профиль  
                  
 
 
Сообщение16.12.2008, 10:17 


11/04/08
632
Марс
Да, в общем случае, когда ур-ния нелинейные, аналического решения нет, поэтому в любом случае надо решать численно, если только это возможно вобще.

 Профиль  
                  
 
 
Сообщение16.12.2008, 12:27 


11/11/07
80
Не знаю как у вас, а у меня Mathematica 6.0 все великолепно решает и приведенный вами код вполне боеспособен (только после Plot стоит точки с запятыми постирать :wink: ).
У вас какая версия?

 Профиль  
                  
 
 
Сообщение16.12.2008, 15:59 


11/04/08
632
Марс
zuj писал(а):
У вас какая версия?

) да, я ж совсем забыл, что пользуюсь несколько устаревшей версией сего пакета, а именно ver. 4.2, поскольку более новой рабочей версии с крэками до сих пор не достал. Будем искать.
Если есть возможность, попробуйте прогнать более общий случай, чтобы знать, может ли такое решать 6-ая.
Код:
xm = 2;
q1 = 2; n1 = 3;
q2 = 1; n2 = 2;
s = NDSolve[{
      p1''[x] + p1'[x]/(1 + p1[x] +   p1[x]^2) + (p1'[x])^2/(2 + 3*p1[x] + p1[x]^2) + p1[x]/(2 + p1[x]) == 0,
      p2''[x] + p2'[x]/(2 + p2[x] + 3*p2[x]^2) + (p2'[x])^2/(3 +p2[x] + 2*p2[x]^2) + p2[x]/(3 + 2*p2[x]) == 0,
      q1 - p1'[0] == q2 - p2'[0],
      n1*p1[0] == n2*p2[0],
      p1[-1] == 1,
      p2[1] == 1
       }, {p1, p2}, {x, -xm, xm}]
f[x_] := p1[x] /. s;
f[x]
Plot[f[x], {x, 0, xm}, PlotRange -> {-3, 3}, AxesLabel -> {"x", "p"}]

 Профиль  
                  
 
 
Сообщение18.12.2008, 09:59 


11/11/07
80
spyphy писал(а):
Если есть возможность, попробуйте прогнать более общий случай, чтобы знать, может ли такое решать 6-ая.


Проверил ... все работает без проблем 8-).

 Профиль  
                  
 
 
Сообщение20.12.2008, 16:06 


11/04/08
632
Марс
Понятно, будем искать.

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

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



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

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


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

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