提交 44882ccb 编写于 作者: S ShusenTang

add 7.2

上级 aed71f93
此差异已折叠。
......@@ -533,3 +533,23 @@ def train_and_predict_rnn_pytorch(model, num_hiddens, vocab_size, device,
print(' -', predict_rnn_pytorch(
prefix, pred_len, model, vocab_size, device, idx_to_char,
char_to_idx))
# ######################################## 7.2 ###############################################
def train_2d(trainer): # 本函数将保存在d2lzh_pytorch包中方便以后使用
x1, x2, s1, s2 = -5, -2, 0, 0 # s1和s2是自变量状态,本章后续几节会使用
results = [(x1, x2)]
for i in range(20):
x1, x2, s1, s2 = trainer(x1, x2, s1, s2)
results.append((x1, x2))
print('epoch %d, x1 %f, x2 %f' % (i + 1, x1, x2))
return results
def show_trace_2d(f, results): # 本函数将保存在d2lzh_pytorch包中方便以后使用
d2l.plt.plot(*zip(*results), '-o', color='#ff7f0e')
x1, x2 = np.meshgrid(np.arange(-5.5, 1.0, 0.1), np.arange(-3.0, 1.0, 0.1))
d2l.plt.contour(x1, x2, f(x1, x2), colors='#1f77b4')
d2l.plt.xlabel('x1')
d2l.plt.ylabel('x2')
\ No newline at end of file
# 7.2 梯度下降和随机梯度下降
在本节中,我们将介绍梯度下降(gradient descent)的工作原理。虽然梯度下降在深度学习中很少被直接使用,但理解梯度的意义以及沿着梯度反方向更新自变量可能降低目标函数值的原因是学习后续优化算法的基础。随后,我们将引出随机梯度下降(stochastic gradient descent)。
## 7.2.1 一维梯度下降
我们先以简单的一维梯度下降为例,解释梯度下降算法可能降低目标函数值的原因。假设连续可导的函数$f: \mathbb{R} \rightarrow \mathbb{R}$的输入和输出都是标量。给定绝对值足够小的数$\epsilon$,根据泰勒展开公式,我们得到以下的近似:
$$f(x + \epsilon) \approx f(x) + \epsilon f'(x) .$$
这里$f'(x)$是函数$f$在$x$处的梯度。一维函数的梯度是一个标量,也称导数。
接下来,找到一个常数$\eta > 0$,使得$\left|\eta f'(x)\right|$足够小,那么可以将$\epsilon$替换为$-\eta f'(x)$并得到
$$f(x - \eta f'(x)) \approx f(x) - \eta f'(x)^2.$$
如果导数$f'(x) \neq 0$,那么$\eta f'(x)^2>0$,所以
$$f(x - \eta f'(x)) \lesssim f(x).$$
这意味着,如果通过
$$x \leftarrow x - \eta f'(x)$$
来迭代$x$,函数$f(x)$的值可能会降低。因此在梯度下降中,我们先选取一个初始值$x$和常数$\eta > 0$,然后不断通过上式来迭代$x$,直到达到停止条件,例如$f'(x)^2$的值已足够小或迭代次数已达到某个值。
下面我们以目标函数$f(x)=x^2$为例来看一看梯度下降是如何工作的。虽然我们知道最小化$f(x)$的解为$x=0$,这里依然使用这个简单函数来观察$x$是如何被迭代的。首先,导入本节实验所需的包或模块。
``` python
%matplotlib inline
import numpy as np
import torch
import math
import sys
sys.path.append("..")
import d2lzh_pytorch as d2l
```
接下来使用$x=10$作为初始值,并设$\eta=0.2$。使用梯度下降对$x$迭代10次,可见最终$x$的值较接近最优解。
``` python
def gd(eta):
x = 10
results = [x]
for i in range(10):
x -= eta * 2 * x # f(x) = x * x的导数为f'(x) = 2 * x
results.append(x)
print('epoch 10, x:', x)
return results
res = gd(0.2)
```
输出:
```
epoch 10, x: 0.06046617599999997
```
下面将绘制出自变量$x$的迭代轨迹。
``` python
def show_trace(res):
n = max(abs(min(res)), abs(max(res)), 10)
f_line = np.arange(-n, n, 0.1)
d2l.set_figsize()
d2l.plt.plot(f_line, [x * x for x in f_line])
d2l.plt.plot(res, [x * x for x in res], '-o')
d2l.plt.xlabel('x')
d2l.plt.ylabel('f(x)')
show_trace(res)
```
<div align=center>
<img width="300" src="../../img/chapter07/7.2_output1.svg"/>
</div>
## 7.2.2 学习率
上述梯度下降算法中的正数$\eta$通常叫作学习率。这是一个超参数,需要人工设定。如果使用过小的学习率,会导致$x$更新缓慢从而需要更多的迭代才能得到较好的解。
下面展示使用学习率$\eta=0.05$时自变量$x$的迭代轨迹。可见,同样迭代10次后,当学习率过小时,最终$x$的值依然与最优解存在较大偏差。
``` python
show_trace(gd(0.05))
```
输出:
```
epoch 10, x: 3.4867844009999995
```
<div align=center>
<img width="300" src="../../img/chapter07/7.2_output2.svg"/>
</div>
如果使用过大的学习率,$\left|\eta f'(x)\right|$可能会过大从而使前面提到的一阶泰勒展开公式不再成立:这时我们无法保证迭代$x$会降低$f(x)$的值。
举个例子,当设学习率$\eta=1.1$时,可以看到$x$不断越过(overshoot)最优解$x=0$并逐渐发散。
``` python
show_trace(gd(1.1))
```
输出:
```
epoch 10, x: 61.917364224000096
```
<div align=center>
<img width="300" src="../../img/chapter07/7.2_output3.svg"/>
</div>
## 7.2.3 多维梯度下降
在了解了一维梯度下降之后,我们再考虑一种更广义的情况:目标函数的输入为向量,输出为标量。假设目标函数$f: \mathbb{R}^d \rightarrow \mathbb{R}$的输入是一个$d$维向量$\boldsymbol{x} = [x_1, x_2, \ldots, x_d]^\top$。目标函数$f(\boldsymbol{x})$有关$\boldsymbol{x}$的梯度是一个由$d$个偏导数组成的向量:
$$\nabla_{\boldsymbol{x}} f(\boldsymbol{x}) = \bigg[\frac{\partial f(\boldsymbol{x})}{\partial x_1}, \frac{\partial f(\boldsymbol{x})}{\partial x_2}, \ldots, \frac{\partial f(\boldsymbol{x})}{\partial x_d}\bigg]^\top.$$
为表示简洁,我们用$\nabla f(\boldsymbol{x})$代替$\nabla_{\boldsymbol{x}} f(\boldsymbol{x})$。梯度中每个偏导数元素$\partial f(\boldsymbol{x})/\partial x_i$代表着$f$在$\boldsymbol{x}$有关输入$x_i$的变化率。为了测量$f$沿着单位向量$\boldsymbol{u}$(即$\|\boldsymbol{u}\|=1$)方向上的变化率,在多元微积分中,我们定义$f$在$\boldsymbol{x}$上沿着$\boldsymbol{u}$方向的方向导数为
$$\text{D}_{\boldsymbol{u}} f(\boldsymbol{x}) = \lim_{h \rightarrow 0} \frac{f(\boldsymbol{x} + h \boldsymbol{u}) - f(\boldsymbol{x})}{h}.$$
依据方向导数性质[1,14.6节定理三],以上方向导数可以改写为
$$\text{D}_{\boldsymbol{u}} f(\boldsymbol{x}) = \nabla f(\boldsymbol{x}) \cdot \boldsymbol{u}.$$
方向导数$\text{D}_{\boldsymbol{u}} f(\boldsymbol{x})$给出了$f$在$\boldsymbol{x}$上沿着所有可能方向的变化率。为了最小化$f$,我们希望找到$f$能被降低最快的方向。因此,我们可以通过单位向量$\boldsymbol{u}$来最小化方向导数$\text{D}_{\boldsymbol{u}} f(\boldsymbol{x})$。
由于$\text{D}_{\boldsymbol{u}} f(\boldsymbol{x}) = \|\nabla f(\boldsymbol{x})\| \cdot \|\boldsymbol{u}\| \cdot \text{cos} (\theta) = \|\nabla f(\boldsymbol{x})\| \cdot \text{cos} (\theta)$,
其中$\theta$为梯度$\nabla f(\boldsymbol{x})$和单位向量$\boldsymbol{u}$之间的夹角,当$\theta = \pi$时,$\text{cos}(\theta)$取得最小值$-1$。因此,当$\boldsymbol{u}$在梯度方向$\nabla f(\boldsymbol{x})$的相反方向时,方向导数$\text{D}_{\boldsymbol{u}} f(\boldsymbol{x})$被最小化。因此,我们可能通过梯度下降算法来不断降低目标函数$f$的值:
$$\boldsymbol{x} \leftarrow \boldsymbol{x} - \eta \nabla f(\boldsymbol{x}).$$
同样,其中$\eta$(取正数)称作学习率。
下面我们构造一个输入为二维向量$\boldsymbol{x} = [x_1, x_2]^\top$和输出为标量的目标函数$f(\boldsymbol{x})=x_1^2+2x_2^2$。那么,梯度$\nabla f(\boldsymbol{x}) = [2x_1, 4x_2]^\top$。我们将观察梯度下降从初始位置$[-5,-2]$开始对自变量$\boldsymbol{x}$的迭代轨迹。我们先定义两个辅助函数,第一个函数使用给定的自变量更新函数,从初始位置$[-5,-2]$开始迭代自变量$\boldsymbol{x}$共20次,第二个函数对自变量$\boldsymbol{x}$的迭代轨迹进行可视化。
``` python
def train_2d(trainer): # 本函数将保存在d2lzh_pytorch包中方便以后使用
x1, x2, s1, s2 = -5, -2, 0, 0 # s1和s2是自变量状态,本章后续几节会使用
results = [(x1, x2)]
for i in range(20):
x1, x2, s1, s2 = trainer(x1, x2, s1, s2)
results.append((x1, x2))
print('epoch %d, x1 %f, x2 %f' % (i + 1, x1, x2))
return results
def show_trace_2d(f, results): # 本函数将保存在d2lzh_pytorch包中方便以后使用
d2l.plt.plot(*zip(*results), '-o', color='#ff7f0e')
x1, x2 = np.meshgrid(np.arange(-5.5, 1.0, 0.1), np.arange(-3.0, 1.0, 0.1))
d2l.plt.contour(x1, x2, f(x1, x2), colors='#1f77b4')
d2l.plt.xlabel('x1')
d2l.plt.ylabel('x2')
```
然后,观察学习率为$0.1$时自变量的迭代轨迹。使用梯度下降对自变量$\boldsymbol{x}$迭代20次后,可见最终$\boldsymbol{x}$的值较接近最优解$[0,0]$。
``` python
eta = 0.1
def f_2d(x1, x2): # 目标函数
return x1 ** 2 + 2 * x2 ** 2
def gd_2d(x1, x2, s1, s2):
return (x1 - eta * 2 * x1, x2 - eta * 4 * x2, 0, 0)
show_trace_2d(f_2d, train_2d(gd_2d))
```
输出:
```
epoch 20, x1 -0.057646, x2 -0.000073
```
<div align=center>
<img width="300" src="../../img/chapter07/7.2_output4.svg"/>
</div>
## 7.2.4 随机梯度下降
在深度学习里,目标函数通常是训练数据集中有关各个样本的损失函数的平均。设$f_i(\boldsymbol{x})$是有关索引为$i$的训练数据样本的损失函数,$n$是训练数据样本数,$\boldsymbol{x}$是模型的参数向量,那么目标函数定义为
$$f(\boldsymbol{x}) = \frac{1}{n} \sum_{i = 1}^n f_i(\boldsymbol{x}).$$
目标函数在$\boldsymbol{x}$处的梯度计算为
$$\nabla f(\boldsymbol{x}) = \frac{1}{n} \sum_{i = 1}^n \nabla f_i(\boldsymbol{x}).$$
如果使用梯度下降,每次自变量迭代的计算开销为$\mathcal{O}(n)$,它随着$n$线性增长。因此,当训练数据样本数很大时,梯度下降每次迭代的计算开销很高。
随机梯度下降(stochastic gradient descent,SGD)减少了每次迭代的计算开销。在随机梯度下降的每次迭代中,我们随机均匀采样的一个样本索引$i\in\{1,\ldots,n\}$,并计算梯度$\nabla f_i(\boldsymbol{x})$来迭代$\boldsymbol{x}$:
$$\boldsymbol{x} \leftarrow \boldsymbol{x} - \eta \nabla f_i(\boldsymbol{x}).$$
这里$\eta$同样是学习率。可以看到每次迭代的计算开销从梯度下降的$\mathcal{O}(n)$降到了常数$\mathcal{O}(1)$。值得强调的是,随机梯度$\nabla f_i(\boldsymbol{x})$是对梯度$\nabla f(\boldsymbol{x})$的无偏估计:
$$E_i \nabla f_i(\boldsymbol{x}) = \frac{1}{n} \sum_{i = 1}^n \nabla f_i(\boldsymbol{x}) = \nabla f(\boldsymbol{x}).$$
这意味着,平均来说,随机梯度是对梯度的一个良好的估计。
下面我们通过在梯度中添加均值为0的随机噪声来模拟随机梯度下降,以此来比较它与梯度下降的区别。
``` python
def sgd_2d(x1, x2, s1, s2):
return (x1 - eta * (2 * x1 + np.random.normal(0.1)),
x2 - eta * (4 * x2 + np.random.normal(0.1)), 0, 0)
show_trace_2d(f_2d, train_2d(sgd_2d))
```
输出:
```
epoch 20, x1 -0.047150, x2 -0.075628
```
<div align=center>
<img width="300" src="../../img/chapter07/7.2_output5.svg"/>
</div>
可以看到,随机梯度下降中自变量的迭代轨迹相对于梯度下降中的来说更为曲折。这是由于实验所添加的噪声使模拟的随机梯度的准确度下降。在实际中,这些噪声通常指训练数据集中的无意义的干扰。
## 小结
* 使用适当的学习率,沿着梯度反方向更新自变量可能降低目标函数值。梯度下降重复这一更新过程直到得到满足要求的解。
* 学习率过大或过小都有问题。一个合适的学习率通常是需要通过多次实验找到的。
* 当训练数据集的样本较多时,梯度下降每次迭代的计算开销较大,因而随机梯度下降通常更受青睐。
## 参考文献
[1] Stewart, J. (2010). Calculus: early transcendentals. 7th ed. Cengage Learning.
------------
> 注:本节与原书基本相同,[原书传送门](https://zh.d2l.ai/chapter_optimization/gd-sgd.html)
\ No newline at end of file
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Created with matplotlib (http://matplotlib.org/) -->
<svg height="184.15625pt" version="1.1" viewBox="0 0 252.965625 184.15625" width="252.965625pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<style type="text/css">
*{stroke-linecap:butt;stroke-linejoin:round;}
</style>
</defs>
<g id="figure_1">
<g id="patch_1">
<path d="M 0 184.15625
L 252.965625 184.15625
L 252.965625 -0
L 0 -0
z
" style="fill:none;"/>
</g>
<g id="axes_1">
<g id="patch_2">
<path d="M 46.965625 146.6
L 242.265625 146.6
L 242.265625 10.7
L 46.965625 10.7
z
" style="fill:#ffffff;"/>
</g>
<g id="matplotlib.axis_1">
<g id="xtick_1">
<g id="line2d_1">
<defs>
<path d="M 0 0
L 0 3.5
" id="m401b5310bd" style="stroke:#000000;stroke-width:0.8;"/>
</defs>
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="55.842898" xlink:href="#m401b5310bd" y="146.6"/>
</g>
</g>
<g id="text_1">
<!-- −10 -->
<defs>
<path d="M 10.59375 35.5
L 73.1875 35.5
L 73.1875 27.203125
L 10.59375 27.203125
z
" id="DejaVuSans-2212"/>
<path d="M 12.40625 8.296875
L 28.515625 8.296875
L 28.515625 63.921875
L 10.984375 60.40625
L 10.984375 69.390625
L 28.421875 72.90625
L 38.28125 72.90625
L 38.28125 8.296875
L 54.390625 8.296875
L 54.390625 0
L 12.40625 0
z
" id="DejaVuSans-31"/>
<path d="M 31.78125 66.40625
Q 24.171875 66.40625 20.328125 58.90625
Q 16.5 51.421875 16.5 36.375
Q 16.5 21.390625 20.328125 13.890625
Q 24.171875 6.390625 31.78125 6.390625
Q 39.453125 6.390625 43.28125 13.890625
Q 47.125 21.390625 47.125 36.375
Q 47.125 51.421875 43.28125 58.90625
Q 39.453125 66.40625 31.78125 66.40625
z
M 31.78125 74.21875
Q 44.046875 74.21875 50.515625 64.515625
Q 56.984375 54.828125 56.984375 36.375
Q 56.984375 17.96875 50.515625 8.265625
Q 44.046875 -1.421875 31.78125 -1.421875
Q 19.53125 -1.421875 13.0625 8.265625
Q 6.59375 17.96875 6.59375 36.375
Q 6.59375 54.828125 13.0625 64.515625
Q 19.53125 74.21875 31.78125 74.21875
z
" id="DejaVuSans-30"/>
</defs>
<g transform="translate(45.290554 161.198437)scale(0.1 -0.1)">
<use xlink:href="#DejaVuSans-2212"/>
<use x="83.789062" xlink:href="#DejaVuSans-31"/>
<use x="147.412109" xlink:href="#DejaVuSans-30"/>
</g>
</g>
</g>
<g id="xtick_2">
<g id="line2d_2">
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="100.229261" xlink:href="#m401b5310bd" y="146.6"/>
</g>
</g>
<g id="text_2">
<!-- −5 -->
<defs>
<path d="M 10.796875 72.90625
L 49.515625 72.90625
L 49.515625 64.59375
L 19.828125 64.59375
L 19.828125 46.734375
Q 21.96875 47.46875 24.109375 47.828125
Q 26.265625 48.1875 28.421875 48.1875
Q 40.625 48.1875 47.75 41.5
Q 54.890625 34.8125 54.890625 23.390625
Q 54.890625 11.625 47.5625 5.09375
Q 40.234375 -1.421875 26.90625 -1.421875
Q 22.3125 -1.421875 17.546875 -0.640625
Q 12.796875 0.140625 7.71875 1.703125
L 7.71875 11.625
Q 12.109375 9.234375 16.796875 8.0625
Q 21.484375 6.890625 26.703125 6.890625
Q 35.15625 6.890625 40.078125 11.328125
Q 45.015625 15.765625 45.015625 23.390625
Q 45.015625 31 40.078125 35.4375
Q 35.15625 39.890625 26.703125 39.890625
Q 22.75 39.890625 18.8125 39.015625
Q 14.890625 38.140625 10.796875 36.28125
z
" id="DejaVuSans-35"/>
</defs>
<g transform="translate(92.858168 161.198437)scale(0.1 -0.1)">
<use xlink:href="#DejaVuSans-2212"/>
<use x="83.789062" xlink:href="#DejaVuSans-35"/>
</g>
</g>
</g>
<g id="xtick_3">
<g id="line2d_3">
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="144.615625" xlink:href="#m401b5310bd" y="146.6"/>
</g>
</g>
<g id="text_3">
<!-- 0 -->
<g transform="translate(141.434375 161.198437)scale(0.1 -0.1)">
<use xlink:href="#DejaVuSans-30"/>
</g>
</g>
</g>
<g id="xtick_4">
<g id="line2d_4">
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="189.001989" xlink:href="#m401b5310bd" y="146.6"/>
</g>
</g>
<g id="text_4">
<!-- 5 -->
<g transform="translate(185.820739 161.198437)scale(0.1 -0.1)">
<use xlink:href="#DejaVuSans-35"/>
</g>
</g>
</g>
<g id="xtick_5">
<g id="line2d_5">
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="233.388352" xlink:href="#m401b5310bd" y="146.6"/>
</g>
</g>
<g id="text_5">
<!-- 10 -->
<g transform="translate(227.025852 161.198437)scale(0.1 -0.1)">
<use xlink:href="#DejaVuSans-31"/>
<use x="63.623047" xlink:href="#DejaVuSans-30"/>
</g>
</g>
</g>
<g id="text_6">
<!-- x -->
<defs>
<path d="M 54.890625 54.6875
L 35.109375 28.078125
L 55.90625 0
L 45.3125 0
L 29.390625 21.484375
L 13.484375 0
L 2.875 0
L 24.125 28.609375
L 4.6875 54.6875
L 15.28125 54.6875
L 29.78125 35.203125
L 44.28125 54.6875
z
" id="DejaVuSans-78"/>
</defs>
<g transform="translate(141.65625 174.876562)scale(0.1 -0.1)">
<use xlink:href="#DejaVuSans-78"/>
</g>
</g>
</g>
<g id="matplotlib.axis_2">
<g id="ytick_1">
<g id="line2d_6">
<defs>
<path d="M 0 0
L -3.5 0
" id="m55b7cb5b78" style="stroke:#000000;stroke-width:0.8;"/>
</defs>
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="46.965625" xlink:href="#m55b7cb5b78" y="140.422727"/>
</g>
</g>
<g id="text_7">
<!-- 0 -->
<g transform="translate(33.603125 144.221946)scale(0.1 -0.1)">
<use xlink:href="#DejaVuSans-30"/>
</g>
</g>
</g>
<g id="ytick_2">
<g id="line2d_7">
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="46.965625" xlink:href="#m55b7cb5b78" y="115.713636"/>
</g>
</g>
<g id="text_8">
<!-- 20 -->
<defs>
<path d="M 19.1875 8.296875
L 53.609375 8.296875
L 53.609375 0
L 7.328125 0
L 7.328125 8.296875
Q 12.9375 14.109375 22.625 23.890625
Q 32.328125 33.6875 34.8125 36.53125
Q 39.546875 41.84375 41.421875 45.53125
Q 43.3125 49.21875 43.3125 52.78125
Q 43.3125 58.59375 39.234375 62.25
Q 35.15625 65.921875 28.609375 65.921875
Q 23.96875 65.921875 18.8125 64.3125
Q 13.671875 62.703125 7.8125 59.421875
L 7.8125 69.390625
Q 13.765625 71.78125 18.9375 73
Q 24.125 74.21875 28.421875 74.21875
Q 39.75 74.21875 46.484375 68.546875
Q 53.21875 62.890625 53.21875 53.421875
Q 53.21875 48.921875 51.53125 44.890625
Q 49.859375 40.875 45.40625 35.40625
Q 44.1875 33.984375 37.640625 27.21875
Q 31.109375 20.453125 19.1875 8.296875
z
" id="DejaVuSans-32"/>
</defs>
<g transform="translate(27.240625 119.512855)scale(0.1 -0.1)">
<use xlink:href="#DejaVuSans-32"/>
<use x="63.623047" xlink:href="#DejaVuSans-30"/>
</g>
</g>
</g>
<g id="ytick_3">
<g id="line2d_8">
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="46.965625" xlink:href="#m55b7cb5b78" y="91.004545"/>
</g>
</g>
<g id="text_9">
<!-- 40 -->
<defs>
<path d="M 37.796875 64.3125
L 12.890625 25.390625
L 37.796875 25.390625
z
M 35.203125 72.90625
L 47.609375 72.90625
L 47.609375 25.390625
L 58.015625 25.390625
L 58.015625 17.1875
L 47.609375 17.1875
L 47.609375 0
L 37.796875 0
L 37.796875 17.1875
L 4.890625 17.1875
L 4.890625 26.703125
z
" id="DejaVuSans-34"/>
</defs>
<g transform="translate(27.240625 94.803764)scale(0.1 -0.1)">
<use xlink:href="#DejaVuSans-34"/>
<use x="63.623047" xlink:href="#DejaVuSans-30"/>
</g>
</g>
</g>
<g id="ytick_4">
<g id="line2d_9">
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="46.965625" xlink:href="#m55b7cb5b78" y="66.295455"/>
</g>
</g>
<g id="text_10">
<!-- 60 -->
<defs>
<path d="M 33.015625 40.375
Q 26.375 40.375 22.484375 35.828125
Q 18.609375 31.296875 18.609375 23.390625
Q 18.609375 15.53125 22.484375 10.953125
Q 26.375 6.390625 33.015625 6.390625
Q 39.65625 6.390625 43.53125 10.953125
Q 47.40625 15.53125 47.40625 23.390625
Q 47.40625 31.296875 43.53125 35.828125
Q 39.65625 40.375 33.015625 40.375
z
M 52.59375 71.296875
L 52.59375 62.3125
Q 48.875 64.0625 45.09375 64.984375
Q 41.3125 65.921875 37.59375 65.921875
Q 27.828125 65.921875 22.671875 59.328125
Q 17.53125 52.734375 16.796875 39.40625
Q 19.671875 43.65625 24.015625 45.921875
Q 28.375 48.1875 33.59375 48.1875
Q 44.578125 48.1875 50.953125 41.515625
Q 57.328125 34.859375 57.328125 23.390625
Q 57.328125 12.15625 50.6875 5.359375
Q 44.046875 -1.421875 33.015625 -1.421875
Q 20.359375 -1.421875 13.671875 8.265625
Q 6.984375 17.96875 6.984375 36.375
Q 6.984375 53.65625 15.1875 63.9375
Q 23.390625 74.21875 37.203125 74.21875
Q 40.921875 74.21875 44.703125 73.484375
Q 48.484375 72.75 52.59375 71.296875
z
" id="DejaVuSans-36"/>
</defs>
<g transform="translate(27.240625 70.094673)scale(0.1 -0.1)">
<use xlink:href="#DejaVuSans-36"/>
<use x="63.623047" xlink:href="#DejaVuSans-30"/>
</g>
</g>
</g>
<g id="ytick_5">
<g id="line2d_10">
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="46.965625" xlink:href="#m55b7cb5b78" y="41.586364"/>
</g>
</g>
<g id="text_11">
<!-- 80 -->
<defs>
<path d="M 31.78125 34.625
Q 24.75 34.625 20.71875 30.859375
Q 16.703125 27.09375 16.703125 20.515625
Q 16.703125 13.921875 20.71875 10.15625
Q 24.75 6.390625 31.78125 6.390625
Q 38.8125 6.390625 42.859375 10.171875
Q 46.921875 13.96875 46.921875 20.515625
Q 46.921875 27.09375 42.890625 30.859375
Q 38.875 34.625 31.78125 34.625
z
M 21.921875 38.8125
Q 15.578125 40.375 12.03125 44.71875
Q 8.5 49.078125 8.5 55.328125
Q 8.5 64.0625 14.71875 69.140625
Q 20.953125 74.21875 31.78125 74.21875
Q 42.671875 74.21875 48.875 69.140625
Q 55.078125 64.0625 55.078125 55.328125
Q 55.078125 49.078125 51.53125 44.71875
Q 48 40.375 41.703125 38.8125
Q 48.828125 37.15625 52.796875 32.3125
Q 56.78125 27.484375 56.78125 20.515625
Q 56.78125 9.90625 50.3125 4.234375
Q 43.84375 -1.421875 31.78125 -1.421875
Q 19.734375 -1.421875 13.25 4.234375
Q 6.78125 9.90625 6.78125 20.515625
Q 6.78125 27.484375 10.78125 32.3125
Q 14.796875 37.15625 21.921875 38.8125
z
M 18.3125 54.390625
Q 18.3125 48.734375 21.84375 45.5625
Q 25.390625 42.390625 31.78125 42.390625
Q 38.140625 42.390625 41.71875 45.5625
Q 45.3125 48.734375 45.3125 54.390625
Q 45.3125 60.0625 41.71875 63.234375
Q 38.140625 66.40625 31.78125 66.40625
Q 25.390625 66.40625 21.84375 63.234375
Q 18.3125 60.0625 18.3125 54.390625
z
" id="DejaVuSans-38"/>
</defs>
<g transform="translate(27.240625 45.385582)scale(0.1 -0.1)">
<use xlink:href="#DejaVuSans-38"/>
<use x="63.623047" xlink:href="#DejaVuSans-30"/>
</g>
</g>
</g>
<g id="ytick_6">
<g id="line2d_11">
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="46.965625" xlink:href="#m55b7cb5b78" y="16.877273"/>
</g>
</g>
<g id="text_12">
<!-- 100 -->
<g transform="translate(20.878125 20.676491)scale(0.1 -0.1)">
<use xlink:href="#DejaVuSans-31"/>
<use x="63.623047" xlink:href="#DejaVuSans-30"/>
<use x="127.246094" xlink:href="#DejaVuSans-30"/>
</g>
</g>
</g>
<g id="text_13">
<!-- f(x) -->
<defs>
<path d="M 37.109375 75.984375
L 37.109375 68.5
L 28.515625 68.5
Q 23.6875 68.5 21.796875 66.546875
Q 19.921875 64.59375 19.921875 59.515625
L 19.921875 54.6875
L 34.71875 54.6875
L 34.71875 47.703125
L 19.921875 47.703125
L 19.921875 0
L 10.890625 0
L 10.890625 47.703125
L 2.296875 47.703125
L 2.296875 54.6875
L 10.890625 54.6875
L 10.890625 58.5
Q 10.890625 67.625 15.140625 71.796875
Q 19.390625 75.984375 28.609375 75.984375
z
" id="DejaVuSans-66"/>
<path d="M 31 75.875
Q 24.46875 64.65625 21.28125 53.65625
Q 18.109375 42.671875 18.109375 31.390625
Q 18.109375 20.125 21.3125 9.0625
Q 24.515625 -2 31 -13.1875
L 23.1875 -13.1875
Q 15.875 -1.703125 12.234375 9.375
Q 8.59375 20.453125 8.59375 31.390625
Q 8.59375 42.28125 12.203125 53.3125
Q 15.828125 64.359375 23.1875 75.875
z
" id="DejaVuSans-28"/>
<path d="M 8.015625 75.875
L 15.828125 75.875
Q 23.140625 64.359375 26.78125 53.3125
Q 30.421875 42.28125 30.421875 31.390625
Q 30.421875 20.453125 26.78125 9.375
Q 23.140625 -1.703125 15.828125 -13.1875
L 8.015625 -13.1875
Q 14.5 -2 17.703125 9.0625
Q 20.90625 20.125 20.90625 31.390625
Q 20.90625 42.671875 17.703125 53.65625
Q 14.5 64.65625 8.015625 75.875
z
" id="DejaVuSans-29"/>
</defs>
<g transform="translate(14.798438 87.271094)rotate(-90)scale(0.1 -0.1)">
<use xlink:href="#DejaVuSans-66"/>
<use x="35.205078" xlink:href="#DejaVuSans-28"/>
<use x="74.21875" xlink:href="#DejaVuSans-78"/>
<use x="133.398438" xlink:href="#DejaVuSans-29"/>
</g>
</g>
</g>
<g id="line2d_12">
<path clip-path="url(#p168d802f33)" d="M 55.842898 16.877273
L 60.281534 28.922955
L 64.72017 40.350909
L 69.158807 51.161136
L 73.597443 61.353636
L 78.03608 70.928409
L 82.474716 79.885455
L 86.025625 86.606327
L 89.576534 92.931855
L 93.127443 98.862036
L 96.678352 104.396873
L 100.229261 109.536364
L 103.78017 114.280509
L 107.33108 118.629309
L 110.881989 122.582764
L 114.432898 126.140873
L 117.983807 129.303636
L 120.646989 131.416264
L 123.31017 133.306509
L 125.973352 134.974373
L 128.636534 136.419855
L 131.299716 137.642955
L 133.962898 138.643673
L 136.62608 139.422009
L 139.289261 139.977964
L 141.952443 140.311536
L 144.615625 140.422727
L 147.278807 140.311536
L 149.941989 139.977964
L 152.60517 139.422009
L 155.268352 138.643673
L 157.931534 137.642955
L 160.594716 136.419855
L 163.257898 134.974373
L 165.92108 133.306509
L 168.584261 131.416264
L 171.247443 129.303636
L 173.910625 126.968627
L 177.461534 123.509355
L 181.012443 119.654736
L 184.563352 115.404773
L 188.114261 110.759464
L 191.66517 105.718809
L 195.21608 100.282809
L 198.766989 94.451464
L 202.317898 88.224773
L 205.868807 81.602736
L 209.419716 74.585355
L 213.858352 65.257673
L 218.296989 55.312264
L 222.735625 44.749127
L 227.174261 33.568264
L 231.612898 21.769673
L 232.500625 19.335827
L 232.500625 19.335827
" style="fill:none;stroke:#1f77b4;stroke-linecap:square;stroke-width:1.5;"/>
</g>
<g id="line2d_13">
<path clip-path="url(#p168d802f33)" d="M 233.388352 16.877273
L 197.879261 95.946364
L 176.573807 124.411236
L 163.790534 134.658591
L 156.12057 138.347638
L 151.518592 139.675695
L 148.757405 140.153796
L 147.100693 140.325912
L 146.106666 140.387874
L 145.51025 140.41018
L 145.1524 140.41821
" style="fill:none;stroke:#ff7f0e;stroke-linecap:square;stroke-width:1.5;"/>
<defs>
<path d="M 0 3
C 0.795609 3 1.55874 2.683901 2.12132 2.12132
C 2.683901 1.55874 3 0.795609 3 0
C 3 -0.795609 2.683901 -1.55874 2.12132 -2.12132
C 1.55874 -2.683901 0.795609 -3 0 -3
C -0.795609 -3 -1.55874 -2.683901 -2.12132 -2.12132
C -2.683901 -1.55874 -3 -0.795609 -3 0
C -3 0.795609 -2.683901 1.55874 -2.12132 2.12132
C -1.55874 2.683901 -0.795609 3 0 3
z
" id="mdab67320c4" style="stroke:#ff7f0e;"/>
</defs>
<g clip-path="url(#p168d802f33)">
<use style="fill:#ff7f0e;stroke:#ff7f0e;" x="233.388352" xlink:href="#mdab67320c4" y="16.877273"/>
<use style="fill:#ff7f0e;stroke:#ff7f0e;" x="197.879261" xlink:href="#mdab67320c4" y="95.946364"/>
<use style="fill:#ff7f0e;stroke:#ff7f0e;" x="176.573807" xlink:href="#mdab67320c4" y="124.411236"/>
<use style="fill:#ff7f0e;stroke:#ff7f0e;" x="163.790534" xlink:href="#mdab67320c4" y="134.658591"/>
<use style="fill:#ff7f0e;stroke:#ff7f0e;" x="156.12057" xlink:href="#mdab67320c4" y="138.347638"/>
<use style="fill:#ff7f0e;stroke:#ff7f0e;" x="151.518592" xlink:href="#mdab67320c4" y="139.675695"/>
<use style="fill:#ff7f0e;stroke:#ff7f0e;" x="148.757405" xlink:href="#mdab67320c4" y="140.153796"/>
<use style="fill:#ff7f0e;stroke:#ff7f0e;" x="147.100693" xlink:href="#mdab67320c4" y="140.325912"/>
<use style="fill:#ff7f0e;stroke:#ff7f0e;" x="146.106666" xlink:href="#mdab67320c4" y="140.387874"/>
<use style="fill:#ff7f0e;stroke:#ff7f0e;" x="145.51025" xlink:href="#mdab67320c4" y="140.41018"/>
<use style="fill:#ff7f0e;stroke:#ff7f0e;" x="145.1524" xlink:href="#mdab67320c4" y="140.41821"/>
</g>
</g>
<g id="patch_3">
<path d="M 46.965625 146.6
L 46.965625 10.7
" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/>
</g>
<g id="patch_4">
<path d="M 242.265625 146.6
L 242.265625 10.7
" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/>
</g>
<g id="patch_5">
<path d="M 46.965625 146.6
L 242.265625 146.6
" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/>
</g>
<g id="patch_6">
<path d="M 46.965625 10.7
L 242.265625 10.7
" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/>
</g>
</g>
</g>
<defs>
<clipPath id="p168d802f33">
<rect height="135.9" width="195.3" x="46.965625" y="10.7"/>
</clipPath>
</defs>
</svg>
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Created with matplotlib (http://matplotlib.org/) -->
<svg height="184.15625pt" version="1.1" viewBox="0 0 252.965625 184.15625" width="252.965625pt" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<defs>
<style type="text/css">
*{stroke-linecap:butt;stroke-linejoin:round;}
</style>
</defs>
<g id="figure_1">
<g id="patch_1">
<path d="M 0 184.15625
L 252.965625 184.15625
L 252.965625 -0
L 0 -0
z
" style="fill:none;"/>
</g>
<g id="axes_1">
<g id="patch_2">
<path d="M 46.965625 146.6
L 242.265625 146.6
L 242.265625 10.7
L 46.965625 10.7
z
" style="fill:#ffffff;"/>
</g>
<g id="matplotlib.axis_1">
<g id="xtick_1">
<g id="line2d_1">
<defs>
<path d="M 0 0
L 0 3.5
" id="m9b0e8d25f9" style="stroke:#000000;stroke-width:0.8;"/>
</defs>
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="55.842898" xlink:href="#m9b0e8d25f9" y="146.6"/>
</g>
</g>
<g id="text_1">
<!-- −10 -->
<defs>
<path d="M 10.59375 35.5
L 73.1875 35.5
L 73.1875 27.203125
L 10.59375 27.203125
z
" id="DejaVuSans-2212"/>
<path d="M 12.40625 8.296875
L 28.515625 8.296875
L 28.515625 63.921875
L 10.984375 60.40625
L 10.984375 69.390625
L 28.421875 72.90625
L 38.28125 72.90625
L 38.28125 8.296875
L 54.390625 8.296875
L 54.390625 0
L 12.40625 0
z
" id="DejaVuSans-31"/>
<path d="M 31.78125 66.40625
Q 24.171875 66.40625 20.328125 58.90625
Q 16.5 51.421875 16.5 36.375
Q 16.5 21.390625 20.328125 13.890625
Q 24.171875 6.390625 31.78125 6.390625
Q 39.453125 6.390625 43.28125 13.890625
Q 47.125 21.390625 47.125 36.375
Q 47.125 51.421875 43.28125 58.90625
Q 39.453125 66.40625 31.78125 66.40625
z
M 31.78125 74.21875
Q 44.046875 74.21875 50.515625 64.515625
Q 56.984375 54.828125 56.984375 36.375
Q 56.984375 17.96875 50.515625 8.265625
Q 44.046875 -1.421875 31.78125 -1.421875
Q 19.53125 -1.421875 13.0625 8.265625
Q 6.59375 17.96875 6.59375 36.375
Q 6.59375 54.828125 13.0625 64.515625
Q 19.53125 74.21875 31.78125 74.21875
z
" id="DejaVuSans-30"/>
</defs>
<g transform="translate(45.290554 161.198437)scale(0.1 -0.1)">
<use xlink:href="#DejaVuSans-2212"/>
<use x="83.789062" xlink:href="#DejaVuSans-31"/>
<use x="147.412109" xlink:href="#DejaVuSans-30"/>
</g>
</g>
</g>
<g id="xtick_2">
<g id="line2d_2">
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="100.229261" xlink:href="#m9b0e8d25f9" y="146.6"/>
</g>
</g>
<g id="text_2">
<!-- −5 -->
<defs>
<path d="M 10.796875 72.90625
L 49.515625 72.90625
L 49.515625 64.59375
L 19.828125 64.59375
L 19.828125 46.734375
Q 21.96875 47.46875 24.109375 47.828125
Q 26.265625 48.1875 28.421875 48.1875
Q 40.625 48.1875 47.75 41.5
Q 54.890625 34.8125 54.890625 23.390625
Q 54.890625 11.625 47.5625 5.09375
Q 40.234375 -1.421875 26.90625 -1.421875
Q 22.3125 -1.421875 17.546875 -0.640625
Q 12.796875 0.140625 7.71875 1.703125
L 7.71875 11.625
Q 12.109375 9.234375 16.796875 8.0625
Q 21.484375 6.890625 26.703125 6.890625
Q 35.15625 6.890625 40.078125 11.328125
Q 45.015625 15.765625 45.015625 23.390625
Q 45.015625 31 40.078125 35.4375
Q 35.15625 39.890625 26.703125 39.890625
Q 22.75 39.890625 18.8125 39.015625
Q 14.890625 38.140625 10.796875 36.28125
z
" id="DejaVuSans-35"/>
</defs>
<g transform="translate(92.858168 161.198437)scale(0.1 -0.1)">
<use xlink:href="#DejaVuSans-2212"/>
<use x="83.789062" xlink:href="#DejaVuSans-35"/>
</g>
</g>
</g>
<g id="xtick_3">
<g id="line2d_3">
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="144.615625" xlink:href="#m9b0e8d25f9" y="146.6"/>
</g>
</g>
<g id="text_3">
<!-- 0 -->
<g transform="translate(141.434375 161.198437)scale(0.1 -0.1)">
<use xlink:href="#DejaVuSans-30"/>
</g>
</g>
</g>
<g id="xtick_4">
<g id="line2d_4">
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="189.001989" xlink:href="#m9b0e8d25f9" y="146.6"/>
</g>
</g>
<g id="text_4">
<!-- 5 -->
<g transform="translate(185.820739 161.198437)scale(0.1 -0.1)">
<use xlink:href="#DejaVuSans-35"/>
</g>
</g>
</g>
<g id="xtick_5">
<g id="line2d_5">
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="233.388352" xlink:href="#m9b0e8d25f9" y="146.6"/>
</g>
</g>
<g id="text_5">
<!-- 10 -->
<g transform="translate(227.025852 161.198437)scale(0.1 -0.1)">
<use xlink:href="#DejaVuSans-31"/>
<use x="63.623047" xlink:href="#DejaVuSans-30"/>
</g>
</g>
</g>
<g id="text_6">
<!-- x -->
<defs>
<path d="M 54.890625 54.6875
L 35.109375 28.078125
L 55.90625 0
L 45.3125 0
L 29.390625 21.484375
L 13.484375 0
L 2.875 0
L 24.125 28.609375
L 4.6875 54.6875
L 15.28125 54.6875
L 29.78125 35.203125
L 44.28125 54.6875
z
" id="DejaVuSans-78"/>
</defs>
<g transform="translate(141.65625 174.876562)scale(0.1 -0.1)">
<use xlink:href="#DejaVuSans-78"/>
</g>
</g>
</g>
<g id="matplotlib.axis_2">
<g id="ytick_1">
<g id="line2d_6">
<defs>
<path d="M 0 0
L -3.5 0
" id="m4ec49732eb" style="stroke:#000000;stroke-width:0.8;"/>
</defs>
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="46.965625" xlink:href="#m4ec49732eb" y="140.422727"/>
</g>
</g>
<g id="text_7">
<!-- 0 -->
<g transform="translate(33.603125 144.221946)scale(0.1 -0.1)">
<use xlink:href="#DejaVuSans-30"/>
</g>
</g>
</g>
<g id="ytick_2">
<g id="line2d_7">
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="46.965625" xlink:href="#m4ec49732eb" y="115.713636"/>
</g>
</g>
<g id="text_8">
<!-- 20 -->
<defs>
<path d="M 19.1875 8.296875
L 53.609375 8.296875
L 53.609375 0
L 7.328125 0
L 7.328125 8.296875
Q 12.9375 14.109375 22.625 23.890625
Q 32.328125 33.6875 34.8125 36.53125
Q 39.546875 41.84375 41.421875 45.53125
Q 43.3125 49.21875 43.3125 52.78125
Q 43.3125 58.59375 39.234375 62.25
Q 35.15625 65.921875 28.609375 65.921875
Q 23.96875 65.921875 18.8125 64.3125
Q 13.671875 62.703125 7.8125 59.421875
L 7.8125 69.390625
Q 13.765625 71.78125 18.9375 73
Q 24.125 74.21875 28.421875 74.21875
Q 39.75 74.21875 46.484375 68.546875
Q 53.21875 62.890625 53.21875 53.421875
Q 53.21875 48.921875 51.53125 44.890625
Q 49.859375 40.875 45.40625 35.40625
Q 44.1875 33.984375 37.640625 27.21875
Q 31.109375 20.453125 19.1875 8.296875
z
" id="DejaVuSans-32"/>
</defs>
<g transform="translate(27.240625 119.512855)scale(0.1 -0.1)">
<use xlink:href="#DejaVuSans-32"/>
<use x="63.623047" xlink:href="#DejaVuSans-30"/>
</g>
</g>
</g>
<g id="ytick_3">
<g id="line2d_8">
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="46.965625" xlink:href="#m4ec49732eb" y="91.004545"/>
</g>
</g>
<g id="text_9">
<!-- 40 -->
<defs>
<path d="M 37.796875 64.3125
L 12.890625 25.390625
L 37.796875 25.390625
z
M 35.203125 72.90625
L 47.609375 72.90625
L 47.609375 25.390625
L 58.015625 25.390625
L 58.015625 17.1875
L 47.609375 17.1875
L 47.609375 0
L 37.796875 0
L 37.796875 17.1875
L 4.890625 17.1875
L 4.890625 26.703125
z
" id="DejaVuSans-34"/>
</defs>
<g transform="translate(27.240625 94.803764)scale(0.1 -0.1)">
<use xlink:href="#DejaVuSans-34"/>
<use x="63.623047" xlink:href="#DejaVuSans-30"/>
</g>
</g>
</g>
<g id="ytick_4">
<g id="line2d_9">
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="46.965625" xlink:href="#m4ec49732eb" y="66.295455"/>
</g>
</g>
<g id="text_10">
<!-- 60 -->
<defs>
<path d="M 33.015625 40.375
Q 26.375 40.375 22.484375 35.828125
Q 18.609375 31.296875 18.609375 23.390625
Q 18.609375 15.53125 22.484375 10.953125
Q 26.375 6.390625 33.015625 6.390625
Q 39.65625 6.390625 43.53125 10.953125
Q 47.40625 15.53125 47.40625 23.390625
Q 47.40625 31.296875 43.53125 35.828125
Q 39.65625 40.375 33.015625 40.375
z
M 52.59375 71.296875
L 52.59375 62.3125
Q 48.875 64.0625 45.09375 64.984375
Q 41.3125 65.921875 37.59375 65.921875
Q 27.828125 65.921875 22.671875 59.328125
Q 17.53125 52.734375 16.796875 39.40625
Q 19.671875 43.65625 24.015625 45.921875
Q 28.375 48.1875 33.59375 48.1875
Q 44.578125 48.1875 50.953125 41.515625
Q 57.328125 34.859375 57.328125 23.390625
Q 57.328125 12.15625 50.6875 5.359375
Q 44.046875 -1.421875 33.015625 -1.421875
Q 20.359375 -1.421875 13.671875 8.265625
Q 6.984375 17.96875 6.984375 36.375
Q 6.984375 53.65625 15.1875 63.9375
Q 23.390625 74.21875 37.203125 74.21875
Q 40.921875 74.21875 44.703125 73.484375
Q 48.484375 72.75 52.59375 71.296875
z
" id="DejaVuSans-36"/>
</defs>
<g transform="translate(27.240625 70.094673)scale(0.1 -0.1)">
<use xlink:href="#DejaVuSans-36"/>
<use x="63.623047" xlink:href="#DejaVuSans-30"/>
</g>
</g>
</g>
<g id="ytick_5">
<g id="line2d_10">
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="46.965625" xlink:href="#m4ec49732eb" y="41.586364"/>
</g>
</g>
<g id="text_11">
<!-- 80 -->
<defs>
<path d="M 31.78125 34.625
Q 24.75 34.625 20.71875 30.859375
Q 16.703125 27.09375 16.703125 20.515625
Q 16.703125 13.921875 20.71875 10.15625
Q 24.75 6.390625 31.78125 6.390625
Q 38.8125 6.390625 42.859375 10.171875
Q 46.921875 13.96875 46.921875 20.515625
Q 46.921875 27.09375 42.890625 30.859375
Q 38.875 34.625 31.78125 34.625
z
M 21.921875 38.8125
Q 15.578125 40.375 12.03125 44.71875
Q 8.5 49.078125 8.5 55.328125
Q 8.5 64.0625 14.71875 69.140625
Q 20.953125 74.21875 31.78125 74.21875
Q 42.671875 74.21875 48.875 69.140625
Q 55.078125 64.0625 55.078125 55.328125
Q 55.078125 49.078125 51.53125 44.71875
Q 48 40.375 41.703125 38.8125
Q 48.828125 37.15625 52.796875 32.3125
Q 56.78125 27.484375 56.78125 20.515625
Q 56.78125 9.90625 50.3125 4.234375
Q 43.84375 -1.421875 31.78125 -1.421875
Q 19.734375 -1.421875 13.25 4.234375
Q 6.78125 9.90625 6.78125 20.515625
Q 6.78125 27.484375 10.78125 32.3125
Q 14.796875 37.15625 21.921875 38.8125
z
M 18.3125 54.390625
Q 18.3125 48.734375 21.84375 45.5625
Q 25.390625 42.390625 31.78125 42.390625
Q 38.140625 42.390625 41.71875 45.5625
Q 45.3125 48.734375 45.3125 54.390625
Q 45.3125 60.0625 41.71875 63.234375
Q 38.140625 66.40625 31.78125 66.40625
Q 25.390625 66.40625 21.84375 63.234375
Q 18.3125 60.0625 18.3125 54.390625
z
" id="DejaVuSans-38"/>
</defs>
<g transform="translate(27.240625 45.385582)scale(0.1 -0.1)">
<use xlink:href="#DejaVuSans-38"/>
<use x="63.623047" xlink:href="#DejaVuSans-30"/>
</g>
</g>
</g>
<g id="ytick_6">
<g id="line2d_11">
<g>
<use style="stroke:#000000;stroke-width:0.8;" x="46.965625" xlink:href="#m4ec49732eb" y="16.877273"/>
</g>
</g>
<g id="text_12">
<!-- 100 -->
<g transform="translate(20.878125 20.676491)scale(0.1 -0.1)">
<use xlink:href="#DejaVuSans-31"/>
<use x="63.623047" xlink:href="#DejaVuSans-30"/>
<use x="127.246094" xlink:href="#DejaVuSans-30"/>
</g>
</g>
</g>
<g id="text_13">
<!-- f(x) -->
<defs>
<path d="M 37.109375 75.984375
L 37.109375 68.5
L 28.515625 68.5
Q 23.6875 68.5 21.796875 66.546875
Q 19.921875 64.59375 19.921875 59.515625
L 19.921875 54.6875
L 34.71875 54.6875
L 34.71875 47.703125
L 19.921875 47.703125
L 19.921875 0
L 10.890625 0
L 10.890625 47.703125
L 2.296875 47.703125
L 2.296875 54.6875
L 10.890625 54.6875
L 10.890625 58.5
Q 10.890625 67.625 15.140625 71.796875
Q 19.390625 75.984375 28.609375 75.984375
z
" id="DejaVuSans-66"/>
<path d="M 31 75.875
Q 24.46875 64.65625 21.28125 53.65625
Q 18.109375 42.671875 18.109375 31.390625
Q 18.109375 20.125 21.3125 9.0625
Q 24.515625 -2 31 -13.1875
L 23.1875 -13.1875
Q 15.875 -1.703125 12.234375 9.375
Q 8.59375 20.453125 8.59375 31.390625
Q 8.59375 42.28125 12.203125 53.3125
Q 15.828125 64.359375 23.1875 75.875
z
" id="DejaVuSans-28"/>
<path d="M 8.015625 75.875
L 15.828125 75.875
Q 23.140625 64.359375 26.78125 53.3125
Q 30.421875 42.28125 30.421875 31.390625
Q 30.421875 20.453125 26.78125 9.375
Q 23.140625 -1.703125 15.828125 -13.1875
L 8.015625 -13.1875
Q 14.5 -2 17.703125 9.0625
Q 20.90625 20.125 20.90625 31.390625
Q 20.90625 42.671875 17.703125 53.65625
Q 14.5 64.65625 8.015625 75.875
z
" id="DejaVuSans-29"/>
</defs>
<g transform="translate(14.798438 87.271094)rotate(-90)scale(0.1 -0.1)">
<use xlink:href="#DejaVuSans-66"/>
<use x="35.205078" xlink:href="#DejaVuSans-28"/>
<use x="74.21875" xlink:href="#DejaVuSans-78"/>
<use x="133.398438" xlink:href="#DejaVuSans-29"/>
</g>
</g>
</g>
<g id="line2d_12">
<path clip-path="url(#p7d0fb62ad1)" d="M 55.842898 16.877273
L 60.281534 28.922955
L 64.72017 40.350909
L 69.158807 51.161136
L 73.597443 61.353636
L 78.03608 70.928409
L 82.474716 79.885455
L 86.025625 86.606327
L 89.576534 92.931855
L 93.127443 98.862036
L 96.678352 104.396873
L 100.229261 109.536364
L 103.78017 114.280509
L 107.33108 118.629309
L 110.881989 122.582764
L 114.432898 126.140873
L 117.983807 129.303636
L 120.646989 131.416264
L 123.31017 133.306509
L 125.973352 134.974373
L 128.636534 136.419855
L 131.299716 137.642955
L 133.962898 138.643673
L 136.62608 139.422009
L 139.289261 139.977964
L 141.952443 140.311536
L 144.615625 140.422727
L 147.278807 140.311536
L 149.941989 139.977964
L 152.60517 139.422009
L 155.268352 138.643673
L 157.931534 137.642955
L 160.594716 136.419855
L 163.257898 134.974373
L 165.92108 133.306509
L 168.584261 131.416264
L 171.247443 129.303636
L 173.910625 126.968627
L 177.461534 123.509355
L 181.012443 119.654736
L 184.563352 115.404773
L 188.114261 110.759464
L 191.66517 105.718809
L 195.21608 100.282809
L 198.766989 94.451464
L 202.317898 88.224773
L 205.868807 81.602736
L 209.419716 74.585355
L 213.858352 65.257673
L 218.296989 55.312264
L 222.735625 44.749127
L 227.174261 33.568264
L 231.612898 21.769673
L 232.500625 19.335827
L 232.500625 19.335827
" style="fill:none;stroke:#1f77b4;stroke-linecap:square;stroke-width:1.5;"/>
</g>
<g id="line2d_13">
<path clip-path="url(#p7d0fb62ad1)" d="M 233.388352 16.877273
L 224.51108 40.350909
L 216.521534 59.364555
L 209.330943 74.765607
L 202.859411 87.24046
L 197.035033 97.345091
L 191.793092 105.529842
L 187.075345 112.15949
L 182.829373 117.529505
L 179.007998 121.879217
L 175.568761 125.402484
" style="fill:none;stroke:#ff7f0e;stroke-linecap:square;stroke-width:1.5;"/>
<defs>
<path d="M 0 3
C 0.795609 3 1.55874 2.683901 2.12132 2.12132
C 2.683901 1.55874 3 0.795609 3 0
C 3 -0.795609 2.683901 -1.55874 2.12132 -2.12132
C 1.55874 -2.683901 0.795609 -3 0 -3
C -0.795609 -3 -1.55874 -2.683901 -2.12132 -2.12132
C -2.683901 -1.55874 -3 -0.795609 -3 0
C -3 0.795609 -2.683901 1.55874 -2.12132 2.12132
C -1.55874 2.683901 -0.795609 3 0 3
z
" id="m82a4853316" style="stroke:#ff7f0e;"/>
</defs>
<g clip-path="url(#p7d0fb62ad1)">
<use style="fill:#ff7f0e;stroke:#ff7f0e;" x="233.388352" xlink:href="#m82a4853316" y="16.877273"/>
<use style="fill:#ff7f0e;stroke:#ff7f0e;" x="224.51108" xlink:href="#m82a4853316" y="40.350909"/>
<use style="fill:#ff7f0e;stroke:#ff7f0e;" x="216.521534" xlink:href="#m82a4853316" y="59.364555"/>
<use style="fill:#ff7f0e;stroke:#ff7f0e;" x="209.330943" xlink:href="#m82a4853316" y="74.765607"/>
<use style="fill:#ff7f0e;stroke:#ff7f0e;" x="202.859411" xlink:href="#m82a4853316" y="87.24046"/>
<use style="fill:#ff7f0e;stroke:#ff7f0e;" x="197.035033" xlink:href="#m82a4853316" y="97.345091"/>
<use style="fill:#ff7f0e;stroke:#ff7f0e;" x="191.793092" xlink:href="#m82a4853316" y="105.529842"/>
<use style="fill:#ff7f0e;stroke:#ff7f0e;" x="187.075345" xlink:href="#m82a4853316" y="112.15949"/>
<use style="fill:#ff7f0e;stroke:#ff7f0e;" x="182.829373" xlink:href="#m82a4853316" y="117.529505"/>
<use style="fill:#ff7f0e;stroke:#ff7f0e;" x="179.007998" xlink:href="#m82a4853316" y="121.879217"/>
<use style="fill:#ff7f0e;stroke:#ff7f0e;" x="175.568761" xlink:href="#m82a4853316" y="125.402484"/>
</g>
</g>
<g id="patch_3">
<path d="M 46.965625 146.6
L 46.965625 10.7
" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/>
</g>
<g id="patch_4">
<path d="M 242.265625 146.6
L 242.265625 10.7
" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/>
</g>
<g id="patch_5">
<path d="M 46.965625 146.6
L 242.265625 146.6
" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/>
</g>
<g id="patch_6">
<path d="M 46.965625 10.7
L 242.265625 10.7
" style="fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;"/>
</g>
</g>
</g>
<defs>
<clipPath id="p7d0fb62ad1">
<rect height="135.9" width="195.3" x="46.965625" y="10.7"/>
</clipPath>
</defs>
</svg>
此差异已折叠。
此差异已折叠。
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册