こんにちは!M2の加藤です.
最近tikzで図を書くことにハマっているので,コードを公開しようと思います.
以下は今日のゼミで発表した「最小化問題の基本概念」のスライド中で使った図たちです.
使っていただけたら嬉しいです(o*°▽°)o
pdfはこちら
\documentclass[11pt]{jsarticle}
\renewcommand{\figurename}{Fig.}
%%%%% 図 %%%%%
\usepackage[dvipdfmx]{graphicx}
\usepackage{tikz,pgfplots}
\usetikzlibrary{intersections}
\usetikzlibrary{decorations.markings}
\usetikzlibrary{calc}
\usepackage{float}
%%%%% 数式 %%%%%
\usepackage{amsmath}
\usepackage{amsthm}
%%%%% ページレイアウト%%%%%
\setlength{\textwidth}{40zw}
\setlength{\textheight}{40\baselineskip}
\usepackage[top=25truemm,bottom=23truemm,left=20truemm,right=20truemm]{geometry}
%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%
\begin{document}
\title{tikzによる作図}
\author{長江研究室\quad M2\quad 加藤 桃子}
\date{2014年6月5日}
\maketitle
%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%
\begin{figure}[H]
\centering
\begin{tikzpicture}[scale=1]
\draw[->,color=black] (0,0) -- (10,0);
\draw[color=black] (10,0) node[right] {$x$};% x軸
\draw[->,color=black] (0,0) -- (0,6);
\draw[color=black] (0,6) node[left] {$z(x)$};% z(x)軸
\draw (0,4) parabola bend(2,1) (3,2) parabola bend(4,3) (5,4) parabola bend(6,5)
(7,4) parabola bend(8,3) (10,6);% 曲線(parabola bend(x,y)は放物線の傾きが0
% になる点)
\fill (2,1) circle (2pt) node[anchor=north east] {極小値};% 点とその斜め下
% に「極小値」
\fill (4,3) circle (2pt) node[above=2mm] {変曲点};
\fill (6,5) circle (2pt) node[above] {極大値};
\fill (8,3) circle (2pt) node[anchor=north west] {極小値};
\draw[dashed] (2,1) -- (2,0) node[below]{$a$};% 点線の終わりにa
\draw[dashed] (4,3) -- (4,0) node[below]{$b$};
\draw[dashed] (6,5) -- (6,0) node[below]{$c$};
\draw[dashed] (8,3) -- (8,0) node[below]{$d$};
\end{tikzpicture}
\caption{}
\end{figure}
%%%%%%%%%%%%%%%%%
\begin{figure}[H]
\centering
\begin{tikzpicture}[scale=1]
\def\tangentlength{5cm};% \tangentlengthという5cmの直線を定義
\draw [,thick] (0,6) node (yaxis) [above] {$z(x)$}% z(x)軸
|- (9,0) node (xaxis) [right] {$x$};% z(x)軸と直交するようにx軸
\draw [name path=C1] (1,5) parabola bend(4,1) (7,4);% 曲線C1
\path [name path=L1] (4.5,0) -- (4.5,4);% 直線L1
\path[name path=L1'] ($(4.5,0)+(1pt,0)$) -- ($(4.5,4)+(1pt,0)$);% 直線
% L1よりわずかにずれた所にL1'
\path[name intersections={of=C1 and L1}];% C1とL1の交点を求める
\coordinate (a) at (intersection-1);% 交点の座標を(a)とする
\path[name intersections={of=C1 and L1'}];
\coordinate (b) at (intersection-1);
\draw[name path=L2]
($(a)!-\tangentlength/2!(b)$)--($(a)!\tangentlength/2!(b)$);% (a),(b)
% を通る長さ\tangentlengthの直線を引く
\path[name path=L3] (6.3,0) -- (6.3,5);
\path[name intersections={of=C1 and L3}];
\coordinate (c) at (intersection-1);
\path[name intersections={of=L2 and L3}];
\coordinate (d) at (intersection-1);
\draw[dashed] (a) -- (a |- xaxis) node[below] {$x_1$};% (a)からx軸に垂
% 線を下ろし,x軸の下にx_1と書く
\draw[dashed] (c) -- (c |- xaxis) node[below] {$x_2$};
\draw[dashed] (c) -- (c -| yaxis) node[left] {$z(x_2)$};
\draw[dashed] (d) -- (d -| yaxis) node[left] {$z(x_1)+\dfrac{dz(x_1)}{dx}(x_2-x_1)$};
\end{tikzpicture}
\caption{}
\end{figure}
%%%%%%%%%%%%%%%%%
\begin{figure}[H]
\centering
\begin{tikzpicture}[scale=1]
\draw[->,thick] (-1,0) -- (7,0);
\draw (7,0) node[right] {$x$};
\draw[->,thick] (0,-1) -- (0,6);
\draw (0,6) node[above] {$z(x)$};
\draw [name path=C1] (-0.5,4) parabola bend(2,1) (6,3);
\draw[dashed, name path=L2] (5,6) -- (5,-1) node[below] {$x=a^{''}$};
\draw[dashed, name path=L1] (3,6) -- (3,-1) node[below] {$x=a^{'}$};
\path[name intersections={of=C1 and L1}];
\coordinate (c) at (intersection-1);
\fill (c) circle (2pt) node[below] {最小値};
\fill[gray, opacity=.3] (3,6) -- (-1,6) -- (-1,-1) -- (3,-1);% グレー,
% 透明度0.3の領域を描く
\fill[gray, opacity=.3] (7,6) -- (5,6) -- (5,-1) -- (7,-1);
\end{tikzpicture}
\caption{}
\end{figure}
%%%%%%%%%%%%%%%%%
\begin{figure}[H]
\centering
\begin{tikzpicture}[scale=1]
\draw[->,thick] (-1,0) -- (7,0);
\draw (7,0) node[right] {$x_1$};
\draw[->,thick] (0,-1) -- (0,6);
\draw (0,6) node[above] {$x_2$};
\fill[blue,opacity=0.4] (1,1) circle [x radius=6mm, y radius=5mm]; % 青,透
% 明度0.4,中心(1,1),x方向6mm,y方向5mmの楕円を描く
\fill[blue,opacity=0.4] (1.2,1.3) circle [x radius=12mm, y radius=10mm];
\fill[blue,opacity=0.4] (1.5,1.7) circle [x radius=20mm, y radius=17mm];
\fill[blue,opacity=0.3] (1.9,2.1) circle [x radius=28mm, y radius=25mm];
\fill[blue,opacity=0.2] (2.2,2.3) circle [x radius=36mm, y radius=30mm];% 等高線
\draw[thick, name path=L2] (1.1,1) -- node[left]{$g_2$} (0.2,3.5);
\draw[thick, name path=L1] (0.1,3.3) -- node[left]{$g_1$} (2.6,5);
\draw[thick, name path=L6] (2.4,5) -- node[right]{$g_6$} (5,3.7);
\draw[thick, name path=L5] (4.8,3.9) -- node[right]{$g_5$} (4.6,1.6);
\draw[thick, name path=L4] (4.8,2) -- node[below]{$g_4$} (2.6,0.5);
\draw[thick, name path=L3] (3,0.5) -- node[below]{$g_3$} (0.9,1.2);% 制約条件
\path[name intersections={of=L2 and L3}];% L2とL3の交点を求める
\coordinate (a) at (intersection-1);% 交点の座標を(a)と名付ける
\draw[dashed] (a) -- (a |- xaxis) node[below] {$x_1^*$};% aからx軸に点線を下
% ろす
\draw[dashed] (a) -- (a -| yaxis) node[left] {$x_2^*$};% aからy軸に点線を
% 下ろす
\fill[red] (a) circle (2pt);
\end{tikzpicture}
\caption{}
\end{figure}
%%%%%%%%%%%%%%%%%
\begin{figure}[H]
\centering
\begin{tikzpicture}[scale=1]
\fill[blue,opacity=0.4] (1,1) circle [x radius=6mm, y radius=5mm];
\fill[blue,opacity=0.4] (1.2,1.3) circle [x radius=12mm, y radius=10mm];
\fill[blue,opacity=0.4] (1.5,1.7) circle [x radius=20mm, y radius=17mm];
\draw[thick, name path=L2] (1.1,1) -- node[left]{$g_2$} (0.2,3.5);
\draw[thick, name path=L3] (3,0.5) -- node[below]{$g_3$} (0.9,1.2);% 制約条件
\path[name intersections={of=L2 and L3}];% L2とL3の交点を求める
\coordinate (a) at (intersection-1);% 交点の座標を(a)と名付ける
\draw[->] (a) -- ($(0.1,1)!(a)!(-0.8,3.5)$) node[left]{$-\nabla g_2$};% L2と平行な線分に垂線を下ろす
\draw[->] (a) -- ($(2,0)!(a)!(-0.1,0.7)$) node[below]{$-\nabla g_3$};% L3と平行な線分に垂線を下ろす
\draw[->] (a) -- (0.2,0.2) node[left]{$-\nabla z$};
\end{tikzpicture}
\caption{}
\end{figure}
%%%%%%%%%%%%%%%%%
\begin{figure}[H]
\centering
\begin{tikzpicture}[scale=1]
\draw [->,thick] (-4,0) -- (4,0);
\draw (4,0) node[right] {$x$};% x軸
\draw [->,thick] (0,-3) -- (0,3);
\draw (0,3) node[above] {$L(x,u)$};% y軸
\draw [->,thick] (-2,-2.5) -- (2,2.5);
\draw (2,2.5) node[above] {$u$};% u軸
\fill[blue,opacity=.6] (-3,-1.5) parabola[bend at end](-2.5,1.5) parabola[bend
at start](-2,1.2) parabola[bend at
end](0,0) parabola[bend at start](2,1.2) parabola[bend at end](2.5,1.5)
parabola[bend at start](2,-1.5) -- (-3,-1.5);% 手前
\fill[blue,opacity=.3] (-2.5,1.5) parabola[bend
at start](-2,1.2) parabola[bend at
end](0,0) parabola[bend at start](2,1.2) parabola[bend at end](2.5,1.5)
parabola[bend at start](3,-0.5) -- (-2,-0.5) parabola[bend at
end](-2.5,1.5);% 奥
\fill[red] circle (2pt) node[above] {鞍点};
\end{tikzpicture}
\caption{}
\end{figure}
%%%%%%%%%%%%%%%%%
\begin{figure}[H]
\centering
\begin{tikzpicture}[scale=1]
\draw[->,thick] (-1,0) -- (7,0);
\draw (7,0) node[right] {$x_1$};
\draw[->,thick] (0,-1) -- (0,6);
\draw (0,6) node[above] {$x_2$};
\fill[blue,opacity=0.2] (-1,1) -- (-1,-1) -- (1,-1);
\fill[blue,opacity=0.2] (-1,3) -- (-1,-1) -- (3,-1);
\fill[blue,opacity=0.2] (-1,5) -- (-1,-1) -- (5,-1);
\fill[blue,opacity=0.2] (-1,6) -- (-1,-1) -- (7,-1) -- (0,6);
\fill[blue,opacity=0.2] (-1,6) -- (-1,-1) -- (7,-1) -- (7,1) -- (2,6);
\fill[blue,opacity=0.1] (-1,6) -- (-1,-1) -- (7,-1) -- (7,3) -- (4,6);
\fill[blue,opacity=0.1] (-1,6) -- (-1,-1) -- (7,-1) -- (7,6);% 目的関数の降下方向
\draw[thick, name path=L2] (1.1,1) -- (0.2,3.5);
\draw[thick, name path=L1] (0.1,3.3) -- (2.6,5);
\draw[thick, name path=L6] (2.4,5) -- (5,3.7);
\draw[thick, name path=L5] (4.8,3.9) -- (4.6,1.6);
\draw[thick, name path=L4] (4.8,2) -- (2.6,0.5);
\draw[thick, name path=L3] (3,0.5) -- (0.9,1.2);% 制約条件
\path[name intersections={of=L2 and L3}];% L2とL3の交点を求める
\coordinate (a) at (intersection-1);% 交点の座標を(a)と名付ける
\fill[red] (a) circle (2pt);% (d)に赤い点を置く
\end{tikzpicture}
\end{figure}
%%%%%%%%%%%%%%%%%
\begin{figure}[H]
\centering
\begin{tikzpicture}[scale=1]
\draw [,thick] (0,5) node (yaxis) [above] {$z(x_1,x_2)$}
|- (8,0) node (xaxis) [right] {$x_1$};
\draw [->,thick] (0,0) -- (-2,-3);
\draw (-2,-3) node[below] {$x_2$};
\fill[blue,opacity=.7] (1,2) to [out=-80,in=-180] (4,-2) to [out=0,in=-100]
(6,0) parabola[bend at end](5,-0.3) parabola[bend at start](1,2);% お碗
\fill[blue,opacity=.5] (1,2) parabola[bend at end](5,-0.3) parabola[bend at
start](6,0) parabola[bend at end](2,2.3) parabola[bend at start](1,2);% 断面
\draw[thick] (2.5,1.5) -- (4.5,-1);
\fill (2.5,1.5) circle (2pt);
\fill (4.5,-1) circle (2pt);
\end{tikzpicture}
\end{figure}
%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%
\end{document}