Решение двумерных дифференциальных уравнений движения - PullRequest
2 голосов
/ 21 октября 2010

Я пытаюсь решить действительно простую задачу определения положения объекта под силой {k1 + k2 * y, k3 * t}. Вот что я вхожу в Mathematica 7:

DSolve[{
  x''[t]*m == k1 + k2*y[t],
  y''[t]*m == k3*t,
  y'[0] == 0,
  y[0] == 0,
  x'[0] == 0,
  x[0] == 0
}, {x[t], y[t]}, t]

и я получаю эту ошибку:

DSolve :: deqn: уравнение или список уравнений, ожидаемых вместо True в первом аргументе {-C m (x ^ [Prime]) [t] ^ 2 == k1 + k2 y [t], m (y ^ [Prime] [Prime]) [t] == ​​k3 t, True, y [0] == 0, True, x [0] == 0}.

Кажется, что Mathematica недовольна граничными условиями x '[0] == 0. Почему это так?

Ответы [ 3 ]

3 голосов
/ 21 октября 2010

Это сработало так, как вы печатали ... попробуйте сделать это в новой записной книжке

alt text

2 голосов
/ 21 октября 2010

Когда я вырезаю и вставляю код, который вы разместили в M'ma 7.0.1 и оцениваю, я получаю результат

{{x[t] -> (60*k1*m*t^2 + k2*k3*t^5)/(120*m^2), 
     y[t] -> (k3*t^3)/(6*m)}}

Ваше сообщение об ошибке M'ma говорит мне, что на самом деле у вас есть только одно простое число на x (т.е. x'[t]) в вашем фактическом вводе M'ma. Уравнение, которое оно приводит, -C m (x^[Prime])[t]^2==k1+k2 y[t], не соответствует первой строке вашего кода выше.

I также подозревают, что x '[0] и y' [0] были ранее присвоены нулю, что приводит к тому, что x'[0]==0, ..., y'[0]==0 приводит к коллапсу True. Лучший способ проверить это: убить ядро ​​и заново оценить приведенные выше данные (после исправления опечаток).

0 голосов
/ 21 октября 2010

Оба, Велисарий и Эрик Тауэрс, предложили убить ядро ​​и провести повторную оценку.Скорее всего, они правы в том, что у чего-то есть предварительное определение.Вы можете проверить, верно ли это через

?<variable name>

. В качестве альтернативы уничтожению ядра, я бы предложил очистить их значения через

Clear[x, y, k1, k2, k3, m]

Или, если вы действительно хотите избавитьсяУ любого определения переменной есть Remove.Таким образом, вам не придется пересчитывать что-либо еще из текущего сеанса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...