微分方程解中的箭头数量有限

微分方程解中的箭头数量有限

我试图编辑这个答案有点,我想在红线和蓝线上放 5 或 6 个箭头,但我做不到。我唯一能做的就是:(有很多箭头出来,这不是我想要的)有什么想法可以解决这个问题吗?

我也尝试过让红线和蓝线尊重球体,也就是说,当图形从球体后面经过时,它会更加透明,而当它在前面时则是正常的,但我没有实现任何目标。

\documentclass{standalone}

\usepackage{pst-ode,pst-3dplot}

\begin{document}

\begin{pspicture}(-1.1,-1.1)(1.1,1.1)%

% Sphere
\pstThreeDSphere[linewidth=0.0001pt,strokeopacity=0.3,linecolor=gray,SegmentColor={[cmyk]{0.0,0.0,0.0,0.2}}](0,0,0){1}
  
% lower half-space
\pstODEsolve[algebraic]{XYZa}{0 1 2}{0}{35}{500}{1e-9 0.0 -1.0}{
  -x[1]+x[0]*x[2]^2 |
  x[0]+x[1]*x[2]^2 |
  -x[2]*(x[0]^2+x[1]^2)
}

\psset{arrowscale=0.4}
\listplotThreeD[linecolor=blue,linewidth=0.3pt,ArrowInside=->,ArrowInsidePos=1]{XYZa}

% upper half-space
\pstODEsolve[algebraic]{XYZb}{0 1 2}{0}{35}{500}{1e-9 0.0 1.0}{
  -x[1]+x[0]*x[2]^2 |
  x[0]+x[1]*x[2]^2 |
  -x[2]*(x[0]^2+x[1]^2)
}
  \listplotThreeD[linecolor=red,linewidth=0.4pt,ArrowInside=->,ArrowInsidePos=1]{XYZb}
\end{pspicture}

\end{document}

输出: 在此处输入图片描述

答案1

这解决了问题的第一个难题,得到了有限数量的箭头。

可以使用空的初始条件参数调用该命令\pstODEsolve。然后,它使用上一次调用中最后计算的状态向量作为当前调用的初始条件。请参阅pst-ode手动的,第 3 页倒数第二段。

此方法用于将积分区间划分为几个子区间。请注意,初始区间选择得相当大,0 ≤≤ 20,因为解在极点处不会发展得那么快;后续间隔为 Δ=1。

在此处输入图片描述

lualatex用或latex+ dvips+排版ps2pdf

\documentclass{standalone}

\usepackage{pst-ode,pst-3dplot}

\begin{document}

\begin{pspicture}(-1.1,-1.1)(1.1,1.1)%

% Sphere
\pstThreeDSphere[linewidth=0.0001pt,strokeopacity=0.3,linecolor=gray,SegmentColor={[cmyk]{0.0,0.0,0.0,0.2}}](0,0,0){1}

% lower half-space
% initial interval 0 ≤ t ≤ 20
\pstODEsolve[algebraic]{XYZ}{0 1 2}{0}{20}{150}{1e-9 0.0 -1.0}{
  -x[1]+x[0]*x[2]^2 |
  x[0]+x[1]*x[2]^2 |
  -x[2]*(x[0]^2+x[1]^2)
}
\listplotThreeD[linecolor=blue,linewidth=0.4pt,arrows=->]{XYZ}
% subsequent intervals Δt=1 
\multido{\iStart=20+1,\iEnd=21+1}{11}{
  \pstODEsolve[algebraic]{XYZ}{0 1 2}{\iStart}{\iEnd}{50}{ }{
    -x[1]+x[0]*x[2]^2 |            % empty init. cond. ---^
    x[0]+x[1]*x[2]^2 |
    -x[2]*(x[0]^2+x[1]^2)
  }
  \listplotThreeD[linecolor=blue,linewidth=0.4pt,arrows=->]{XYZ}
}

% upper half-space
\pstODEsolve[algebraic]{XYZ}{0 1 2}{0}{20}{150}{1e-9 0.0 1.0}{
  -x[1]+x[0]*x[2]^2 |
  x[0]+x[1]*x[2]^2 |
  -x[2]*(x[0]^2+x[1]^2)
}
\listplotThreeD[linecolor=red,linewidth=0.4pt,arrows=->]{XYZ}
\multido{\iStart=20+1,\iEnd=21+1}{11}{
  \pstODEsolve[algebraic]{XYZ}{0 1 2}{\iStart}{\iEnd}{50}{}{
    -x[1]+x[0]*x[2]^2 |
    x[0]+x[1]*x[2]^2 |
    -x[2]*(x[0]^2+x[1]^2)
  }
  \listplotThreeD[linecolor=red,linewidth=0.4pt,arrows=->]{XYZ}
}
\end{pspicture}

\end{document}

相关内容