Příkaz pro argmin nebo argmax?

Jak můžete získat argmin nebo argmax v latexu? Nalezl jsem dvě řešení:

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

Nějaké další nápady?

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

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

Komentáře

  • Jak se tato řešení (zejména ta druhá) nelíbí? \DeclareMathOperator je cesta v tomto případě.
  • Osobně se mi líbí vzhled \text{arg}\,\max\limits_{\theta}\,
  • co na to, aby to fungovalo v Jupyteru?

odpověď

Jak zdůraznil Pieter, správný způsob, jak definovat operátory argmin a argmax v LaTeXu, je:

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

Ve skutečnosti použití by byl dostatečný, ale je načítán amsmath interně, což je stejně vhodné pro sazbu matematiky.

* v \DeclareMathOperator* umístí podtržený argument pod slovo, nikoli do pravého dolního rohu.

Komentáře

  • Pokud používáte \DeclareMathOperator*{\argmin}{\arg\!\min}, zbavíte se ošklivého prostoru mezi arg a min.
  • @rbp Proč by měl člověk používat \arg\min když jednoduše argmin dělá to samé?
  • @egreg máš ‚ pravdu. K tomuto jsem dospěl z experimentů s jinými možnostmi a ‚ se neohlédl 🙂
  • V ConTeXtu to je: \definemathcommand [argmin] [limop] {\mfunction{arg\,min}}
  • Vysvětlení: Nechal jsem mezeru (\,) mezi arg a min, protože to ‚ odpovídá původnímu plakátu otázka, tak jsem předpokládal, že tam chtějí ten prostor. Osobně bych prostě udělal \DeclareMathOperator*{\argmin}{argmin} bez mezery.

Odpovědět

Shrnutí

V pokračování se předpokládá LaTeX.

Předběžné otázky

1. Měla by malá mezera oddělit „arg“ od „min“?

Jedná se o otázku osobních preferencí. Výchozí definice pro \limsup má malou mezeru, na druhé straně je arcsin obvykle psán bez mezery mezi těmito dvěma komponentami. Konzistence je jako vždy klíčové slovo: použití definice makra to zajistí a také snadnost úpravy sazby v celém dokumentu, pokud je nutný přechod z jedné možnosti na druhou.

2. Měly by limity ve stylu zobrazení klesnout pod operátor?

Také je to diskutabilní a je třeba dodržovat konvence používané v poli, pro které je dokument napsán.

3. Mělo by být jméno operátora vysázeno vzpřímeně?

Určitě jako všechny ostatní názvy operátorů / funkcí, jako jsou sine a cosine.

Dostupné nástroje

1. amsmath

S amsmath lze v preambuli dělat

\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 

Samozřejmě by měl být použit pouze jeden z nich. V dokumentu stačí napsat \argmin a řádkování kolem operátoru bude správné podle běžných pravidel sazby matematiky.

Zdánlivě different

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

ve skutečnosti tomu tak není, protože je to v podstatě stejné jako \DeclareMathOperator*{\argmin}{argmin}; navíc používá zastaralý příkaz, který by měl být \operatorname*.

2. Žádný balíček

Následující definice jsou velmi podobné výše uvedeným definicím ve stejném pořadí

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

S \underset

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

To bylo zmíněno také v otázce a v jedné odpovědi, ale je to špatné, jak ukáže vizuální srovnání.

3. Rozdíly

Verze „žádný balíček“ je mnohem přísnější než verze amsmath, protože tento balíček může přijímat nonamelimits, která automaticky změní všechny operátory, jako jsou \lim, \max, které obvykle mají pod sebou limity (v displeje), abyste je měli na boku. Stejná možnost by samozřejmě působila také na nově definované operátory, pokud by bylo použito \DeclareMathOperator*.

Testovací dokument

V následujícím testu dokumentu, budou navržené definice nebo konstrukce porovnány.

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

zde zadejte popis obrázku

Výsledky

Jak bylo předpovězeno, mnoho řádků nastavuje stejné. Makra definovaná pomocí \mathop se však nebudou řídit volbou nonamelimits. Také výsledek \argminD je zjevně špatný, protože limit je vysázen pod „max“ a ne pod celým jménem operátora.

