Kommando för argmin eller argmax? (Svenska)

Hur kan du få argmin eller argmax i Latex? Två lösningar jag hittade är:

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

Några andra idéer?

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

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

Kommentarer

  • Hur känns inte dessa lösningar (särskilt den andra)? \DeclareMathOperator är vägen att gå i det här fallet.
  • Personligen gillar jag utseendet på \text{arg}\,\max\limits_{\theta}\,
  • hur är det med hur man får det att fungera i Jupyter?

Svar

Som Pieter påpekade är det rätta sättet att definiera argmin- och argmax-operatorer i LaTeX:

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

Egentligen använder du amsopn -paketet skulle vara tillräckligt men det laddas av amsmath internt, vilket ändå rekommenderas för matematisk typsättning.

* i \DeclareMathOperator* placerar det understrukna argumentet under ordet snarare än längst ner till höger om det.

Kommentarer

  • Om du använder \DeclareMathOperator*{\argmin}{\arg\!\min} blir du av med det fula utrymmet mellan arg och min.
  • @rbp Varför ska man använda \arg\min när man bara argmin gör detsamma?
  • @egreg du ’ har rätt. Jag kom fram till den här från några experiment med andra alternativ och såg ’ inte tillbaka 🙂
  • I ConTeXt är det: \definemathcommand [argmin] [limop] {\mfunction{arg\,min}}
  • Förklaring: Jag lämnade det tunna utrymmet (\,) mellan arg och min för att ’ är vad originalaffischen hade i fråga, så jag antog att de ville ha utrymmet där. Personligen skulle jag bara göra \DeclareMathOperator*{\argmin}{argmin} utan mellanslag.

Svar

Sammanfattning

I uppföljaren antas LaTeX.

Preliminära frågor

1. Bör ett tunt utrymme skilja ”arg” från ”min”?

Detta är en fråga om personlig preferens. Standarddefinitionen för \limsup har ett tunt mellanslag, å andra sidan ”arcsin” skrivs vanligtvis utan ett mellanslag mellan de två komponenterna. Konsistens är som alltid nyckelordet: att använda en makrodefinition säkerställer det och också att det är enkelt att ändra typsättningen i hela dokumentet, om det behövs byta från ett alternativ till ett annat.

2. Bör gränser gå under operatören i visningsstil?

Detta är också diskutabelt och konventioner som används i fältet som dokumentet är skrivet för bör följas.

3. Ska operatörens namn sättas upprätt?

Definitivt, som alla andra operatörs- / funktionsnamn som sinus och cosinus.

Tillgängliga verktyg

1. amsmath

Med amsmath kan man göra i ingressen,

\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 

Naturligtvis bör endast en av dessa användas. I dokumentet räcker det med att skriva \argmin och avståndet runt operatören kommer att vara rätt enligt de vanliga reglerna för matematisk typsättning.

Den till synes annorlunda

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

är inte riktigt så, för det är i huvudsak detsamma som \DeclareMathOperator*{\argmin}{argmin}; dessutom använder den ett utfasat kommando, som ska vara \operatorname*.

2. Inget paket

Följande definitioner liknar de ovan, i samma ordning

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

Detta nämndes också i frågan och i ett svar, men det är fel, som den visuella jämförelsen kommer att visa.

3. Skillnader

Versionen ”inget paket” är mycket styvare än amsmath -versionen, eftersom detta paket kan ta emot nonamelimits alternativ som automatiskt ändrar alla operatörer som \lim, \max som vanligtvis har gränser under (i visar) för att ha dem på sidan. Samma alternativ skulle naturligtvis också agera på nyligen definierade operatörer, förutsatt att \DeclareMathOperator* har använts.

Testdokument

I följande test dokument, kommer de föreslagna definitionerna eller konstruktionerna att jämföras.

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

ange bildbeskrivning här

Resultat

Som förutsagt har många rader samma inställningar. Makron som definieras med \mathop följer dock inte alternativet nonamelimits. Resultatet av \argminD är också uppenbart fel, eftersom gränsen är inställd under ”max” och inte under hela operatörens namn.

