2014 dxdy logo

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

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




 
 Анимация данных
Сообщение26.11.2008, 01:37 
Помоготе, пожалуйста, посоветуйте программу для наглядной интерпретации данных.
При решении задачи, у меня получается 4*3 координат (запись в файл *.dat), как функции от времени. Задача решалась численно, поэтому это просто таблица чисел: $time, x1,y1,z1, ... , x4,y4,z4$
Если конкретней, то это траектории движения ядер в молекуле. если строить в $3D$ - декартовой системе координат, выводить кривые - получается слишком много пересечений и сложно отслеживать эволюцию системы в целом. Желательно, чтобы в каждый последующий момент времени прог-ма стирала с экрана предыдущие точки и рисовала новую.

 
 
 
 
Сообщение26.11.2008, 19:49 
Аватара пользователя
Если знакомы с Mathematica, то можно попробовать Animate. Описание функции содержится в хэлпе, там же примеры использования. Только версия математики должна быть не ниже 6-й.

 
 
 
 
Сообщение16.03.2009, 23:06 
Поставил mathematiс v.7 for student
Animate не получается
Максимально приближенное к тому, что мне хочется в хэлпе нашел вот такое:

Код:
In[9]:= {sol, {steps}} =
Reap[FindMinimum[(x - 1)^2 + 100 (y - x^2)^2, {{x, -1}, {y, 1}},
   StepMonitor :> Sow[{x, y}]]]

Out[9]= {{0., {x -> 1.,
   y -> 1.}}, {{{-0.798884, 0.602235}, {-0.693066, 0.472618}, {-0.501627,
    0.218389}, {-0.401079, 0.152716}, {-0.203027,
    0.00395482}, {0.00719502, -0.0435943}, {0.217584, 0.00265073}, {0.418964,
    0.134094}, {0.606503, 0.331827}, {0.779368, 0.576986}, {0.938738,
    0.855671}, {1., 0.996247}, {1., 1.}}}}

Animate the progression of the solver:

In[10]:= ListAnimate[
Table[ListLinePlot[Take[steps, i], Mesh -> All,
   PlotRange -> {{-1, 1.1}, {-1, 1.1}}], {i, Length[steps]}]]


а как ее переписать на *.dat файл???

 
 
 
 
Сообщение17.03.2009, 22:15 
Аватара пользователя
Ну, например, сделайте так - выделите из своего массива списки координат каждого ядра, постройте каждую точку в 3D и заанимируйте это столько раз, сколько точек по времени nt
Код:
R1List =
R2List =
R3List =
R4List =

Animate[Graphics3D[{Point[R1[[i]]], Point[R2[[i]]],Point[R3[[i]]],Point[R4[[i]]]}, Axes -> True], {i, 1, nt}]


И будут ваши точечки прыгать в кубике :D
Это если по-простому. Можно не расчленяя массива сразу написать одно преобразование, которое выделит из начальной структуры массива нужные наборы примитивов. Сюда же навернуть раскраску точек или их разметку и любуйтесь :)

dat-файл импортируется в математику командой Import[путь_к_файлу], надо только чтобы он был дат именно дат в смысле математики, потому что если это просто текстовик, то она может не то сделать.

 
 
 
 
Сообщение17.03.2009, 23:29 
В массивах R1List, R2List, R3List, R4List я должен указать к каким именно столбцам моего исходного массива (*.dat файла) относятся координаты $x_1,y_1, \cdots, z_4$

