我想在 LaTeX 中绘制有理函数。我尝试了不同的方法,Tikz
但pgfplots
都不起作用。有很多不同的方法。通常会出现极点/渐近线等问题。
\frac{1}{x^2 - 7x - 30}
我正在寻找一种简单的绘图方法,但我也喜欢它的设计,它能\usetikzlibrary{datavisualization.formats.functions}
给我提供许多有用的图形选项。
谢谢
--
我的一些代码:
\documentclass[13pt,a4paper,headlines=6,headinclude=true]{scrartcl}
\usepackage{tikz,pgfplots}
\usetikzlibrary{datavisualization.formats.functions}
\begin{document}
\begin{tikzpicture}[yscale=.5, xscale=.5, scale=2]
\datavisualization
[school book axes,
legend={below,rows=1},
visualize as smooth line/.list={f1},
f1={style=blue, style=very thick,label in legend={text=$\frac{1}{x-1}$}},
%f2={style=green, style=very thick,label in legend={text=$\frac{1}{x^2 - 7x - 30}$}}
]
data [set=f1, format=function] {
var x : interval[-4:0.5];
func y = 1/(\value{x} - 1);
}data [set=f1, format=function] {
var x : interval[1.5:4];
func y = 1/(\value x - 1);
};
data [set=f2, format=function] {
var x : interval[12:20];
func y = 1/(\value{x}^2 - 7 \value{x} - 30);
};
\end{tikzpicture}
\end{document}
这导致
下一步,我现在有:
\begin{tikzpicture}[scale=1.5]
\begin{axis}[axis lines=middle,xmin=-20,xmax=20,ymin=-1.5,ymax=1.5,
extra x ticks={-2,2},
xlabel=$\scriptstyle x$,
ylabel=$\scriptstyle y$,
tick label style={font=\tiny},
legend style={font=\small,legend pos=outer north east,}]
\addplot+[no marks,blue,domain=-15:0.8,samples=150, thick] {1/(x - 1)};
\addplot+[no marks,blue,domain=1.2:15,samples=150, thick] {1/(x - 1)};
\addlegendentry{$\frac{1}{x-1}$}
\addplot+[no marks,red,domain=-15:-3.02,samples=150, thick] {1/((x)^2 - 7*x-30)};
\addplot+[no marks,red,domain=-2.98:9.98,samples=150, thick] {1/((x)^2 - 7*x-30)};
\addplot+[no marks,red,domain=10.02:15,samples=150, thick] {1/((x)^2 - 7*x-30)};
\addlegendentry{$\frac{1}{x^2 - 7x - 30}$}
\end{axis}
\end{tikzpicture}
如何在 xmin/xmax 轴间隔之间添加更多数字?例如,每 2 个整数写入一次?
答案1
和pgfplots
\documentclass[13pt,a4paper,headlines=6,headinclude=true]{scrartcl}
\usepackage{pgfplots}
\pgfplotsset{compat=1.12}
\begin{document}
\begin{tikzpicture}
\begin{axis}[axis lines=middle,xmin=-7,xmax=17,ymin=-1.5,ymax=1.5,xlabel=$\scriptstyle x$,ylabel=$\scriptstyle y$,tick label style={font=\tiny},legend style={font=\tiny,legend pos=outer north east,}]
\addplot+[no marks,domain=-10:0.5,samples=150] {1/(x - 1)};
\addlegendentry{$\frac{1}{x-1}$}
\addplot+[no marks,olive,domain=-7:-3.02,samples=150] {1/((x)^2 - 7*x-30)};
\addplot+[no marks,olive,domain=-2.98:9.98,samples=150] {1/((x)^2 - 7*x-30)};
\addplot+[no marks,olive,domain=10.02:15,samples=150] {1/((x)^2 - 7*x-30)};
\addlegendentry{$\frac{1}{x^2 - 7x - 30}$}
\end{axis}
\end{tikzpicture}
\end{document}
使用restrict y to domain=-10:10,
,您可以获得:
\documentclass[13pt,a4paper,headlines=6,headinclude=true]{scrartcl}
\usepackage{pgfplots}
\pgfplotsset{compat=1.12}
\begin{document}
\begin{tikzpicture}
\begin{axis}[axis lines=middle,xmin=-7,xmax=17,ymin=-1.5,ymax=1.5,xlabel=$\scriptstyle x$,ylabel=$\scriptstyle y$,tick label style={font=\tiny},legend style={font=\tiny,legend pos=outer north east,},restrict y to domain=-10:10,]
\addplot+[no marks,domain=-10:0.5,samples=150] {1/(x - 1)};
\addlegendentry{$\frac{1}{x-1}$}
\addplot+[no marks,olive,domain=-7:15,samples=150] {1/((x)^2 - 7*x-30)};
\addlegendentry{$\frac{1}{x^2 - 7x - 30}$}
\end{axis}
\end{tikzpicture}
\end{document}
对于危急情况,您可能还需要unbounded coords=jump,
紧接着restrict y to domain=-10:10,
。
对于编辑,您可以执行以下操作:
\documentclass[13pt,a4paper,headlines=6,headinclude=true]{scrartcl}
\usepackage{pgfplots}
\pgfplotsset{compat=1.12}
\begin{document}
\begin{tikzpicture}
\begin{axis}[axis lines=middle,
xmin=-8,xmax=18,
ymin=-1.6,ymax=1.6,
xtick={-6,-4,...,16},
ytick={-1.4,-1.2,...,1.4},
xlabel=$\scriptstyle x$,
ylabel=$\scriptstyle y$,
tick label style={font=\tiny},
legend style={font=\tiny,legend pos=outer north east,}
]
\addplot+[no marks,line width=1pt,domain=-10:0.5,samples=150] {1/(x - 1)};
\addlegendentry{$\frac{1}{x-1}$}
\addplot+[no marks,line width=1pt,olive,domain=-7:-3.02,samples=150] {1/((x)^2 - 7*x-30)};
\addplot+[no marks,line width=1pt,olive,domain=-2.98:9.98,samples=150] {1/((x)^2 - 7*x-30)};
\addplot+[no marks,line width=1pt,olive,domain=10.02:15,samples=150] {1/((x)^2 - 7*x-30)};
\addlegendentry{$\frac{1}{x^2 - 7x - 30}$}
\end{axis}
\end{tikzpicture}
\end{document}
答案2
如果您感兴趣的话,也可以很容易地使用pst-plot
:
\documentclass[12pt, svgnames,x11names, pdf]{standalone}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{nccmath}
\usepackage{lmodern}
\usepackage{pst-plot}
\begin{document}
\def\F{1/(x^2-7*x-30)}
\def\G{1/(x-1)}
\footnotesize\everymath{\scriptstyle}
\psset{xunit=0.6, yunit=3, linewidth=0.6pt, ticksize=-2pt 2pt, labels=y, Dx=5, arrowinset=0.2}
\begin{pspicture*}(-7,-1.25)(15,1.6)
\psaxes[arrows=->](0,0)(-7,-1.25)(15,1.6)[ $ x $, -135][ $ y $,-135]%
\uput[-120](0,0){$ 0 $}% asymptotes
\psline(10,-1.25)(10,1.6)\uput[dr](10,0){$10$}
\psline(-3,-1.25)(-3,1.6)\uput[dl](-3,0){$-3$}
\psline(1,-1.25)(1,1.6)\uput[dr](1,0){$1$}
\psset{linewidth=1pt, linecolor =IndianRed ,plotpoints=100,plotstyle=curve, algebraic, labelsep = 0.5em}
\psplot{-7}{-3.02}{\F}
\psplot{-2.98}{9.98}{\F}
\psplot{10.02}{14.75}{\F}
\psset{linecolor=LightSkyBlue4!80!}
\psplot{-7}{0.98}{\G}
\psplot{14.75}{1.02}{\G}
\end{pspicture*}
\end{document}