Wolfram mathematica Mathematica解决给定误差

Wolfram mathematica Mathematica解决给定误差,wolfram-mathematica,runge-kutta,Wolfram Mathematica,Runge Kutta,我需要解一个形式为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

我需要解一个形式为
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.

我看了其他问题,但没有一个能解决这个问题。

你想在$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
,您没有给出。

设置mathematica,以便了解
y
是向量函数,这是一个棘手的问题。查看此处并在该网站上询问您是否需要更多帮助