Comando para argmin ou argmax?

Como você pode obter o argmin ou argmax no Latex? Duas soluções que encontrei são:

\underset{x}{\operatorname{argmax}} \DeclareMathOperator*{\argmin}{arg\,min} 

Alguma outra ideia?

[1] http://www.breakthru.altervista.org/?p=27

[2] http://researchonsearch.blogspot.com/2007/05/enter-argmax-argmin-in-latex.html

Comentários

  • Como essas soluções (especialmente a segunda) parecem não estar certas? A \DeclareMathOperator é o caminho a seguir neste caso.
  • Pessoalmente, gosto da aparência de \text{arg}\,\max\limits_{\theta}\,
  • e como fazê-lo funcionar no Jupyter?

Resposta

Como Pieter apontou, a maneira correta de definir os operadores argmin e argmax em LaTeX é:

\usepackage{amsmath} \DeclareMathOperator*{\argmax}{arg\,max} \DeclareMathOperator*{\argmin}{arg\,min} 

Na verdade, usando o seria suficiente, mas é carregado por amsmath internamente, o que é recomendado para composição matemática de qualquer maneira.

O * em \DeclareMathOperator* coloca o argumento sublinhado abaixo da palavra em vez de no canto inferior direito dela.

Comentários

  • Se você usar \DeclareMathOperator*{\argmin}{\arg\!\min}, você se livra do espaço feio entre arg e min.
  • @rbp Por que usar \arg\min quando simplesmente argmin faz o mesmo?
  • @egreg, você ‘ está certo. Cheguei a este depois de algumas experiências com outras opções e não ‘ olhei para trás 🙂
  • Em ConTeXt que é: \definemathcommand [argmin] [limop] {\mfunction{arg\,min}}
  • Explicação: Eu deixei o espaço fino (\,) entre o arg e min porque ‘ é o que o pôster original tinha no questão, então presumi que eles queriam o espaço lá. Pessoalmente, eu apenas faria \DeclareMathOperator*{\argmin}{argmin}, sem o espaço.

Resposta

Resumo

Na sequência, o LaTeX é assumido.

Questões preliminares

1. Deve um espaço fino separar “arg” de “min”?

Esta é uma questão de preferência pessoal. A definição padrão para \limsup tem um espaço fino, por outro lado, “arcsin” é geralmente escrito sem um espaço entre os dois componentes. Consistência é, como sempre, a palavra-chave: o uso de uma definição de macro irá garantir isso e também facilidade na modificação da composição em todo o documento, caso seja necessário mudar de uma opção para outra.

2. Os limites devem ficar abaixo do operador no estilo de exibição?

Também isso é discutível e as convenções usadas no campo para o qual o documento foi escrito devem ser seguidas.

3. O nome do operador deve ser formatado na vertical?

Definitivamente, como todos os outros nomes de operador / função, como seno e cosseno.

Ferramentas disponíveis

1. amsmath

Com amsmath pode-se fazer, no preâmbulo,

\DeclareMathOperator*{\argmin}{arg\,min} % thin space, limits underneath in displays \DeclareMathOperator*{\argmin}{argmin} % no space, limits underneath in displays \DeclareMathOperator{\argmin}{arg\,min} % thin space, limits on side in displays \DeclareMathOperator{\argmin}{argmin} % no space, limits on side in displays 

Claro, apenas um deles deve ser usado. No documento, é suficiente digitar \argmin e o espaçamento ao redor do operador será o correto de acordo com as regras comuns de composição matemática.

O aparentemente diferente

\newcommand{\argmin}{\operatornamewithlimits{argmin}} 

não é realmente assim, porque é essencialmente o mesmo que \DeclareMathOperator*{\argmin}{argmin}; além disso, ele usa um comando obsoleto, que deve ser \operatorname*.

2. Sem pacote

As seguintes definições são muito semelhantes às anteriores, na mesma ordem

