Comando per argmin o argmax?

Come puoi ottenere argmin o argmax in Latex? Due soluzioni che ho trovato sono:

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

Altre idee?

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

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

Commenti

  • In che modo queste soluzioni (soprattutto la seconda) sembrano sbagliate? \DeclareMathOperator è la strada da percorrere in questo caso.
  • Personalmente, mi piace laspetto di \text{arg}\,\max\limits_{\theta}\,
  • e come farlo funzionare in Jupyter?

Risposta

Come ha sottolineato Pieter, il modo corretto per definire gli operatori argmin e argmax in LaTeX è:

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

In realtà, usando sarebbe sufficiente ma” viene caricato da amsmath internamente, il che è comunque consigliato per la composizione matematica.

Il * in \DeclareMathOperator* inserisce largomento sottolineato sotto la parola anziché in basso a destra.

Commenti

  • Se utilizzi \DeclareMathOperator*{\argmin}{\arg\!\min} ti sbarazzi del brutto spazio tra arg e min.
  • @rbp Perché si dovrebbe usare \arg\min quando semplicemente argmin fa lo stesso?
  • @egreg tu ‘ hai ragione. Sono arrivato a questo da alcuni esperimenti con altre opzioni e non ‘ guardato indietro 🙂
  • In ConTeXt che è: \definemathcommand [argmin] [limop] {\mfunction{arg\,min}}
  • Spiegazione: ho lasciato lo spazio sottile (\,) tra arg e min perché ‘ è ciò che il poster originale aveva nel domanda, quindi ho pensato che volessero lo spazio lì. Personalmente farei solo \DeclareMathOperator*{\argmin}{argmin}, senza lo spazio.

Rispondi

Riepilogo

Nel seguito si assume LaTeX.

Domande preliminari

1. Uno spazio sottile dovrebbe separare “arg” da “min”?

Questa è una questione di preferenze personali. La definizione predefinita di \limsup ha uno spazio sottile, daltra parte “arcsin” viene solitamente scritto senza uno spazio tra i due componenti. La coerenza è, come sempre, la parola chiave: luso di una definizione di macro la garantirà e anche la facilità nel modificare la composizione tipografica dellintero documento, se è necessario passare da unopzione allaltra.

2. I limiti dovrebbero andare al di sotto delloperatore nello stile di visualizzazione?

Anche questo è discutibile e dovrebbero essere seguite le convenzioni usate nel campo per cui è scritto il documento.

3. Il nome delloperatore dovrebbe essere scritto in verticale?

Sicuramente, come tutti gli altri nomi di operatori / funzioni come seno e coseno.

Strumenti disponibili

1. amsmath

Con amsmath si può fare, nel preambolo,

\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 

Ovviamente, solo uno di questi dovrebbe essere usato. Nel documento è sufficiente digitare \argmin e la spaziatura attorno alloperatore sarà quella giusta secondo le regole comuni della composizione matematica.

Lapparentemente diverso

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

non è proprio così, perché “è essenzialmente lo stesso di \DeclareMathOperator*{\argmin}{argmin}; inoltre utilizza un comando deprecato, che dovrebbe essere \operatorname*.

2. Nessun pacchetto

Le seguenti definizioni sono molto simili a quelle precedenti, nello stesso ordine

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

Con \underset

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

Anche questo è stato menzionato nella domanda e in una risposta, ma è sbagliato, come mostrerà il confronto visivo.

3. Differenze

La versione “senza pacchetto” è molto più rigida della versione amsmath, perché questo pacchetto può ricevere il nonamelimits che cambierà automaticamente tutti operatori come \lim, \max che di solito hanno limiti sotto (in display) per averli sul lato. La stessa opzione ovviamente agirà anche su operatori appena definiti, a condizione che sia stato utilizzato \DeclareMathOperator*.

Documento di prova

Nel seguente test documento, verranno confrontate le definizioni o le costruzioni proposte.

\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} 

inserisci qui la descrizione dellimmagine

Risultati

Come previsto, molte righe compongono lo stesso. Tuttavia, le macro definite con \mathop non obbediranno allopzione nonamelimits. Anche il risultato di \argminD è chiaramente sbagliato, poiché il limite è composto da un valore inferiore a “max” e non al di sotto dellintero nome delloperatore.

