2014 dxdy logo

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

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




 
 Решение ДУ в Mathematica
Сообщение27.03.2011, 01:50 
Аватара пользователя
Доброго времени суток.
В результате решения одной механической задачи возникла вот такая система уравнений:

$\ddot{\theta}=0$
$\ddot{y}=\ddot{x}\tg{\theta}$
$MR\ddot{x}=J\ddot{\phi_1}\cos{\theta}$
$MR\ddot{x}=J\ddot{\phi_2}\cos{\theta}$
$MR\ddot{x}=J\ddot{\phi_3}\cos{\theta}$
$MR\ddot{x}=J\ddot{\phi_4}\cos{\theta}$
$(1+\frac{MR}{J})\ddot{x}=\cos{\theta}(\dot{x}\sin{\theta}-\dot{y}\cos{\theta})\dot{\theta}$

Здесь $\theta,x,y,\phi_1,\phi_2,\phi_3,\phi_4$ - функции времени, $M,R,J$ - константы(положительные).
Для численного решения ДУ мне порекомендовали Mathematica. Сам я не имею опыта работы в мат. пакетах, поэтому обратился сюда. Писал как в хелпе:

Код:
NDSolve[{y''[t] == x''[t]*Tan[\[Theta][t]], \[Theta]''[t] == 0,
   x''[t] == Cos[\[Theta][t]]*Subscript[\[Phi], 1]'' [t],
   x''[t] == Cos[\[Theta][t]]*Subscript[\[Phi], 2]'' [t],
   x''[t] == Cos[\[Theta][t]]*Subscript[\[Phi], 3]'' [t],
   x''[t] == Cos[\[Theta][t]]*Subscript[\[Phi], 4]'' [t],
   x''[t]*2 ==
    Cos[\[Theta][t]]*(x'[t]*Sin[\[Theta][t]] -
       y'[t]*Cos[\[Theta][t]])*\[Theta]'[t], \[Theta][0] == 0,
   x[0] == 0, y[0] == 0, \[Theta]'[0] == 1, x'[0] == 1, y'[0] == 1,
   Subscript[\[Phi], 1][0] == 0, Subscript[\[Phi], 2][0] == 0,
   Subscript[\[Phi], 3][0] == 0, Subscript[\[Phi], 4][0] == 0,
   Subscript[\[Phi], 1]'[0] == 0, Subscript[\[Phi], 2]'[0] == 0,
   Subscript[\[Phi], 3]'[0] == 0,
   Subscript[\[Phi], 4]'[0] == 0}, {y[t], x[t], \[Theta][t],
   Subscript[\[Phi], 1][t], Subscript[\[Phi], 2][t],
   Subscript[\[Phi], 3][t], Subscript[\[Phi], 4][t]}, {t, 0, 50},
  MaxSteps -> 3000];


Выдает следующее:
Код:
Syntax::sntxf: "Cos[\[Theta][t]]*Subscript[\[Phi], 1]''" cannot be followed by "[t]".
Syntax::tsntxi: "[t]" is incomplete; more input is needed.
Syntax::sntxi: Incomplete expression; more input is needed.


В общем, буду премного благодарен, если поможете решить эту систему.

 
 
 
 
Сообщение27.03.2011, 10:47 
В математика 7.0 приведенный текст работает. Можно попробовать эту строчку переписать, вдруг там какой символ непечатаемый вкрался в текст.

Зачем, кстати, четыре одинаковых уравнения на фи с разными индексами? Решения одинаковые будут.

 
 
 
 
Сообщение27.03.2011, 14:17 
Аватара пользователя
Уважаемый Vince Diesel, не могли бы Вы привести здесь полученное решение? С Mathematica я не знаю сколько еще буду возиться, а узнать верно ли составлена система и каково решение крайне хотелось бы сейчас.
Вот вывод в виде графиков:

Код:
ParametricPlot[{x[t], y[t]}, {t, 0, 50}];
ParametricPlot[{t, \[Theta][t]}, {t, 0, 50}];
ParametricPlot[{t, Subscript[\[Phi], 1][t]}, {t, 0, 50}];

 
 
 
 
Сообщение27.03.2011, 15:24 
Точнее, с такого кода
Код:
sl = NDSolve[{y''[t] == x''[t]*Tan[\[Theta][t]], \[Theta]''[t] == 0,
   x''[t] == Cos[\[Theta][t]] \[Phi]''[t],
   x''[t]*2 ==
    Cos[\[Theta][t]]*(x'[t]*Sin[\[Theta][t]] -
       y'[t]*Cos[\[Theta][t]])*\[Theta]'[t], \[Theta][0] == 0,
   x[0] == 0, y[0] == 0, \[Theta]'[0] == 1, x'[0] == 1,
   y'[0] == 1, \[Phi][0] == 0, \[Phi]'[0] == 0}, {y[t],
   x[t], \[Theta][t], \[Phi][t]}, {t, 0, 500}, MaxSteps -> 6000]

Код:
ParametricPlot[{x[t], y[t]} /. sl, {t, 0, 500}]
Plot[\[Phi][t] - t /. sl, {t, 0, 100}]

получатся графики. На первом кривая движется против часовой стрелки в кольце с центром где-то $(-3,4)$ и радиусом между 5 и 5.5. За $0\le t\le500$ кривая почти полностью заштиховывает кольцо в масштабе по умолчанию.
Координаты центра можно считать так:
Код:
cx = Integrate[x[t] /. sl, {t, 0, 500}]/500
cy = Integrate[y[t] /. sl, {t, 0, 500}]/500
-2.943414308231053
4.000570682722155
На втором видно нечто, похожее на синусоиду, меняющуюся от -2.7 до 0.7. А $\theta(t)=t$.

 
 
 
 
Сообщение27.03.2011, 20:30 
Аватара пользователя
У меня Ваш код заработал! Хм, интересная картина получается. Огромное спасибо за помощь!

 
 
 [ Сообщений: 5 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group