Сечение Пуанкаре плоскостью

Форум пользователей пакета Maple

Модератор: Admin

Nusha341
Сообщения: 1
Зарегистрирован: Ср мар 06, 2019 10:32 am

Сечение Пуанкаре плоскостью

Сообщение Nusha341 » Ср мар 06, 2019 10:05 pm

Добрый день! Подскажите, пожалуйста, как можно реализовать задачку.
Имеется система из трех дифференциальных уравнений. Делаю массив из точек и по ним строю 3d график. Хочу сделать сечение Пуанкаре для моего графика (если грубо, то с периодом 2Pi по z делается как бы вырез плоскостью xy из моего графика.) Не могу сообразить, как это сделать. В результате нужно получить плоскость xy с одной, двумя точками, где как раз проходят линии.

restart;
with(linalg):
with(stats):
with(plots);
a:=0.105:
b:=0.036:
c:=10:
d:=0.013:
first:=diff(x(t),t)=(1+x(t)^2+22*x(t)^4)/((1+x(t)^2+2*x(t)^4)*(1+y(t)^4))-a*x(t)+c*sin(z(t)):
second:=diff(y(t),t)=0.2*(1+x(t)^2+22*x(t)^4)/((1+x(t)^2+2*x(t)^4)*(1+y(t)^4))-0.2*b*y(t):
firth:=diff(z(t),t)=d:
sys:=first,second,firth;
ic:=x(0)=0.85, y(0)=2.57, z(0)=0;
dsol:=dsolve({sys,ic},numeric,method=ck45,maxfun=5000000);
T:=500; N:=2000; h:=T/N;
for i from 0 to N do ds:=dsol(h*i); T[i]:=rhs(ds[1]); X[i]:=rhs(ds[2]); Y[i]:=rhs(ds[3]); Z[i]:=rhs(ds[4]) od:
XX:=[seq(X[i],i=0..N)]:
YY:=[seq(Y[i],i=0..N)]:
ZZ:=[seq(Z[i],i=0..N)]:
TT:=[seq(T[i],i=0..N)]:
pointplot3d(XX, YY, ZZ, symbol = solidsphere, symbolsize = 15, color = black, labels = [x, y, z])

Markiyan Hirnyk
Сообщения: 1294
Зарегистрирован: Вс дек 04, 2011 11:07 pm

Re: Сечение Пуанкаре плоскостью

Сообщение Markiyan Hirnyk » Чт мар 07, 2019 9:07 am

Для этого надо знать гамильтонан (см. poincare и другие команды пакета Poincare). Я не специалист в этом материале и больше ничем помочь не могу.