Mathematica NDSolve выдает ошибку

Мне нужно решить дифференциальное уравнение вида w'=g(t,w(t)), где g определяется следующим образом

g[t_, w_] := {f1[t, {w[[3]], w[[4]]}], f2[t, {w[[3]], w[[4]]}], w[[1]],w[[2]]};

и f1, f2

f1[t_, y_] := Sum[\[Mu][[i]] (s[[i]] - y)/Norm[s[[i]] - y]^2, {i, 1, 5}][[1]];

f2[t_, y_] := Sum[\[Mu][[i]] (s[[i]] - y)/Norm[s[[i]] - y]^2, {i, 1, 5}][[2]];

Все остальное определяется правильно и не является причиной ошибки. Тем не менее, когда я использую

sout = NDSolve[{y'[tvar] == g[tvar, y[tvar]], 
y[0] == {Cos[Pi/6], Sin[Pi/6], 0, 0}}, y, {tvar, 0, 2}, Method -> "ExplicitRungeKutta"];

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

Part::partw: Part 3 of y[tvar] does not exist.
Part::partw: Part 4 of y[tvar] does not exist.

Я просмотрел другие вопросы, и ни один из них не решил эту проблему.


person Augusto Peres    schedule 14.12.2017    source источник
comment
настроить так, чтобы mathematica понимала, что y является векторной функцией, сложно. см. здесь mathematica.stackexchange.com/q/78641/2079 и спросите на этом сайте, нужна ли вам дополнительная помощь   -  person agentp    schedule 15.12.2017


Ответы (1)


Вы хотите найти функцию в $R^4$, удовлетворяющую дифференциальному уравнению.

Я не думаю, что DSolve и NDSolve имеют стандартный способ манипулирования векторными дифференциальными уравнениями, за исключением представления каждого компонента с явным именем или индексом для измерений.

Вот рабочий пример, который можно выполнить без указания метода в измерении 4 с обозначениями, аналогичными вашей проблеме:

sout={w1[t],w2[t],w3[t],w4[t]} /. NDSolve[{
  w1'[t]== t*w2[t],
  w2'[t]== 2*t*w1[t],
  w3'[t]==-2*w2[t]+w1[t],
  w4'[t]== t*w3[t]-w1[t]+w2[t],

  w1[0]==0,
  w2[0]==1,
  w3[0]==1,
  w4[0]==0
},{w1[t],w2[t],w3[t],w4[t]},{t,0,2}]


ParametricPlot[{{sout[[1, 1]], sout[[1, 3]]}, {sout[[1, 2]], sout[[1, 4]]}}, {t, 0, 2}]

Думаю, вы сможете адаптировать этот рабочий пример под свои нужды.

Я не использовал вашу исходную задачу, так как хотел сосредоточиться на спецификации Mathematica, а не на математике вашего уравнения. Здесь задействованы константы, такие как Mu и s, которые вы не указываете.

person ogerard    schedule 16.12.2017