La costruzione con \underset è sbagliata perché non utilizzerà la spaziatura corretta dopo loperatore: uno spazio sottile segue tutti gli altri ed è il modo giusto per comporre . Confronta \sin x e \mathrm{sin}x per vedere questo spazio sottile in un contesto diverso.

Tieni presente che \argminC e \argminA danno lo stesso risultato, così come \argminD e \argminB. Spiegazione: \arg e \max sono già definiti come operatori, quindi TeX inserisce uno spazio sottile se uno segue direttamente un altro. Lutilizzo di \argminC o \argminD fa semplicemente girare un po di più TeX, senza alcun vantaggio su \argminA o \argminB.

Commenti

  • Questa dovrebbe essere la risposta accettata.
  • ‘ t \newcommand{\argmin}{\operatornamewithlimits{argmin}} diverso in quanto ‘ non utilizza amsmath package?
  • @HomeroEsmeraldo \operatornamewithlimits è un comando obsoleto definito da amsopn (un pacchetto caricato da amsmath, usato raramente da solo).
  • Grazie. Per qualche motivo solo \underset ha fornito risultati soddisfacenti per with (con x sotto argmin, non adiacente).
  • e come farlo funzionare in Jupyter ?

Risposta

Uso \newcommand{\argmin}{\operatornamewithlimits{argmin}}.

Commenti

  • +1 Mi piace – perché le cose complicate? Sembra esattamente lo stesso della \DeclareMathOperator* risposta.
  • Questo produce ” argmin “. Per ottenere ” arg min ” (probabilmente la notazione più comune), impostalo su {arg\,min}.
  • Google mi ha fornito 669.000 risposte per ” arg min ” e 520.000 risposte per ” argmin “, quindi ‘ lo definirei un pareggio. 😉
  • funziona …? manca una dichiarazione di importazione?
  • Google Scholar mi ha procurato 171.000 per ” arg min ” e 116.000 per ” argmin “.

Risposta

Utilizza \usepackage{amsmath} e poi:

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

inserisci qui la descrizione dellimmagine

O in modo simile (per aggiungere uno spazio),

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

inserisci qui la descrizione dellimmagine

Commenti

  • conciso e al punto!

Risposta

Unaltra alternativa (in un certo senso la soluzione più scadente in circolazione, vedi il commento sotto), potrebbe essere quella di definire \argmin in termini di \min e \arg comandi.

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

In questo modo, 1) \argmin si comporterà sempre allo stesso modo poiché \min, 2) non “necessita di amsmath né si preoccupa dei comandi \operator... 3) sì, la variabile non è centrata (è centrata nella parte min ), ma potrebbe anche essere quello che vuoi (dato che è centrato allo stesso modo di un \min, anche la “g” in \arg non abbassa ulteriormente il sottoargomento).

\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

Commenti

  • Questo ‘ non sembra una buona idea. \argmin_{x\in X\cap Y} f(x) lo interromperà completamente.
  • A cosa serve il comando \arg?
  • @ThomasAhle, arg è per la funzione argomento (angolo nel piano complesso, $ z = | z | e ^ {i \ arg z} $. Tohecz ha ragione tra laltro.
  • @ boycott.se-yo ‘, ottima osservazione.

Risposta

oppure puoi utilizzare il comando underset. Ad esempio:

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

Commenti

  • Per favore, non ‘ usarlo. Ciò rende argmin un mathord piuttosto che un mathop e la spaziatura non è corretta. Inoltre, ciò non regolerà automaticamente i limiti in modalità matematica inline.

Risposta

Vorrei utilizzare \mathop e \mathrm ed eventualmente \limits o \nolimits, a seconda del comportamento desiderato se combinato con _ e ^. Vedi sotto.

\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} 

Risposta

Funziona senza alcun pacchetto aggiuntivo. Tuttavia creerà una nuova riga.

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

Commenti

  • $$...$$ non è raccomandato da usare con LaTeX. È meglio utilizzare \[ ... \] per la corretta spaziatura verticale.
  • Questa soluzione non comporrà argmax correttamente. Qui arg sarà in corsivo (e con una spaziatura errata) e max sarà verticale.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *