Como traçar a função fatorial?

Como traçar a função fatorial?

Sou muito novo no tikz e no pgf. Estou traçando complexidades de tempo Big O e depois de analisar exemplos suficientes, consegui criar exatamente os gráficos que desejo, com exceção do fatorial. Simplesmente traçando x! cria este estranho gráfico de degraus. Eu gostaria que fosse uma curva suave. eu encontreiessa questãoque tem uma resposta de using semilogyaxis. No entanto, simplesmente mudar para isso não ajuda, o gráfico fatorial parece o mesmo. Também tentei fazer um gráfico totalmente novo seguindo o exemplo de resposta da pergunta e ele se sobrepôs, mas o gráfico fatorial parecia incorreto, presumo que tenha a ver com o eixo logarítmico y e não tenho certeza de como ajustar as coordenadas. Eu só preciso de algo parecido com f(x) = x!o que deve produzir um gráfico como abaixo:

Gráfico Fatorial Desejado

Aqui está um MWE do que tenho até agora:

\documentclass{article}
\usepackage[margin=0.5in]{geometry}
\usepackage[utf8]{inputenc}

\usepackage{pgfplots}
\pgfplotsset{width=10cm,compat=1.9}

\begin{document}

\begin{tikzpicture}
  \begin{axis}[
    grid = major,
    clip = true,
    ticks = none,
    width=0.8\textwidth,
    height=0.6\textwidth,
    every axis plot/.append style={very thick},
    axis line style = ultra thick,
    clip mode=individual,
    restrict y to domain=0:10,
    restrict x to domain=0:10,
    axis x line = left,
    axis y line = left,
    domain = 0.00:10,
    xmin = 0,
    xmax = 11,
    ymin = 0,
    ymax = 11,
    xlabel = n,
    ylabel = no. of operations,
    xlabel style = {at={(axis description cs:0.5,-0.1)},anchor=south},
    ylabel style = {at={(axis description cs:-0.08,0.5)},anchor=north},
    label style = {font=\LARGE\bf},
  ]
\addplot [
    samples=100, 
    color=red,
]
{x^2}node[above,pos=1,style={font=\Large}]{$\mathcal{O}(n^2)$};
\addplot [
    samples=100, 
    color=blue,
]
{x}node[above,pos=1,style={font=\Large}]{$\mathcal{O}(n)$};
\addplot [
    samples=100, 
    color=orange,
]
{log2 x}node[above,pos=1,style={font=\Large}]{$\mathcal{O}(\log{}n)$};
\addplot [
    samples=100, 
    color=black,
]
{x*(log2 x)}node[above,pos=1,style={font=\Large}]{$\mathcal{O}(n\log{}n)$};
\addplot [
    samples=100, 
    color=magenta,
]
{1}node[above,pos=1,style={font=\Large}]{$\mathcal{O}(1)$};
\addplot [
    samples=100, 
    color=cyan,
]
{x^3}node[above,pos=1,style={font=\Large}]{$\mathcal{O}(n^3)$};

%Creates stair-step like plot
\addplot [
    samples=100, 
    color=green,
]{x!}node[above,pos=1,style={font=\Large}]{$\mathcal{O}(n!)$};
\end{axis}
\end{tikzpicture}
\end{document}

O que produz o seguinte gráfico:

Saída do MWE

Responder1

Eu recrio a solução @haver dehttps://tex.stackexchange.com/a/520121/8650para a função Gamma com código OP - para ajudar as pessoas que procuram fatorial contínuo. O fatorial real só é definido para números inteiros - vejahttps://en.wikipedia.org/wiki/Factorial.x! = Γ(x + 1)

Esta solução precisa gnuplote --shell-escape:

\documentclass{article}
\usepackage[margin=0.5in]{geometry}
\usepackage[utf8]{inputenc}

\usepackage{pgfplots}
\pgfplotsset{width=10cm,compat=1.9}

\begin{document}

\begin{tikzpicture}
  \begin{axis}[
    grid = major,
    clip = true,
    ticks = none,
    width=0.8\textwidth,
    height=0.6\textwidth,
    every axis plot/.append style={very thick},
    axis line style = ultra thick,
    clip mode=individual,
    restrict y to domain=0:10,
    restrict x to domain=0:10,
    axis x line = left,
    axis y line = left,
    domain = 0.00:10,
    xmin = 0,
    xmax = 11,
    ymin = 0,
    ymax = 11,
    xlabel = n,
    ylabel = no. of operations,
    xlabel style = {at={(axis description cs:0.5,-0.1)},anchor=south},
    ylabel style = {at={(axis description cs:-0.08,0.5)},anchor=north},
    label style = {font=\LARGE\bf},
  ]
\addplot [
    samples=100, 
    color=red,
]
{x^2}node[above,pos=1,style={font=\Large}]{$\mathcal{O}(n^2)$};
\addplot [
    samples=100, 
    color=blue,
]
{x}node[above,pos=1,style={font=\Large}]{$\mathcal{O}(n)$};
\addplot [
    samples=100, 
    color=orange,
]
{log2 x}node[above,pos=1,style={font=\Large}]{$\mathcal{O}(\log{}n)$};
\addplot [
    samples=100, 
    color=black,
]
{x*(log2 x)}node[above,pos=1,style={font=\Large}]{$\mathcal{O}(n\log{}n)$};
\addplot [
    samples=100, 
    color=magenta,
]
{1}node[above,pos=1,style={font=\Large}]{$\mathcal{O}(1)$};
\addplot [
    samples=100, 
    color=cyan,
]
{x^3}node[above,pos=1,style={font=\Large}]{$\mathcal{O}(n^3)$};

%Creates stair-step like plot
\addplot [
    samples=100, 
    color=green,
]{x!}node[above,pos=1,style={font=\Large}]{$\mathcal{O}(n!)$};

\addplot [
  samples=100,
  color=green, 
] gnuplot{gamma(x+1)} node[above,pos=1,style={font=\Large}]{$\mathcal{O}(n!)$};

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

Gráfico incluindo Gamme(x+1)

informação relacionada