Desenhe uma segunda linha em um gráfico que seja um reflexo de uma linha gerada aleatoriamente

Desenhe uma segunda linha em um gráfico que seja um reflexo de uma linha gerada aleatoriamente

Estou tendo problemas ao desenhar um caminho de amostra de um processo de movimento browniano padrão mostrando a propriedade de reflexão. No ponto onde a linha tracejada vermelha e a linha azul se encontram, gostaria de espelhar a linha azul sobre a vermelha. Como gero a linha azul aleatoriamente, não tenho ideia de como fazer isso.

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}

\begin{figure}[h]
\centering
\begin{tikzpicture}
  \pgfmathsetseed{952}
  \draw[->] (-1,0) -- (6,0) node[right] {$t$};
  \draw[->] (0,-1) -- (0,4) node[above] {$B_t$};
  \draw[-, red, dashed] (0,0.75) -- (6,0.75);

  \draw[blue] (0,0)
  \foreach \x in {1,...,500}
  { -- ++(0.01,rand*-0.2)
  }
  node[right, black] {$(t,B_t)$}
\end{tikzpicture}
\end{figure}
\end{document}

o código gera a seguinte imagem

Responder1

Se você quiser espelhar apenas parte do caminho, acredito que o uso das bibliotecas spath3seja intersectionsa abordagem mais fácil:

  1. Nomeie/salve o caminho ondulado azul e o tracejado vermelho.
  2. Divida o caminho ondulado na interseção com o tracejado vermelho.
  3. Remova o componente antes da interseção.
  4. Desenhe o caminho restante com a transformação de reflexão.

Estou usando a ext.transformations.mirrorbiblioteca do meutikz-extpacotemas sinta-se à vontade para usar quaisquer soluções fornecidas paraPodemos espelhar uma parte no tikz (“simetria axial”, “reflexão”)?


Também poderíamos definir a mesma semente e desenhar o caminho azul novamente, mas desta vez recortado para que tudo o que resta da interseção seja recortado, mas a área de recorte precisa ser escolhida corretamente.


eu configureiline join=roundpara que não alterne entre a esquadria e o chanfro.

Você descobrirá que o caminho refletido fica acima do caminho original. Se isso não for desejado, podemos alterar a ordem do sorteio.

Código

\documentclass[tikz]{standalone}
%\documentclass{article}
%\usepackage{tikz}
\usetikzlibrary{
  arrows.meta,                % arrow tips
  ext.transformations.mirror, % reflect over axis
  intersections,              % find intersection between paths
  spath3}                     % split and transform paths
\begin{document}
\begin{tikzpicture}[line join=round]
\pgfmathsetseed{952}
\draw[->] (-1,0) -- (6,0) node[right] {$t$};
\draw[->] (0,-1) -- (0,4) node[above] {$B_t$};
\draw[spath/save=horiz, red, dashed] (0,0.75) -- (6,0.75);

\draw[blue, spath/save=squiggly] (0,0)
  foreach \x in {1,...,500}{ -- ++(0.01,rand*-0.2) }
  node[right, black] {$(t,B_t)$};

\draw[
  draw=blue!50,
  spath/.cd,
    split at intersections with={squiggly}{horiz},
    remove components={squiggly}{1},
    use={squiggly, transform={ymirror=0.75}}
] node[anchor=base west] {$(t,B'_t)$};
\end{tikzpicture}
\end{document}

Saída

insira a descrição da imagem aqui

informação relacionada