2012-04-29 4 views
0

У меня есть вопрос о функции NDSolve в Mathematica. У меня есть генератор, определяемый этих два уравнений:Mathematica NDSolve

x' = v 
v' = -x - u*v^3 

где и есть некоторые постоянные.

Как создать NDSolve, который разрешает это? Я попытался следующий код (он должен зависеть от времени), но он не работает:

eq1 = x'[t] == v; 
eq2 = v' == -x[t] - u*v^3; 
eq3 = x[0] == 2; 

(начальное смещение 2m).

s = NDSolve[{eq1, eq2, eq3}, x, {t, 0, 30}] 

Большое спасибо ...

+0

Если у вас есть дополнительные вопросы, большинство экспертов здесь перешли к [Mathematica.se]. – rcollyer

ответ

1

You необходимо заметить, что первое уравнение, однажды дифференцированное по отношению к t, может быть использовано для замены v[t]. Но тогда второе уравнение становится ОДУ второго порядка и требует дополнительного дополнительного начального условия. Мы дадим

v[0]==x'[0]==some number 

Тогда после решения этого ОДУ для x вы можете восстановить v[t]==x'[t] я дам вам решение в срок в Manipulate так, что геометрически ситуация становится ясно.

(* First equation *) 
v[t] = x'[t]; 
(* 
    Differentiate this equation once and substitute 
    for v[t] in the second equation 
*) 
Manipulate[ 
With[{u = Constant, der = derval}, 
    res = NDSolve[{x''[t] == -x[t] - u*x'[t]^3, x[0.] == 2,x'[0.] == der}, 
    x, {t, 0., 30.}] // First; 
    Plot[Evaluate[{x[t], v[t]} /. res], {t, 0, 30}, PlotRange -> All, 
    Frame -> True,Axes -> None, ImageSize -> 600] 
    ], 
{{Constant, 0.,[email protected](u)}, 0.,3, .1}, 
{{derval, -3., [email protected](v[0] == x'[0])}, -3, 3, .1} 
] 

enter image description here

Надеется, что это помогает вам, но в следующий раз, прежде чем задать вам нужно освежить теорию первой, как вы можете видеть вопрос, который вы просили относится очень простыми и элементарная математика не программирования Mathematica. Удачи!!

+0

Спасибо! Наверное, я не понял на 100% того, что мне пришлось сделать ... извините за это. В любом случае - отличная работа! – Smajl

1

Необходимо указать числовое значение для вашего u, а также в качестве начального условия для v[t]:

u=1.0; 
solution=NDSolve[{x'[t]==v[t], v'[t]==-x[t]-u v[t]^3,x[0]==2,v[0]==-1},{x,v},{t,0,1}] 

Plot[{solution[[1,1,2]][t],solution[[1,2,2]][t]},{t,0,1}] 

enter image description here

Смежные вопросы