Hvordan kan du få argmin eller argmax i Latex? To løsninger, jeg fandt, er:
\underset{x}{\operatorname{argmax}} \DeclareMathOperator*{\argmin}{arg\,min}
Er der andre ideer?
[1] http://www.breakthru.altervista.org/?p=27
[2] http://researchonsearch.blogspot.com/2007/05/enter-argmax-argmin-in-latex.html
Kommentarer
Svar
Som Pieter påpegede, er den korrekte måde at definere argmin- og argmax-operatorer i LaTeX på:
\usepackage{amsmath} \DeclareMathOperator*{\argmax}{arg\,max} \DeclareMathOperator*{\argmin}{arg\,min}
Faktisk ved hjælp af amsopn
-pakken ville være tilstrækkelig, men den indlæses af amsmath
internt, hvilket alligevel anbefales til matematisk sætning.
*
i \DeclareMathOperator*
placerer det understregede argument under ordet snarere end nederst til højre for det.
Kommentarer
- Hvis du bruger
\DeclareMathOperator*{\argmin}{\arg\!\min}
slipper du af det grimme mellemrum mellemarg
ogmin
. - @rbp Hvorfor skal man bruge
\arg\min
når man bareargmin
gør det samme? - @egreg du ‘ har ret. Jeg ankom til denne fra nogle eksperimenter med andre muligheder og så ‘ ikke tilbage 🙂
- I ConTeXt er det:
\definemathcommand [argmin] [limop] {\mfunction{arg\,min}}
- Forklaring: Jeg forlod det tynde mellemrum (\,) mellem arg og min, fordi det ‘ er, hvad den originale plakat havde i spørgsmål, så jeg antog, at de ville have plads der. Personligt ville jeg bare gøre
\DeclareMathOperator*{\argmin}{argmin}
uden mellemrummet.
Svar
Resumé
I efterfølgeren antages LaTeX.
Indledende spørgsmål
1. Skal et tyndt rum skille “arg” fra “min”?
Dette er et spørgsmål om personlig præference. Standarddefinitionen for \limsup
har et tyndt mellemrum, på den anden side skrives “arcsin” normalt uden mellemrum mellem de to komponenter. Konsistens er som altid nøgleordet: ved hjælp af en makrodefinition vil det sikre det og også let at ændre sætningen i hele dokumentet, hvis det er nødvendigt at skifte fra en mulighed til en anden.
2. Skal grænser gå under operatøren i visningsstil?
Også dette kan diskuteres, og konventioner, der bruges i det felt, dokumentet er skrevet til, skal følges.
3. Skal operatørnavnet sættes opret?
Bestemt som alle andre operatør- / funktionsnavne som sinus og cosinus.
Tilgængelige værktøjer
1. amsmath
Med amsmath
kan man gøre i præamblen
\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
Selvfølgelig bør kun en af disse bruges. I dokumentet er det tilstrækkeligt at skrive \argmin
, og afstanden omkring operatøren vil være den rigtige i henhold til de almindelige regler for matematisk sætning.
Det tilsyneladende forskellige
\newcommand{\argmin}{\operatornamewithlimits{argmin}}
er ikke rigtig det, fordi det i det væsentlige er det samme som \DeclareMathOperator*{\argmin}{argmin}
; desuden bruger den en forældet kommando, der skal være \operatorname*
.
2. Ingen pakke
Følgende definitioner minder meget om dem ovenfor, i samme rækkefølge
\newcommand{\argmin}{\mathop{\mathrm{arg\,min}} \newcommand{\argmin}{\mathop{\mathrm{argmin}} \newcommand{\argmin}{\mathop{\mathrm{arg\,min}\nolimits} \newcommand{\argmin}{\mathop{\mathrm{argmin}\nolimits}
Med \underset
\underset{x}{\mathrm{argmin}}
Dette blev også nævnt i spørgsmålet og i et svar, men det er forkert, som den visuelle sammenligning vil vise.
3. Forskelle
Versionen “ingen pakke” er meget mere stiv end amsmath
-versionen, fordi denne pakke kan modtage nonamelimits
mulighed, der automatisk ændrer alle operatorer såsom \lim
, \max
, der normalt har grænser nedenunder (i viser) for at have dem på siden. Den samme mulighed ville naturligvis også virke på nyligt definerede operatorer, forudsat at \DeclareMathOperator*
er blevet brugt.
Testdokument
I den følgende test dokument, de foreslåede definitioner eller konstruktioner sammenlignes.
\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}
Resultater
Som forudsagt er mange linjer indstillet ens. Makroerne, der er defineret med \mathop
, overholder dog ikke indstillingen nonamelimits
. Resultatet af \argminD
er også klart forkert, da grænsen er angivet under “max” og ikke under hele operatørnavnet.
Konstruktionen med \underset
er forkert, fordi den ikke bruger den korrekte afstand efter operatøren: et tyndt rum følger alle andre, og det er den rigtige måde at sætte . Sammenlign \sin x
og \mathrm{sin}x
for at se dette tynde mellemrum i en anden sammenhæng.
Bemærk at \argminC
og \argminA
giver det samme resultat såvel som \argminD
og \argminB
. Forklaring: \arg
og \max
er allerede defineret som operatorer, så TeX indsætter et tyndt mellemrum, hvis man direkte følger en anden. Brug af \argminC
eller \argminD
får TeX til at dreje hjulene lidt mere uden fordel over \argminA
eller \argminB
.
Kommentarer
- Dette skal være det accepterede svar.
- Er ikke ‘ t
\newcommand{\argmin}{\operatornamewithlimits{argmin}}
anderledes, da det ikke ‘ t brugeramsmath
pakke? - @HomeroEsmeraldo
\operatornamewithlimits
er en forældet kommando defineret afamsopn
(en pakke indlæst afamsmath
, sjældent brugt af sig selv). - Tak. Af en eller anden grund gav kun
\underset
tilfredsstillende resultater for med (med x under argmin, ikke ved siden af det). - hvad med hvordan man får det til at fungere i Jupyter ?
Svar
Jeg bruger \newcommand{\argmin}{\operatornamewithlimits{argmin}}
.
Kommentarer
- +1 Jeg kan lide dette – hvorfor overkomplicere ting? Dette ser nøjagtigt ud som
\DeclareMathOperator*
svaret. - Dette giver ” argmin “. For at få ” arg min ” (uden tvivl den mest sædvanlige notation) skal du indstille den til
{arg\,min}
. - Google gav mig 669.000 svar til ” arg min ” og 520.000 svar til ” argmin “, så jeg ‘ kalder det uafgjort. 😉
- dette virker …? mangler der en importopgørelse?
- Google Scholar fik mig 171.000 for ” arg min ” og 116.000 for ” argmin “.
Svar
Brug \usepackage{amsmath}
og derefter:
\operatorname*{argmin}_\theta f(x)
Eller lignende (for at tilføje et mellemrum),
\operatorname*{arg\,max}_\theta f(x)
Kommentarer
- kortfattet og til det punkt!
Svar
Bare et andet alternativ (på en eller anden måde den dårligere løsning omkring, se kommentar nedenfor) kan være at definere \argmin
med hensyn til \min
og \arg
kommandoer.
\newcommand{\argmin}{\arg\!\min}
På denne måde vil 1) \argmin
opføre sig altid på samme måde da \min
, 2) ikke har brug for amsmath
eller bryr sig om \operator...
kommandoer 3) ja, variablen er ikke centreret (den er centreret i min
-delen ), men det kan endda være, hvad du vil have (da det er centreret på samme måde en \min
, også “g” i \arg
sænker ikke underargumentet yderligere.
\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}
Kommentarer
- Dette ser ikke ‘ ud som en god idé.
\argmin_{x\in X\cap Y} f(x)
vil bryde det fuldstændigt. - Hvad er
\arg
-kommandoen alligevel? - @ThomasAhle,
arg
er til argumentfunktionen (vinkel i det komplekse plan, $ z = | z | e ^ {i \ arg z} $. Tohecz er ret forresten. - @ boycott.se-yo ‘, godt punkt.
Svar
eller du kan bruge kommandoen underset. For eksempel:
R = \underset{n} {\mathrm{argmax}} ~P(L_n|\mathbf{x})
Kommentarer
- Don ‘ t brug dette. Dette gør
argmin
tilmathord
i stedet for enmathop
, og afstanden er forkert. Desuden vil dette ikke automatisk justere grænserne i inline-matematik-tilstand.
Svar
Jeg bruger \mathop
og \mathrm
og til sidst \limits
eller \nolimits
afhængigt af den ønskede adfærd i kombination med _
og ^
. Se nedenfor.
\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}
Svar
Dette fungerer uden yderligere pakke. Det opretter dog en ny linje.
$$\pi(s) = arg\max_\theta$$
Kommentarer
-
$$...$$
anbefales ikke at bruge med LaTeX. Bedre brug\[ ... \]
til korrekt lodret afstand. - Denne løsning angiver ikke argmax korrekt. Her vil arg være i kursiv (og med dårlig afstand), og max vil være lodret.
\DeclareMathOperator
er vejen at gå i dette tilfælde.\text{arg}\,\max\limits_{\theta}\,