![耦合和高阶 ODE](https://linux22.com/image/412967/%E8%80%A6%E5%90%88%E5%92%8C%E9%AB%98%E9%98%B6%20ODE.png)
我想绘制在重力场中发射的球的轨迹,我们根据二次定律考虑空气阻力:
为了更简单起见,我取 alpha = 0。因此运动方程为:
我特别想绘制速度:
我们可以将运动方程重写为:
所以我最后想绘制出我的球的轨迹。
这些值是:
t0 = 0 秒 | te = 10 秒 | m = 58e-3 千克 | k = 1.15e-3 SI | z0 = 200 米 | x0 = 0 米 | vx0 = 10 毫秒-1 |vz0 = 0 毫秒-1 | g = 9.81 毫秒-2
我不太确定 LaTeX 的语法。我宁愿用pst-ode
。但任何能生成好的 PDF 的方法都会受到欢迎。
有人能帮帮我吗?
编辑:感谢@AlexG 的回答。我想分享我最终的结果:
抱歉我法语不好。
答案1
耦合的高阶微分方程完全没有问题。
首先,我们将原来的两个二阶系统转换为四个一阶 ODE 系统:
然后,我们将所有内容放在一起(4 个 ODE,4 个初始条件)。请注意,\pstODEsolve
我们可以对解向量进行后期计算(计算 |五| 来自其组件)在写入输出表时。
排版如下pdflatex --shell-escape
:
\documentclass[varwidth]{standalone}
%%%%%%%%%%%%%%%%%%%%%%% solve ODE in auxiliary document %%%%%%%%%%%%%%%%%%%%%%%%
\begin{filecontents}[overwrite]{solve.tex}
\documentclass{article}
\usepackage{pst-ode}
\def\vZero{10} % initial velocity
\def\alpha{0} % elevation angle
\begin{document}
\pstODEsolve[algebraicAll,saveData]{table}{
t | x[0] | x[2] | sqrt(x[1]^2+x[3]^2) % save in `table2.dat': t, x, z, |v|=sqrt(v_x^2 + v_z^2)
}{ 0 }{ 10 }{ 250 }{ % t_0, t_e, N=250
0 |
\vZero * cos(\alpha) | % initial conditions x(0), v_x(0), z(0), v_z(0)
200 |
\vZero * sin(\alpha)
}{
x[1] | % RHS, (4 equations)
-1.15*10^-3/(58*10^-3) * sqrt(x[1]^2+x[3]^2) * x[1] |
x[3] |
-1.15*10^-3/(58*10^-3) * sqrt(x[1]^2+x[3]^2) * x[3] - 9.81
}
dummy text
\end{document}
\end{filecontents}
\immediate\write18{latex solve}
\immediate\write18{dvips solve}
\immediate\write18{ps2pdf -dNOSAFER solve.ps}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{pgfplots}
\pgfplotsset{compat=1.17}
\begin{document}
Trajectory:\\[1ex]
\begin{tikzpicture}
\begin{axis}[
% axis equal,
xlabel=$x$,
ylabel=$z$,
ylabel style={rotate=-90}
]
\addplot [blue] table [x index=1, y index=2] {table.dat};
\end{axis}
\end{tikzpicture}
Velocity:\\[1ex]
\begin{tikzpicture}
\begin{axis}[
xlabel=$t$,
ylabel=$|\mathrm{v}|$,
ylabel style={rotate=-90}
]
\addplot [blue] table [x index=0, y index=3] {table.dat};
\end{axis}
\end{tikzpicture}
\end{document}