Нечто подобное реализуется в Fortran`e, для аппроксимации зависимости... а вот с Математикой я слабо знаком :roll:

Leierkastenmann
Цитата:
надо только чтобы он был дат именно дат в смысле математики, потому что если это просто текстовик, то она может не то сделать.


мой файл состоит из больших и длинных колонок цифр. Такой *.dat подойдет??

 
 
 
 
Сообщение18.03.2009, 19:11 
Аватара пользователя
RiList - это списки координат i-го ядра для каждого момента времени.

Приведите сюда две-три строки из вашего дат-файла и я вам отвечу заимпортирует его математика или нет, а также на этом примере покажу соответствие с RiList.

 
 
 
 
Сообщение18.03.2009, 21:38 
Код:
  0.000   1.8025600000   0.0000000000   0.0000000000  -0.9012820000   1.5610700000   0.0000000000  -0.9012820000  -1.5610700000   0.0000000000   0.0000000000   0.0000000000   0.4960460000

  0.037   1.8025599985  -0.0000004642  -0.0000050073  -0.9012764763   1.5610699973   0.0000041123  -0.9012764292  -1.5610655184   0.0000005228  -0.0000021711  -0.0000025370   0.4960460005


вот это первые два значения...
пробел строки мделан мной сейчас.
читаются числа так: первое число в строке - $t$; второе --- $x_1$, третье $y_1$ ... тринадцатое --- $z_4$

Кроме "бесконечного" числа чисел в моем *.dat файле ничего нету.

 
 
 
 
Сообщение18.03.2009, 22:19 
Аватара пользователя
Больше ничего из вашего дат-файла и не надо. Тогда делаете таким манером:
Код:
data = Import[D:\\Temp\\ test.dat]

tList = Table[data[[i,1]],{i,Length[data]}]
R1List = Table[{data[[i,2]], data[[i,3]], data[[i,4]]},{i,Length[data]}]
R2List = Table[{data[[i,5]], data[[i,6]], data[[i,7]]},{i,Length[data]}]
R3List = Table[{data[[i,8]], data[[i,9]], data[[i,10]]},{i,Length[data]}]
R4List = Table[{data[[i,11]], data[[i,12]], data[[i,13]]},{i,Length[data]}]

nt = Length[tList]

Ну а дальше как я уже писал ранее. Ну и путь конечно же свой к файлу напишите, только именно с двумя слэшами.

Да, ну и в предыдущем моем сообщении ошибка была, надо конечно же
Код:
Animate[Graphics3D[{Point[R1List[[i]]], Point[R2List[[i]]],Point[R3List[[i]]],Point[R4List[[i]]]}, Axes -> True], {i, 1, nt}]

 
 
 
 
Сообщение18.03.2009, 23:06 
Код:
Syntax::sntxf: "E:" cannot be followed by " PEs3_time _xyz.dat".
Syntax::tsntxi: " PEs3_time _xyz.dat" is incomplete; more input is needed.
Syntax::sntxi: Incomplete expression; more input is needed.


Вот такие жалобы выдает. А чего ему more надо?
Пробовал в другое место (в корневой каталог диска E) положить --- сообщение тоже самое :?
Вроде все правильно набрал. Ну скобки закрыты правильно))) Синтаксис может матики я не знаю на 5 баллов, а вот структуру улавливаю)

Код:
data = Import[E : \\ PEs3_time _xyz.dat]
tList = Table[data[[i, 1]], {i, Lenght[data]}]
R1List = Table[  {data[[i, 2]], data[[i, 3]], data[[i, 4]]}, {i,  Lenght[data]}]
R2List = Table[{data[[i, 5]], data[[i, 6]], data[[i, 7]]}, {i,   Lenght[data]}]
R3List = Table[{data[[i, 8]], data[[i, 9]], data[[i, 10]]}, {i,   Lenght[data]}]
R4List = Table[{data[[i, 11]], data[[i, 12]], data[[i, 13]]}, {i,   Lenght[data]}]
nt = Lenght[tList]
Animate[Graphics3D[{Point[R1List[[i]]], Point[R2List[[i]]],Point[R3List[[i]]],Point[R4List[[i]]]}, Axes -> True], {i, 1, nt}]

 
 
 
 
Сообщение20.03.2009, 21:07 
Аватара пользователя
Я прошу прощения, но занимаясь копипастом, я совсем забыл про кавычки :oops:
Надо писать вот так
Код:
Import["E:\\PEs3_time_xyz.dat"]

Никаких пробелов там быть не должно.

 
 
 
 
Сообщение04.04.2009, 13:49 
Leierkastenmann

Никак в толк не возьму...
Код:
Table::iterb: Iterator {i,Lenght[{{0,-3.,0.,0.},{1,-2.9,0.,0.},{2,-2.8,0.,0.},{3,-2.7,0.,0.},{4,-2.6,0.,0.},{5,-2.5,0.,0.},{6,-2.4,0.,0.},{7,-2.3,0.,0.},{8,-2.2,0.,0.},{9,-2.1,0.,0.},<<50>>}]} does not have appropriate bounds. >>



Help по этому поводу говорит, что
Цитата:
This message is generated when an iterator specification includes an invalid lower limit, upper limit, or step size.

 
 
 
 
Сообщение04.04.2009, 15:10 
Аватара пользователя
Ulrih писал(а):
Leierkastenmann

Никак в толк не возьму...
Код:
Table::iterb: Iterator {i,Lenght[{{0,-3.,0.,0.},{1,-2.9,0.,0.},{2,-2.8,0.,0.},{3,-2.7,0.,0.},{4,-2.6,0.,0.},{5,-2.5,0.,0.},{6,-2.4,0.,0.},{7,-2.3,0.,0.},{8,-2.2,0.,0.},{9,-2.1,0.,0.},<<50>>}]} does not have appropriate bounds. >>



Help по этому поводу говорит, что
Цитата:
This message is generated when an iterator specification includes an invalid lower limit, upper limit, or step size.


У меня такое чувство, что я был пьян, когда писал :D Конечно не же не Lenght, а Length :oops:

 
 
 
 
Сообщение04.04.2009, 15:41 
Я тоже не люблю слова с окончанием gth...
Математика выделила синим, я и решил, что все в порядке :roll:

Всем спасибо за старания!

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


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