Konstrukce s \underset je špatná, protože nebude používat správné mezery za operátorem: mezera následuje za všemi ostatními a je to správný způsob sazby . Porovnejte \sin x a \mathrm{sin}x a podívejte se na tento úzký prostor v jiném kontextu.

Všimněte si, že \argminC a \argminA dávají stejný výsledek, stejně jako \argminD a \argminB. Vysvětlení: \arg a \max jsou již definovány jako operátory, takže TeX vloží mezeru, pokud jeden přímo následuje další. Použitím \argminC nebo \argminD se TeX jen trochu roztočí, bez jakékoli výhody oproti \argminA nebo \argminB.

Komentáře

  • Toto by měla být přijatá odpověď.
  • Není ‚ t \newcommand{\argmin}{\operatornamewithlimits{argmin}} odlišný v tom, že ‚ nepoužívá amsmath balíček?
  • @HomeroEsmeraldo \operatornamewithlimits je zastaralý příkaz definovaný amsopn (balíček načtený amsmath, zřídka používaný sám o sobě).
  • Děkuji. Z nějakého důvodu pouze \underset poskytl uspokojivé výsledky pro s (s tím, že x je pod argminem, nesousedí s ním).
  • co takhle, jak to v Jupyteru ?

Odpověď

Používám \newcommand{\argmin}{\operatornamewithlimits{argmin}}.

Komentáře

  • +1 Líbí se mi to – proč to příliš komplikovat? Vypadá to úplně stejně jako \DeclareMathOperator* odpověď.
  • Tím se získá “ argmin „. Chcete-li získat “ arg min “ (pravděpodobně nejběžnější notaci), nastavte ji na {arg\,min}.
  • Google mi dal 669 000 odpovědí na “ arg min “ a 520 000 odpovědí na “ argmin „, takže to mohu ‚ nazvat kravatou. 😉
  • toto funguje …? chybí nějaké prohlášení o importu?
  • Google Scholar mi dal 171 000 za “ arg min “ a 116 000 za “ argmin „.

odpověď

Použijte \usepackage{amsmath} a poté:

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

zde zadejte popis obrázku

Nebo podobně (pro přidání mezery),

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

zde zadejte popis obrázku

Komentáře

  • stručné a věcné!

odpověď

Jinou další alternativou (v jistém smyslu horší řešení kolem, viz komentář níže), může být definice \argmin z hlediska \min a \arg příkazy.

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

Tímto způsobem se 1) \argmin bude chovat vždy stejným způsobem jako \min, 2) nepotřebuje amsmath nebo se \operator... starat o příkazy 3) ano, proměnná není vycentrována (je vycentrována v části min ), ale to může být dokonce to, co chcete (protože je vycentrováno stejným způsobem \min, také „g“ v \arg již pod-argument nesnižuje).

\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

Komentáře

  • To nevypadá ‚ jako dobrý nápad. \argmin_{x\in X\cap Y} f(x) to úplně rozbije.
  • K čemu je vlastně příkaz \arg?
  • @ThomasAhle, arg je pro funkci argumentu (úhel v komplexní rovině, $ z = | z | e ^ {i \ arg z} $. Tohecz má pravdu.
  • @ boycott.se-yo ‚, dobrá poznámka.

Odpověď

nebo můžete použít příkaz podmnožiny. Například:

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

Komentáře

  • Prosím, nepoužívejte to ‚. Toto dělá argmin a mathord spíše než mathop a řádkování je nesprávné. Navíc to automaticky neupraví limity v režimu vložené matematiky.

Odpověď

Použil bych \mathop a \mathrm a případně \limits nebo \nolimits v závislosti na požadovaném chování v kombinaci s _ a ^. Viz níže.

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

Odpověď

Funguje to bez dalšího balíčku. Vytvoří však nový řádek.

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

Komentáře

  • $$...$$ se nedoporučuje používat s LaTeXem. Lepší použití \[ ... \] pro správné svislé mezery.
  • Toto řešení nebude správně nastavovat argmax. Zde bude arg v kurzivě (a se špatnými mezerami) a max bude ve svislé poloze.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *