各种各样的

各种各样的

我是 LaTeX 的初学者,但我在边学边做。我想绘制以下线性规划问题:

(情节:制作图表)

f(x,y) = 2x - 3y -> max

x + y <= 12

x,y >=0

这是我目前所拥有的,但我找不到有关如何在 LaTeX 中绘制它的任何好答案:

\documentclass[12pt]{article}
\usepackage{amsmath}
\usepackage{graphicx}
\usepackage{pgfplots}
\usepackage{tikz}
\usepackage{hyperref}
\usepackage[latin1]{inputenc}


\title{Linear Programming}
\date{12/27/18}

\begin{document}
\maketitle

   \bigbreak
   a) \begin{cases} f(x,y) = 2x - 3y  \rightarrow max \\x + y   \leq 12 \\ x , y \geq 0 \end{cases}

\bigbreak
\bigbreak

\begin{tikzpicture}
\begin{axis}
  [
    xmin=-20,xmax=20, 
    ymin=-20,ymax=20,
    grid=both,
    grid style={line width=.1pt, draw=darkgray!10},
    major grid style={line width=.2pt,draw=darkgray!50},
    axis lines=middle,
    minor tick num=4,
    enlargelimits={abs=0.5},
    axis line style={latex-latex},
    samples=100,
    domain = -20:20,
  ]
  \addplot[red] {x + y <= 12}; 

\end{axis}
\end{tikzpicture}


\end{document}

现在的问题是,当我应该绘制半平面时,我只绘制了线条(x + y <= 12,其中 x 和 y > 0,实际上应该是一个填充三角形)

我想要的是:

绘画

你能帮我吗?

答案1

您可以使用filldrawvanilla 来tikz绘制 + 填充区域。以下是示例

\documentclass[12pt]{article}
\usepackage{amsmath}
\usepackage{graphicx}
\usepackage{pgfplots}
\usepackage{tikz}
\usepackage{hyperref}
\usepackage[latin1]{inputenc}

\pgfplotsset{compat=1.12}
\usetikzlibrary{patterns}


\title{Linear Programming}
\author{Random Numbers}
\date{12/27/18}

\begin{document}
\maketitle

\[
\begin{cases} f(x,y) = 2x - 3y  \rightarrow max \\x + y   \leq 12 \\ x , y \geq 0 \end{cases}
\]
\bigbreak
\bigbreak

\begin{tikzpicture}
\begin{axis}
  [
    xmin=-5,xmax=15,
    ymin=-5,ymax=15,
    grid=both,
    grid style={line width=.1pt, draw=darkgray!10},
    major grid style={line width=.2pt,draw=darkgray!50},
    axis lines=middle,
    minor tick num=4,
    enlargelimits={abs=0.5},
    axis line style={latex-latex},
    samples=100,
    domain = -20:20,
  ]
  %\addplot[red] {x + y  12};
  \filldraw[blue, pattern=north west lines, pattern color=blue] (0, 0) -- (0, 12) -- (12, 0) -- cycle;
\end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

非常类似于caverac 的回答很好除了这真正使用了一个函数之外,当约束更复杂时它也能起作用。

\documentclass[12pt]{article}
\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{patterns}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\usepackage{hyperref}
\usepackage[latin1]{inputenc}


\title{Linear Programming}
\date{12/27/18}

\begin{document}
\maketitle

   a) $\begin{cases} f(x,y) = 2x - 3y  \rightarrow \text{max} \\x + y   \leq 12 \\ x ,
   y \geq 0 \end{cases}$


\begin{tikzpicture}
\begin{axis}
  [
    xmin=-20,xmax=20, 
    ymin=-20,ymax=20,
    grid=both,
    grid style={line width=.1pt, draw=darkgray!10},
    major grid style={line width=.2pt,draw=darkgray!50},
    axis lines=middle,
    minor tick num=4,
    enlargelimits={abs=0.5},
    axis line style={latex-latex},
    samples=100,
    domain = -20:20,
  ]
  \addplot[red,pattern=north east lines,pattern color=red] {12-x} -- (-20,-8) \closedcycle; 

\end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案3

PSTricks 解决方案仅用于娱乐目的。

\documentclass[pstricks,border=12pt,12pt]{standalone}
\usepackage{pst-plot}
\begin{document}
\pspicture(-1,-1)(13,13)
\psaxes[Dx=2,Dy=2]{->}(0,0)(-1,-1)(12.5,12.5)[$x$,0][$y$,90]
\pspolygon[fillstyle=vlines,hatchsep=3pt,hatchangle=30](0,0)(12,0)(0,12)
\pcline[nodesep=-1](12,0)(0,12)
\endpspicture
\end{document}

在此处输入图片描述

各种各样的

\documentclass[pstricks,border=12pt]{standalone}
\def\RightPart
{
    \psline(0.5,2.7)(!6.5 3.5 82 PtoCab)
    \psbezier(1.2,1.3)(1.3,1.0)(2.0,1.0)
    \psbezier(3.0,1.0)(3.0,2.2)(!6.5 3.5 73 PtoCab)
    \psellipticarcn(6.5,3.5){(!6.5 3.5 73 PtoCab)}{(!6.5 3.5 73 neg PtoCab)}
    \psbezier(4,-2)(4,0)(2.2,-1.8)
    \psbezier(1.5,-1)(1,-1)(!6.5 3.5 -90 PtoCab)
}

\begin{document}
\begin{pspicture}(-7,-4)(7,4)
\pscustom[dimen=m,linejoin=0,fillstyle=vlines]
{
    \RightPart
    \reversepath
    \scale{-1 1}
    \RightPart
    \closepath
}
\end{pspicture}
\end{document}

在此处输入图片描述

相关内容