2014 dxdy logo

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

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




На страницу Пред.  1, 2
 
 
Сообщение29.11.2008, 00:41 
Аватара пользователя
Цитата:
Leierkastenmann
А если мне нужно решать методом Рунги - Кутта и погрешности должны быть определенные можно это задать?


Выбирайте какой вам нужен Рунге-Кутта и задавайте его опцией Method-> в NDSolve. Доступны следующие методы:
Код:
Methods
ExplicitRungeKutta
ImplicitRungeKutta
SymplecticPartitionedRungeKutta
Controller methods
Composition and Splitting
DoubleStep
EventLocator
Extrapolation
FixedStep
OrthogonalProjection
Projection
StiffnessSwitching
Submethods
ExplicitEuler
ExplicitMidpoint
ExplicitModifiedMidpoint
LinearlyImplicitEuler
LinearlyImplicitMidpoint
LinearlyImplicitModifiedMidpoint
LocallyExact


Для точности есть опции AccuracyGoal, PrecisionGoal, но это математическая точность. Плюс еще можно задавать всякие опции, связанные с шагом. Откройте хэлп к NDSolve и там все расписано, что есть и какие возможности.

 
 
 
 
Сообщение09.12.2008, 13:23 
Leierkastenmann

Прошу прощения но что-то опять не так. График у меня не строится. Получается прямая, вместо закручивающейся окружности.

Вот код:
Код:
myeps = 0.1;
mymu = 2;
myM = 1;

sol = NDSolve[
  {
   x'[t] == -y[t] +
     Which[x[t] + z[t] < -myeps, -myeps^3, x[t] + z[t] < myeps,
      mymu*(x[t] + z[t]), x[t] + z[t] > myeps, myeps^3],
   y'[t] ==
    x[t] + Which[x[t] + z[t] < -myeps, -myeps^3, x[t] + z[t] < myeps,
      mymu*(x[t] + z[t]), x[t] + z[t] > myeps, myeps^3],
   z'[t] == -z[t] +
     Which[x[t] + z[t] < -myeps, -myeps^3, x[t] + z[t] < myeps,
      mymu*(x[t] + z[t]), x[t] + z[t] > myeps, myeps^3],
   x[0] == 0, y[0] == -0.8165, z[0] == 0
   },
  {x, y, z},
  {t, 0, 1256.6371},
  Method -> {"ExplicitRungeKutta", "DifferenceOrder" -> 4},
  InterpolationOrder -> All,
  StartingStepSize -> 0.0001
  ]

ParametricPlot[{x[t], y[t]} /. sol, {t, 0, 1256.6371},
PlotRange -> All]


еще предупреждение кидает:
Код:
NDSolve::mxst: Maximum number of 10000 steps reached at the point t == 166.6857351451608`. >>

Но t нужно больше!

 
 
 
 
Сообщение09.12.2008, 20:48 
Аватара пользователя
Ну раз кидает такое предупреждение, увеличьте количество шагов, сделайте MaxSteps например сто тысяч. И получите при построении графика вот такую штуку
Изображение

 
 
 
 
Сообщение10.12.2008, 00:20 
Leierkastenmann
Хорошо! А что там с точностью? Я имею в виду погрешность вычисления! Такие как обсалютная и относительная ошибка вычисления для метода? Читал help не нашел такого!

 
 
 
 
Сообщение17.03.2009, 22:21 
Аватара пользователя
Точность управляется опциями AccuracyGoal и PrecisionGoal. Или интересует что-то иное?

 
 
 [ Сообщений: 20 ]  На страницу Пред.  1, 2


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