我想用 bodegraph 绘制一个四阶系统:
G(s) = s^2/((s+3)^4)
但我不知道如何用bodegraph设置传递函数。
\documentclass[border=5mm]{standalone}
\usepackage[miktex]{gnuplottex}
\usepackage{pgfplots}
\usepackage{tikz}
\usepackage{bodegraph}
\usetikzlibrary{intersections}
\usetikzlibrary{calc}
\usetikzlibrary{positioning}
\usepackage{siunitx}
\usepackage{gnuplottex}
\renewcommand{\UnitedB}{\def\Unitx{rad/s}}
\begin{document}
\begin{tikzpicture}[xscale=20/4,yscale=4/30]
\begin{scope}[yscale=4/6]
\semilog{-1}{1}{-50}{-10}
\BodeGraph{-1:1}{20*log10(abs(10**t**2/sqrt(10**t*+3)**4))}
\end{scope}
\begin{scope}[yshift=-50cm,yscale=4/25]
\OrdBode{30}
\semilog{-1}{1}{-180}{0}
\BodeGraph{-1:1}{20*log10(abs(10**t**2/sqrt(10**t*+3)**4))}
\end{scope}
\end{tikzpicture}
\end{document}
答案1
如果您使用 bodegraph,则必须使用 Bodegraph 的特定命令来绘制函数。Bodegraph 只能跟踪基本函数(一阶、二阶、积分器),对于您的情况,只需记住您的 4 阶函数是建立在对数图中的,就像四个一阶函数和两个导数之和(在对数积分中带有负号)。
\documentclass[border=5mm]{standalone}
%\usepackage[miktex]{gnuplottex}
\usepackage{pgfplots}
\usepackage{tikz}
\usepackage{bodegraph}
\usetikzlibrary{intersections}
\usetikzlibrary{calc}
\usetikzlibrary{positioning}
\usepackage{siunitx}
\usepackage{gnuplottex}
\renewcommand{\UnitedB}{\def\Unitx{rad/s}}
\begin{document}
\begin{tikzpicture}[xscale=20/5]
\begin{scope}[yscale=4/60]
\semilog{-1}{2}{-100}{-10}
\BodeGraph{-1:2}{
-2*\IntAmp{1}
+4*\POAmp{0.3333}{0.3333}
}
\end{scope}
\begin{scope}[yshift=-12cm,yscale=1/45]
\OrdBode{30}
\semilog{-1}{2}{-180}{180}
\BodeGraph{-1:2}{
-2*\IntArg{1}
+4*\POArg{0.3333}{0.3333}
}
\end{scope}
\end{tikzpicture}
\end{document}