#plot #latex #normal-distribution #pgfplots
Вопрос:
Я пытаюсь построить функцию плотности вероятности различных нормальных распределений в latex. Все они имеют среднее значение 0, а стандартные отклонения составляют: 0,4339, 0,4931 и 0,3665.
Я использую этот код:
documentclass[titlepage]{article}
usepackage[obeyspaces]{url}
usepackage{caption}
usepackage{xcolor}
usepackage{pgfplots}
usepackage{listings}
usetikzlibrary{calc}
lstset{
showstringspaces=false,
commentstyle=color{red},
keywordstyle=color{blue},
basicstyle=small,
breaklines=true
}
usepackage{amsmath}
usepackage{subcaption}
pgfmathdeclarefunction{gauss}{2}{%
pgfmathparse{1/(#2*sqrt(2*pi))*exp(-((x-#1)^2)/(2*#2^2))}%
}
begin{document}
begin{figure}[h]
centering
begin{subfigure}[h]{0.45linewidth}
begin{tikzpicture}[scale=0.8]
begin{axis}[every axis plot post/.append style={
mark=none,domain=-2:2,samples=50,smooth},
xmin=-1.6,
xmax=1.6,
ymin=0,
xtick={},
%ytick=empty,
enlargelimits=auto
],
addplot {gauss(0, 0.4339)};
addplot {gauss(0, 0.4931)};
addplot {gauss(0, 0.3665)};
addlegendimage{empty legend}
addlegendentry{$x$}
addlegendentry{$y$}
addlegendentry{$z$}
end{axis}
end{tikzpicture}
end{subfigure}
end{figure}
end{document}
В результате получается следующая картина:
Вы можете видеть, что ось y увеличивается до ~1,1. Это не имеет смысла, верно? Поскольку вероятность этого должна быть ниже 1. Кроме того, интеграл функции должен иметь сумму 1, как я понимаю. Таким образом, в целом значения должны быть намного ниже.
Что я делаю не так, я что-то неправильно понимаю?
Ответ №1:
Изменить
pgfmathdeclarefunction{gauss}{2}{%
pgfmathparse{1/(#2*sqrt(2*pi))*exp(-((x-#1)^2)/(2*#2^2))}%
}
в
pgfmathdeclarefunction{gauss}{2}{%
pgfmathparse{exp(-((x-(#1))*((x-(#1)))/(2*(#2)*(#2)))/((#2)*sqrt(2*pi))}%
}
без использования функции питания ^2
, которая на самом деле вызывает pow(#1,2)
, и использования всех скобок: возможно, в вашем дистрибутиве все еще есть эта ошибка.