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
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 traargemin. - @rbp Perché si dovrebbe usare
\arg\minquando semplicementeargminfa 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}
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 utilizzaamsmathpackage? - @HomeroEsmeraldo
\operatornamewithlimitsè un comando obsoleto definito daamsopn(un pacchetto caricato daamsmath, usato raramente da solo). - Grazie. Per qualche motivo solo
\undersetha 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)
O in modo simile (per aggiungere uno spazio),
\operatorname*{arg\,max}_\theta f(x)
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}
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
argminunmathordpiuttosto che unmathope 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.
\DeclareMathOperatorè la strada da percorrere in questo caso.\text{arg}\,\max\limits_{\theta}\,