如何绘制以下图表

如何绘制以下图表

我想在 LATEX 中绘制附图。但我做不到。请帮帮我。在此处输入图片描述

答案1

您可以使用pgfplots包来渲染该图,因为我没有您的函数,所以我使用了一些示例函数(其他人在回答您的问题时使用的相同函数)。您可以使用此代码作为模板来生成自己的图。

请注意pgfplots 软件包手册非常完美,有很多不同的示例(和选项),而且易于阅读。我是 LaTeX 的基本用户,但在很短的时间内,我就明白了如何使用该软件包。

\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.9}

\begin{document}
\begin{tikzpicture}

\begin{axis}
    [
    axis lines = center,
    xlabel=$x$,ylabel=$y$,
    domain=-2:10,
    samples=100,
    ]
    \addplot [red, thick] {4};
    \node at (axis cs:5,4) [pin={60:$y=\frac{A}{\alpha+d}$},inner sep=0pt] {};
    \addplot [blue, thick] {2^(-x/2+3)-2};
    \addplot [green, thick] {4*(1-1.2^(-3*x+1))};
    \addplot [black, mark = *] coordinates {( 4, 0)} node[pin=-60:{$M_C^*$},inner sep=0pt] {};
    \addplot [black, mark = *] coordinates {( 0.33, 0)} node[pin=-60:{$M_C$},inner sep=0pt] {};
    \addplot [black, mark = *] coordinates {( 1.832835, 2.23858)} node[pin=-2:{$(M_3^*, Y^*)$},inner sep=0pt] {};
\end{axis}
\end{tikzpicture}
\end{document}

输出如下:

在此处输入图片描述

lualatex您也可以与此包一起使用。请参阅我之前对答案的修改查看如何使用 pgfplots 包的示例以及如何绘制复杂函数. 关于评论对于这个答案:

lualatex可以被视为避免内存限制(通常需要)或避免数值不准确(几乎不需要)的一种方法。

附言由于这个问题已开始悬赏,我修改了我的答案,使其输出看起来与问题上的其他答案类似,但使用不同的 LaTeX 代码。有关以前的代码,请参阅修改我的答案

答案2

这里有一个蒂克兹-ish 版本的请不要触摸的回答。我认为代码不需要更多解释,但如有疑问,请直接询问。

更新版本 - 查看版本历史记录

\documentclass[border=5mm, 12pt, tikz]{standalone}
\usetikzlibrary{calc, intersections, arrows, shapes, positioning, fit, backgrounds}

\begin{document}
\begin{tikzpicture}[domain=-1:10, samples=250]
 % Function definitions
 \newcommand{\f}{2^(-\x/2+3)-2}
 \newcommand{\g}{4}
 \newcommand{\h}{\g*(1-1.12^(-3*\x+1))}
 \begin{scope}
  % Plots, clipped draw area
  \clip (-1,-2) rectangle (10,8);
  \draw[ultra thick, blue, name path=ff] plot ({\x}, {\f});
  \draw[ultra thick, red,  name path=fg] plot ({\x}, \g) node [black, above left] {$Y=\frac{A}{\alpha+d}$};
  \draw[ultra thick, green!75!black, name path=fh] plot  ({\x}, {\h});
  % Axes
  \draw [thick, ->, >=triangle 45, name path global=yaxis] (0,-2) -- (0,8) node [above] {$Y$};
  \draw [thick, ->, >=triangle 45, name path global=xaxis] (-2,0) -- (10,0) node [right] {$M$};
  % Intersections
  \fill [name intersections={of=ff and xaxis}] (intersection-1) circle (.1cm) node [below=.5cm] {$M_c^*$};
  \fill [name intersections={of=fh and xaxis}] (intersection-1) circle (.1cm) node [below=.5cm] {$M_c$};
  \fill [name intersections={of=ff and fh}] (intersection-1) circle (.1cm) node [right=.5cm] {$M_3^*,Y^*$};
 \end{scope}

 % Legend
 \begin{scope}[text width=4cm, node distance=0cm]
  \node at (10,8) [below left, blue] (y1) {$\bullet$ $y=2^{-x/2+3}-2$}; 
  \node [below=of y1, red] (y2) {$\bullet$ $y=4$};
  \node [below=of y2, green!75!black] (y3) {$\bullet$ $y=4(1-1.2^{-3x+1})$};
 \end{scope}
 \begin{scope}[on background layer]
  \node [rectangle, draw, thick, fit=(y1) (y2) (y3)] () {};
 \end{scope}
\end{tikzpicture}
\end{document}

生成的图像

答案3

运行xelatex

\documentclass{article}
\usepackage{pst-plot,pst-intersect,mathtools}
\begin{document}

\begin{pspicture}(-2,-2)(8,8)
\psaxes[labelFontSize=\scriptstyle,ticksize=0 4pt]{->}(0,0)(-2,-2)(8,8)[$M$,-90][$Y$,0]
\psset{linewidth=1.5pt,algebraic}
\pssavepath[linecolor=green]{A}{\psplot{-0.5}{8}{4*(1-1.2^(-3*x+1))}}
\psline[linecolor=red](-2,4)(8,4) \uput[90](7,4){$Y=\dfrac{A}{\alpha+d}$}
\pssavepath[linecolor=blue]{B}{\psplot{-0.5}{8}{2^(-x/2+3)-2}}
\pssavepath[linestyle=none]{C}{\psplot{-0.5}{8}{0}}
\psintersect[name=D, showpoints]{A}{B}\uput[0](D1){$M_3^*,Y^*$}
\psintersect[name=E, showpoints]{A}{C}\uput[-45](E1){$M_c$}
\psdot(4,0)\uput[225](4,0){$M_c^*$} 
\end{pspicture}

\end{document}

在此处输入图片描述

答案4

这是一个简单的版本元帖子. 大部分内容在Metapost 介绍,所有这些都在Metapost 手册

在此处输入图片描述

特别要注意的是,你不需要知道曲线的公式。你可以使用如图所示的方向符号绘制它们,然后使用intersectionpoint找到它们的交叉点。

prologues := 3;
outputtemplate := "%j%c.eps";

beginfig(1);

u := 1.3cm;
minx = -2u; maxx = 6u;
miny = -2u; maxy = 4u;
h = 2u;

path x.axis, y.axis, curve[];

x.axis = (minx,0) -- (maxx,0);
y.axis = (0,miny) -- (0,maxy);

label.top(btex $Y$ etex, (0,maxy));
label.rt (btex $M$ etex, (maxx,0));

curve1 = (-1u, miny) {dir  70} .. {dir   3} (maxx,.9h);
curve2 = (-1u, maxy) {dir -80} .. {dir -10} (maxx,-1u);

drawarrow x.axis withcolor .67 red;
drawarrow y.axis withcolor .67 red;

draw (minx,h) -- (maxx,h) dashed evenly scaled .8;
label.urt(btex $\displaystyle Y={A\over\alpha+d}$ etex,(minx,h));

draw curve1;
draw curve2;

dotlabel.lrt (btex $M_c$   etex, x.axis intersectionpoint curve1);
dotlabel.llft(btex $M_c^*$ etex, x.axis intersectionpoint curve2);

% do the last dot label by hand to avoid over printing the curves
z1 = curve1 intersectionpoint curve2;
fill fullcircle scaled dotlabeldiam shifted z1;
label(btex $\quad(M_3^*,Y^*)$ etex, z1 + 26 right);

endfig;
end.

相关内容