2014 dxdy logo

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

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




Начать новую тему Ответить на тему
 
 Вопрос к тем, кто разбирается в "Mathematica"е
Сообщение18.10.2006, 23:13 


18/10/06
2
Ребята!

Подскажите, пожалуйста, кто знает, как заставить Математику решить диффур в циклическом порядке (чтобы она, например, записывала значения в массив, при каждом шаге)

У меня чего то не получается - в цикле решать не хочет. А в единичном порядке решает, т.е.
без цикла. Подскажите, кто знает, можно ли её заставить или нет?
Например такое:

Цитата:
V = 5 * 10^5
d = 1.5 / 2
k = 10
b = 10^15 * k^(10/7)
T = 3.16 * 10^7 * 5 * 10^5
PERIOD = T
difp := p' [t] == b * p[t]^(1/14) * Cos[hi[t]]^(2*d)
difhi := hi ' [t] ==b* ( p[t])^(1/14) * Sin[hi[t]] * Cos[hi[t]]^(2*d - 1)
dif := {difp, difhi, p[ 0] == 0.02, hi[0] == 0.1}

For[ z = 1, z < 10, z = z + 1,
sover = NDSolve[dif, {p[t], hi[t]}, {t, 0, T];
gt[t_] = Evaluate[hi[t] /. %];
Plot[gt[t] , {t, 0, T}];
gt[PERIOD][[1]]]

 Профиль  
                  
 
 Re: Вопрос к тем, кто разбирается в "Mathematica"е
Сообщение19.10.2006, 00:54 


10/08/06
6
Из "Баголовка"
Ogre7 писал(а):
У меня чего то не получается - в цикле решать не хочет. А в единичном порядке решает, т.е.
без цикла. Подскажите, кто знает, можно ли её заставить или нет?

У Вас не получается по многим причинам:
- в теле цикла не хватает одной фигурной скобки при задании интервала интегрирования;
- даже если решать систему не в цикле, то результат лежит в интервале от нуля до 1.6x10^-16, а это очень маленький интервал;
- если Вы используете gt[PERIOD][[1]]] как двумерный массив, то это неправильно, поскольку, как минимум, нельзя в качестве индекса массива использовать вещественное число PERIOD;
- для накопления значений лучше использовать списки.
Цитата:
V = 5*10^5;
d = 1.5/2;
k = 10;
b = 10^15*k^(10/7);
T = 3.16*10^7*5*10^5;
PERIOD = T;
difp := p'[t] == b*p[t]^(1/14)*Cos[hi[t]]^(2*d);
difhi := hi'[t] == b*(p[t])^(1/14)*Sin[hi[t]]*Cos[hi[t]]^(2*d - 1);
dif := {difp, difhi, p[0] == 0.02, hi[0] == 0.1};
gt = {};
For[z = 1, z < 10, z = z + 1, sover = NDSolve[dif, {p[t], hi[t]}, {t, 0, T}];
gt = Append[gt, Evaluate[hi[t] /. sover]];
];

После этого можно обращаться к элементам списка по индексам: gt[[1]], gt[[2]],.... Каждый элемент - решение.

Вы не расскажете, для чего десять раз подряд решать одну и ту же систему дифференциальных уравнений?

 Профиль  
                  
 
 to Zlog
Сообщение19.10.2006, 08:43 


18/10/06
2
Огромное спасибо :P . Очень ценные замечания.
Сегодня же попробую.

ПС. На самом деле, я скобку использовал просто, при наборе в форуме забыл.

Систему, предпологается решать произвольное число раз. Короче говоря, просто получить выборку по аргументам и значениям функций. Потом нарисовать и посмотреть, что получается.

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

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



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

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


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

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