\newcommand{\argmin}{\mathop{\mathrm{arg\,min}} \newcommand{\argmin}{\mathop{\mathrm{argmin}} \newcommand{\argmin}{\mathop{\mathrm{arg\,min}\nolimits} \newcommand{\argmin}{\mathop{\mathrm{argmin}\nolimits} 

Com \underset

\underset{x}{\mathrm{argmin}} 

Isso também foi mencionado na pergunta e em uma resposta, mas está errado, como a comparação visual mostrará.

3. Diferenças

A versão “sem pacote” é muito mais rígida do que a versão amsmath, porque este pacote pode receber o nonamelimits opção que mudará automaticamente todos os operadores como \lim, \max que geralmente têm limites (em monitores) para tê-los ao lado. A mesma opção, é claro, atuaria também em operadores recém-definidos, desde que \DeclareMathOperator* tenha sido usado.

Documento de teste

No teste a seguir documento, as definições ou construções propostas serão comparadas.

\documentclass{article} \usepackage{amsmath} % limits underneath \DeclareMathOperator*{\argminA}{arg\,min} % Jan Hlavacek \DeclareMathOperator*{\argminB}{argmin} % Jan Hlavacek \DeclareMathOperator*{\argminC}{\arg\min} % rbp \newcommand{\argminD}{\arg\!\min} % AlfC \newcommand{\argminE}{\mathop{\mathrm{argmin}}} % ASdeL \newcommand{\argminF}{\mathop{\mathrm{argmin}}\limits} % ASdeL % limits on side \DeclareMathOperator{\argminG}{arg\,min} % Jan Hlavacek \DeclareMathOperator{\argminH}{argmin} % Jan Hlavacek \newcommand{\argminI}{\mathop{\mathrm{argmin}}\nolimits} % ASdeL \newcommand{\cs}[1]{\texttt{\symbol{`\\}#1}} \begin{document} \begin{align} &\cs{argminA} & \argminA_x f(x) &= \{x \mid f(x) = \min_{x"} f(x")\} \\ &\cs{argminB} & \argminB_x f(x) &= \{x \mid f(x) = \min_{x"} f(x")\} \\ &\cs{argminC} & \argminC_x f(x) &= \{x \mid f(x) = \min_{x"} f(x")\} \\ &\cs{argminD} & \argminD_x f(x) &= \{x \mid f(x) = \min_{x"} f(x")\} \\ &\cs{argminE} & \argminE_x f(x) &= \{x \mid f(x) = \min_{x"} f(x")\} \\ &\cs{argminF} & \argminF_x f(x) &= \{x \mid f(x) = \min_{x"} f(x")\} \\ &\cs{underset} & \underset{x}{\mathrm{argmin}} f(x) &= \{x \mid f(x) = \min_{x"} f(x")\}\\ &\cs{argminG} & \argminG_x f(x) &= \{x \mid f(x) = \min_{x"} f(x")\} \\ &\cs{argminH} & \argminH_x f(x) &= \{x \mid f(x) = \min_{x"} f(x")\} \\ &\cs{argminI} & \argminI_x f(x) &= \{x \mid f(x) = \min_{x"} f(x")\} \end{align} \end{document} 

insira a descrição da imagem aqui

Resultados

Conforme previsto, muitas linhas são compostas da mesma forma. No entanto, as macros definidas com \mathop não obedecerão à opção nonamelimits. Além disso, o resultado de \argminD está claramente errado, pois o limite é composto abaixo de “max” e não abaixo do nome do operador inteiro.

A construção com \underset está errada porque não usará o espaçamento correto após o operador: um espaço fino segue todos os outros e é a maneira correta de escrever . Compare \sin x e \mathrm{sin}x para ver este espaço fino em um contexto diferente.

Observe que \argminC e \argminA fornecem o mesmo resultado, bem como \argminD e \argminB. Explicação: \arg e \max já estão definidos como operadores, então o TeX insere um espaço fino se um seguir diretamente outro. Usar \argminC ou \argminD apenas faz o TeX girar um pouco mais, sem nenhuma vantagem sobre \argminA ou \argminB.

Comentários

  • Essa deve ser a resposta aceita.
  • Não é ‘ t \newcommand{\argmin}{\operatornamewithlimits{argmin}} diferente por não ‘ usar amsmath pacote?
  • @HomeroEsmeraldo \operatornamewithlimits é um comando obsoleto definido por amsopn (um pacote carregado por amsmath, raramente usado sozinho).
  • Obrigado. Por alguma razão, apenas \underset deu resultados satisfatórios para com (com x sendo sob argmin, não adjacente a ele).
  • e como fazê-lo funcionar no Jupyter ?

Resposta

Eu uso \newcommand{\argmin}{\operatornamewithlimits{argmin}}.

Comentários

  • +1 Eu gosto disso – por que complicar as coisas? É exatamente igual à \DeclareMathOperator* resposta.
  • Isso resulta em ” argmin “. Para obter ” arg min ” (possivelmente a notação mais comum), defina-o como {arg\,min}.
  • O Google me deu 669.000 respostas para ” arg min ” e 520.000 respostas para ” argmin “, então eu ‘ daria um empate. 😉
  • isso funciona …? falta uma declaração de importação?
  • O Google Scholar me deu 171.000 por ” arg min ” e 116.000 por ” argmin “.

Resposta

Use \usepackage{amsmath} e, em seguida:

\operatorname*{argmin}_\theta f(x) 

insira a descrição da imagem aqui

Ou da mesma forma (para adicionar um espaço),

\operatorname*{arg\,max}_\theta f(x) 

insira a descrição da imagem aqui

Comentários

  • conciso e direto ao ponto!

Resposta

Apenas outra alternativa (em certo sentido, a solução mais pobre, veja o comentário abaixo), poderia ser definir \argmin em termos de \min e \arg comandos.

\newcommand{\argmin}{\arg\!\min} 

Desta forma, 1) \argmin se comportará sempre da mesma maneira como \min, 2) não precisa amsmath ou se preocupa com \operator... comandos 3) sim, a variável não está centrada (está centrada na parte min ), mas pode até ser o que você deseja (uma vez que é centralizado da mesma forma em um \min, também o “g” em \arg não reduz ainda mais o sub-argumento).

\documentclass[fleqn]{article} \newcommand{\argmin}{\arg\!\min} \begin{document} \[ \argmin_x f(x) = \{x | f(x) = \min_{x"} f(x")\} \] \[ \min_x f(x) = \{f(x) | f(x) < f(x_0) \forall x_0 \in R \] \end{document} 

argmin

Comentários

  • Isso não ‘ não parece uma boa ideia. \argmin_{x\in X\cap Y} f(x) irá quebrá-lo completamente.
  • Para que serve o comando \arg?
  • @ThomasAhle, arg é para a função do argumento (ângulo no plano complexo, $ z = | z | e ^ {i \ arg z} $. Tohecz está bem a propósito.
  • @ boycott.se-yo ‘, ponto positivo.

Resposta

ou você pode usar o comando underset. Por exemplo:

 R = \underset{n} {\mathrm{argmax}} ~P(L_n|\mathbf{x}) 

Comentários

  • Não ‘ use isso. Isso torna argmin um mathord em vez de mathop e o espaçamento está incorreto. Além disso, isso não ajustará automaticamente os limites no modo matemático embutido.

Resposta

Eu usaria \mathop e \mathrm e, eventualmente, \limits ou \nolimits, dependendo do comportamento desejado quando combinado com _ e ^. Veja abaixo.

\documentclass{article} \begin{document} { nothing: \newcommand{\argmin}{\mathop{\mathrm{argmin}}} $\argmin_a^b$ $$\argmin_a^b$$ } { limits: \newcommand{\argmin}{\mathop{\mathrm{argmin}}\limits} $\argmin_a^b$ $$\argmin_a^b$$ } { nolimits: \newcommand{\argmin}{\mathop{\mathrm{argmin}}\nolimits} $\argmin_a^b$ $$\argmin_a^b$$ } \end{document} 

Resposta

Isso funciona sem qualquer pacote adicional. No entanto, ele criará uma nova linha.

$$\pi(s) = arg\max_\theta$$ 

Comentários

  • $$...$$ não é recomendado para uso com LaTeX. É melhor usar \[ ... \] para o espaçamento vertical correto.
  • Esta solução não redigirá argmax corretamente. Aqui, arg estará em itálico (e com espaçamento incorreto) e o máximo em vertical.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *