Hvordan kan du få argmin eller argmax i Latex? To løsninger jeg fant er:
\underset{x}{\operatorname{argmax}} \DeclareMathOperator*{\argmin}{arg\,min}
Noen 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åpekte, er den riktige måten å definere argmin- og argmax-operatorer i LaTeX på:
\usepackage{amsmath} \DeclareMathOperator*{\argmax}{arg\,max} \DeclareMathOperator*{\argmin}{arg\,min}
Egentlig bruker du amsopn
-pakken vil være tilstrekkelig, men den lastes inn av amsmath
internt, noe som uansett anbefales for matematisk setting.
*
i \DeclareMathOperator*
plasserer det understrekede argumentet under ordet i stedet for nederst til høyre.
Kommentarer
- Hvis du bruker
\DeclareMathOperator*{\argmin}{\arg\!\min}
, blir du kvitt det stygge mellomrommet mellomarg
ogmin
. - @rbp Hvorfor skal man bruke
\arg\min
når man bareargmin
gjør det samme? - @egreg du ‘ har rett. Jeg kom til denne fra noen eksperimentering med andre alternativer, og så ikke ‘ tilbake 🙂
- I ConTeXt er det:
\definemathcommand [argmin] [limop] {\mfunction{arg\,min}}
- Forklaring: Jeg forlot det tynne rommet (\,) mellom arg og min fordi ‘ er hva originalplakaten hadde i spørsmål, så jeg antok at de ville ha plassen der. Personlig ville jeg bare gjort
\DeclareMathOperator*{\argmin}{argmin}
, uten mellomrom.
Svar
Sammendrag
I oppfølgeren antas LaTeX.
Innledende spørsmål
1. Bør et tynt rom skille «arg» fra «min»?
Dette er et spørsmål om personlig preferanse. Standarddefinisjonen for \limsup
har et tynt mellomrom, derimot skrives «arcsin» vanligvis uten mellomrom mellom de to komponentene. Konsistens er som alltid nøkkelordet: å bruke en makrodefinisjon vil sikre det og også gjøre det enkelt å endre typesettingen i hele dokumentet, hvis det er nødvendig å bytte fra ett alternativ til et annet.
2. Skal grenser gå under operatøren i visningsstil?
Også dette kan diskuteres, og konvensjonene som brukes i feltet dokumentet er skrevet for, bør følges.
3. Bør operatørnavnet settes oppreist?
Definitivt, som alle andre operatør- / funksjonsnavn som sinus og cosinus.
Tilgjengelige verktøy
1. amsmath
Med amsmath
kan man gjøre i innledningen,
\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 skal bare en av disse brukes. I dokumentet er det tilstrekkelig å skrive \argmin
, og avstanden rundt operatøren vil være den rette i henhold til de vanlige reglene for matematisk setting.
Det tilsynelatende forskjellig
\newcommand{\argmin}{\operatornamewithlimits{argmin}}
er egentlig ikke slik, fordi det egentlig er det samme som \DeclareMathOperator*{\argmin}{argmin}
; dessuten bruker den en avviklet kommando, som skal være \operatorname*
.
2. Ingen pakke
Følgende definisjoner ligner veldig på de ovenfor, i samme rekkefø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 ble også nevnt i spørsmålet og i ett svar, men det er feil, som den visuelle sammenligningen vil vise.
3. Forskjeller
«Ingen pakke» -versjonen er mye mer stiv enn amsmath
-versjonen, fordi denne pakken kan motta nonamelimits
alternativ som automatisk vil endre alle operatorer som \lim
, \max
som vanligvis har grenser under (i viser) for å ha dem på siden. Det samme alternativet vil selvfølgelig også virke på nylig definerte operatører, forutsatt at \DeclareMathOperator*
har blitt brukt.
Testdokument
I den følgende testen dokumentet, vil de foreslåtte definisjonene eller konstruksjonene bli sammenlignet.
\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 forutsagt, mange linjer types like. Makroene som er definert med \mathop
, vil imidlertid ikke overholde alternativet nonamelimits
. Også resultatet av \argminD
er tydelig feil, da grensen er satt under “maks” og ikke under hele operatørnavnet.
Konstruksjonen med \underset
er feil fordi den ikke bruker riktig avstand etter operatøren: et tynt mellomrom følger alle andre, og det er riktig måte å sette . Sammenlign \sin x
og \mathrm{sin}x
for å se dette tynne rommet i en annen sammenheng.
Merk at \argminC
og \argminA
gir det samme resultatet, samt \argminD
og \argminB
. Forklaring: \arg
og \max
er allerede definert som operatorer, så TeX setter inn et tynt mellomrom hvis man følger direkte en annen. Å bruke \argminC
eller \argminD
får bare TeX til å snurre hjulene litt mer, uten fordel over \argminA
eller \argminB
.
Kommentarer
- Dette bør være det aksepterte svaret.
- Er ikke ‘ t
\newcommand{\argmin}{\operatornamewithlimits{argmin}}
forskjellig ved at det ikke ‘ t brukeramsmath
pakke? - @HomeroEsmeraldo
\operatornamewithlimits
er en foreldet kommando definert avamsopn
(en pakke lastet avamsmath
, sjelden brukt av seg selv). - Takk. Av en eller annen grunn ga bare
\underset
tilfredsstillende resultater for med (med x under argmin, ikke ved siden av det). - hva med hvordan du får det til å fungere i Jupyter ?
Svar
Jeg bruker \newcommand{\argmin}{\operatornamewithlimits{argmin}}
.
Kommentarer
- +1 Jeg liker dette – hvorfor overkompliserer ting? Dette ser nøyaktig ut som
\DeclareMathOperator*
svaret. - Dette gir » argmin «. For å få » arg min » (uten tvil den vanligste notasjonen), sett den til
{arg\,min}
. - Google ga meg 669 000 svar for » arg min » og 520 000 svar for » argmin «, så jeg ‘ d kaller det uavgjort. 😉
- dette fungerer …? mangler det en importoppgave?
- Google Scholar fikk meg 171.000 for » arg min » og 116 000 for » argmin «.
Svar
Bruk \usepackage{amsmath}
og deretter:
\operatorname*{argmin}_\theta f(x)
Eller tilsvarende (for å legge til et mellomrom),
\operatorname*{arg\,max}_\theta f(x)
Kommentarer
- kortfattet og til poenget!
Svar
Bare et annet alternativ (på en eller annen måte den dårligere løsningen rundt, se kommentar nedenfor), kan være å definere \argmin
når det gjelder \min
og \arg
kommandoer.
\newcommand{\argmin}{\arg\!\min}
På denne måten vil 1) \argmin
oppføre seg alltid på samme måte som \min
, 2) ikke trenger amsmath
eller bryr seg om \operator...
kommandoer 3) ja, variabelen i ikke sentrert (den er sentrert i min
-delen ), men det kan til og med være hva du vil (siden det er sentrert på samme måte en \min
, også «g» i \arg
senker ikke underargumentet ytterligere.
\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 ‘ ut som en god idé.
\argmin_{x\in X\cap Y} f(x)
vil bryte den fullstendig. - Hva er
\arg
-kommandoen for uansett? - @ThomasAhle,
arg
er for argumentfunksjonen (vinkel i det komplekse planet, $ z = | z | e ^ {i \ arg z} $. Tohecz er forresten. - @ boycott.se-yo ‘, godt poeng.
Svar
eller du kan bruke undersettkommandoen. For eksempel:
R = \underset{n} {\mathrm{argmax}} ~P(L_n|\mathbf{x})
Kommentarer
- Vennligst ikke bruk ‘. Dette gjør
argmin
tilmathord
i stedet for enmathop
og avstanden er feil. Videre vil dette ikke automatisk justere grensene i inline matematikkmodus.
Svar
Jeg bruker \mathop
og \mathrm
, og til slutt \limits
eller \nolimits
, avhengig av ønsket oppførsel når det kombineres 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 uten noen ekstra pakke. Det vil imidlertid opprette en ny linje.
$$\pi(s) = arg\max_\theta$$
Kommentarer
-
$$...$$
anbefales ikke å bruke med LaTeX. Bruk bedre\[ ... \]
for riktig vertikal avstand. - Denne løsningen vil ikke angi argmax riktig. Her vil arg være i kursiv (og med dårlig avstand), og maks vil være oppreist.
\DeclareMathOperator
er veien å gå i dette tilfellet.\text{arg}\,\max\limits_{\theta}\,