Konstruktionen med \underset är fel eftersom den inte använder rätt avstånd efter operatören: ett tunt utrymme följer alla andra och det är rätt sätt att sätta . Jämför \sin x och \mathrm{sin}x för att se detta tunna utrymme i ett annat sammanhang.

Observera att \argminC och \argminA ger samma resultat, samt \argminD och \argminB. Förklaring: \arg och \max är redan definierade som operatorer, så TeX infogar ett tunt utrymme om man följer en annan direkt. Att använda \argminC eller \argminD får bara TeX att snurra på hjulen lite mer, utan fördel över \argminA eller \argminB.

Kommentarer

  • Detta bör vara det accepterade svaret.
  • Är ’ t \newcommand{\argmin}{\operatornamewithlimits{argmin}} annorlunda genom att det inte ’ t använder amsmath -paket?
  • @HomeroEsmeraldo \operatornamewithlimits är ett föråldrat kommando definierat av amsopn (ett paket laddat av amsmath, sällan används av sig själv).
  • Tack. Av någon anledning gav endast \underset tillfredsställande resultat för med (med x under argmin, inte intill det).
  • hur är det med hur man får det att fungera i Jupyter ?

Svar

Jag använder \newcommand{\argmin}{\operatornamewithlimits{argmin}}.

Kommentarer

  • +1 Jag gillar det här – varför överkomplicera saker? Detta ser exakt ut som \DeclareMathOperator* svaret.
  • Detta ger ” argmin ”. För att få ” arg min ” (utan tvekan den vanligaste notationen), ställ in den på {arg\,min}.
  • Google gav mig 669 000 svar för ” arg min ” och 520 000 svar för ” argmin ”, så jag ’ kallar det oavgjort. 😉
  • detta fungerar …? saknas ett importuttalande?
  • Google Scholar fick mig 171.000 för ” arg min ” och 116.000 för ” argmin ”.

Svar

Använd \usepackage{amsmath} och sedan:

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

ange bildbeskrivning här

Eller på liknande sätt (för att lägga till ett mellanslag),

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

ange bildbeskrivning här

Kommentarer

  • kortfattad och till punkt!

Svar

Bara ett annat alternativ (på något sätt den sämre lösningen runt, se kommentar nedan) kan vara att definiera \argmin i termer av \min och \arg kommandon.

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

På detta sätt kommer 1) \argmin att bete sig alltid på samma sätt eftersom \min, 2) inte behöver amsmath eller bryr sig om \operator... kommandon 3) ja, variabeln är inte centrerad (den är centrerad i min -delen ), men det kan till och med vara vad du vill (eftersom det är centrerat på samma sätt en \min, även ”g” i \arg sänker inte underargumentet ytterligare.

\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

Kommentarer

  • Detta ser inte ’ ut som en bra idé. \argmin_{x\in X\cap Y} f(x) kommer att bryta det helt.
  • Vad är \arg -kommandot i alla fall?
  • @ThomasAhle, arg är för argumentfunktionen (vinkel i komplexplanet, $ z = | z | e ^ {i \ arg z} $. Tohecz är rätt förresten.
  • @ boycott.se-yo ’, bra poäng.

Svar

eller så kan du använda kommandot underset. Till exempel:

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

Kommentarer

  • Var snäll och använd ’. Detta gör argmin till mathord snarare än en mathop och avståndet är felaktigt. Dessutom justerar inte gränserna automatiskt i inmatat läge.

Svar

Jag skulle använda \mathop och \mathrm, och så småningom \limits eller \nolimits, beroende på önskat beteende i kombination med _ och ^. Se nedan.

\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

Detta fungerar utan ytterligare paket. Men det skapar en ny rad.

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

Kommentarer

  • $$...$$ rekommenderas inte att användas med LaTeX. Använd bättre \[ ... \] för korrekt vertikalt avstånd.
  • Den här lösningen kommer inte att sätta argmax korrekt. Här kommer arg att vara kursiv (och med dåligt avstånd), och max kommer att vara upprätt.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *