最初的条件与一个非线性颂Mathematica
-
28-09-2019 - |
题
我试图用数学的NDSolve[]计算大地测量沿领域使用联接的颂歌:
x" - (x" . x) x = 0
问题是,我只能进入初始条件x(0)和x'(0)和解是满意的解决方案,其中x"=0.问题是,我的大地测量在该领域具有初始条件,x"(0)=-x(0),这我不知道怎么告诉mathematica。如果我将这个作为条件,它说我加入真实清单的条件。
这里是我的代码:
s1 = NDSolve[{x1''[t] - (x1[t] * x1''[t] + x2[t] * x2''[t] + x3[t]*x3''[t]) * x1[t] == 0, x2''[t] - (x1[t] * x1''[t] + x2[t] * x2''[t] + x3[t]*x3''[t]) * x2[t] == 0, x3''[t] - (x1[t] * x1''[t] + x2[t] * x2''[t] + x3[t]*x3''[t]) * x3[t] == 0, x1[0] == 1, x2[0] == 0, x3[0] == 0, x1'[0] == 0, x2'[0] == 0, x3'[0] == 1} , { x1, x2, x3}, {t, -1, 1}][[1]]
我要修改,这样,最初的加速度不是零,但是 -x(0)
.
感谢
解决方案 2
我修复了这个问题通过一个数学的重排而不是解决我原来的问题:
让V(t)是一个向量场沿x(t)。
x.V=0意味着d/dt(x。V)=(x'。V)+(x。V')=0
这样的程D/dt V=V'-(x。V')x=V'+(x'。V)拥有x 这意味着大地测量式变为:x"+(x'。x')x=0所以它可以解决使用的初始条件,我最初了。
多谢了杰纳斯的经历,并指出各种各样的问题,我有包括可怕的代码布局,我学到了很多,通过重新编写。
其他提示
好了,因为错误消息说--NDSolve只接受最初的条件衍生物的命令严格低于最大的订单中出现的颂歌。
我有一种感觉,这更是一个数学问题。数学上, {x''[0]=-x0, x[0]==x0}
, 不界定一个独特的解决方案-你要做的就沿线的东西 {x0.x''[0]==-1, x[0]==x0, x'[0]-x0 x0.x'[0]==v0}
该工作(NDSolve仍然会失败的同样的误差)。你知道你只会得到一大圈的部领域,对吗?
顺便说一下,这里是我怎么会已经编写了你的例子:
x[t_] = Table[Subscript[x, j][t], {j, 3}];
s1 = NDSolve[Flatten[Thread /@ #] &@{
x''[t] - (x''[t].x[t]) x[t] == {0, 0, 0},
x[0] == {1, 0, 0},
x'[0] == {0, 0, 1}
}, x[t], {t, -1, 1}]
不隶属于 StackOverflow