Jak uzyskać argmin lub argmax w lateksie? Dwa znalezione przeze mnie rozwiązania to:
\underset{x}{\operatorname{argmax}} \DeclareMathOperator*{\argmin}{arg\,min}
Jakieś inne pomysły?
[1] http://www.breakthru.altervista.org/?p=27
[2] http://researchonsearch.blogspot.com/2007/05/enter-argmax-argmin-in-latex.html
Komentarze
Odpowiedź
Jak zauważył Pieter, prawidłowy sposób definiowania operatorów argmin i argmax w LaTeX to:
\usepackage{amsmath} \DeclareMathOperator*{\argmax}{arg\,max} \DeclareMathOperator*{\argmin}{arg\,min}
Właściwie używając byłby wystarczający, ale jest ładowany wewnętrznie przez amsmath
, co i tak jest zalecane przy składaniu matematycznym.
*
w \DeclareMathOperator*
umieszcza podkreślony argument pod słowem zamiast w prawym dolnym rogu.
Komentarze
- Jeśli użyjesz
\DeclareMathOperator*{\argmin}{\arg\!\min}
, pozbędziesz się brzydkiej spacji międzyarg
imin
. - @rbp Dlaczego należy używać
\arg\min
, gdy po prostuargmin
robi to samo? - @egreg you ' racja. Doszedłem do tego na podstawie eksperymentów z innymi opcjami i nie ' nie spojrzałam wstecz 🙂
- W ConTeXt to znaczy:
\definemathcommand [argmin] [limop] {\mfunction{arg\,min}}
- Wyjaśnienie: zostawiłem cienką spację (\,) między argumentem a min, ponieważ ' to to, co oryginalny plakat miał w pytanie, więc założyłem, że chcą tam miejsca. Osobiście zrobiłbym po prostu
\DeclareMathOperator*{\argmin}{argmin}
, bez spacji.
Odpowiedź
Podsumowanie
W sequelu założono LaTeX.
Pytania wstępne
1. Czy cienka spacja powinna oddzielać „arg” od „min”?
To kwestia osobistych preferencji. Domyślna definicja \limsup
ma cienką spację, z drugiej strony „arcsin” jest zwykle zapisywane bez spacji między dwoma komponentami. Spójność jest, jak zawsze, słowem kluczowym: zapewni to użycie makrodefinicji, a także łatwość w modyfikowaniu składu całego dokumentu, jeśli zachodzi potrzeba przełączenia się z jednej opcji na inną.
2. Czy limity powinny znajdować się poniżej operatora w stylu wyświetlania?
Również jest to dyskusyjne i należy przestrzegać konwencji używanych w polu, dla którego dokument jest napisany.
3. Czy nazwa operatora powinna być ułożona prosto?
Zdecydowanie, podobnie jak wszystkie inne nazwy operatorów / funkcji, takie jak sinus i cosinus.
Dostępne narzędzia
1. amsmath
Za pomocą amsmath
można w preambule zrobić
\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
Oczywiście należy użyć tylko jednego z nich. W dokumencie wystarczy wpisać \argmin
, a odstępy wokół operatora będą właściwe, zgodnie z powszechnymi zasadami składu matematycznego.
Pozornie inny
\newcommand{\argmin}{\operatornamewithlimits{argmin}}
tak naprawdę nie jest, ponieważ jest zasadniczo taki sam jak \DeclareMathOperator*{\argmin}{argmin}
; ponadto używa przestarzałego polecenia, którym powinno być \operatorname*
.
2. Brak pakietu
Poniższe definicje są bardzo podobne do powyższych, w tej samej kolejności
\newcommand{\argmin}{\mathop{\mathrm{arg\,min}} \newcommand{\argmin}{\mathop{\mathrm{argmin}} \newcommand{\argmin}{\mathop{\mathrm{arg\,min}\nolimits} \newcommand{\argmin}{\mathop{\mathrm{argmin}\nolimits}
Z \underset
\underset{x}{\mathrm{argmin}}
Zostało to również wspomniane w pytaniu i w jednej odpowiedzi, ale jest to błędne, co pokaże porównanie wizualne.
3. Różnice
Wersja „bez pakietu” jest znacznie bardziej sztywna niż wersja amsmath
, ponieważ ten pakiet może odbierać nonamelimits
, która automatycznie zmieni wszystkie operatory, takie jak \lim
, \max
, które zwykle mają ograniczenia poniżej (w wyświetlacze), aby mieć je z boku. Ta sama opcja działałaby oczywiście również na nowo zdefiniowanych operatorach, pod warunkiem że zastosowano \DeclareMathOperator*
.
Dokument testowy
W poniższym teście dokumentu, zostaną porównane proponowane definicje lub konstrukcje.
\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}
Wyniki
Zgodnie z przewidywaniami wiele linii składa się tak samo. Jednak makra zdefiniowane za pomocą \mathop
nie będą zgodne z opcją nonamelimits
. Również wynik \argminD
jest ewidentnie błędny, ponieważ limit jest ustawiony poniżej „max”, a nie poniżej całej nazwy operatora.
Konstrukcja z \underset
jest nieprawidłowa, ponieważ nie będzie używała prawidłowego odstępu po operatorze: cienka spacja następuje po wszystkich innych i jest to właściwy sposób złożenia . Porównaj \sin x
i \mathrm{sin}x
, aby zobaczyć tę cienką przestrzeń w innym kontekście.
Zwróć uwagę, że \argminC
i \argminA
dają ten sam wynik, a także \argminD
i \argminB
. Wyjaśnienie: \arg
i \max
są już zdefiniowane jako operatory, więc TeX wstawia cienką spację, jeśli następują bezpośrednio po sobie. Użycie \argminC
lub \argminD
sprawia, że TeX trochę bardziej kręci kołami, bez żadnej przewagi nad \argminA
lub \argminB
.
Komentarze
- To powinna być zaakceptowana odpowiedź.
- Czy nie ' t
\newcommand{\argmin}{\operatornamewithlimits{argmin}}
różni się tym, że nie ' nie używaamsmath
pakiet? - @HomeroEsmeraldo
\operatornamewithlimits
to przestarzałe polecenie zdefiniowane przezamsopn
(pakiet załadowany przezamsmath
, rzadko używany samodzielnie). - Dzięki. Z jakiegoś powodu tylko
\underset
dało zadowalające wyniki dla with (gdzie x znajduje się pod argmin, a nie w sąsiedztwie). - co z tym, jak sprawić, by działał w Jupyter ?
Odpowiedź
Używam \newcommand{\argmin}{\operatornamewithlimits{argmin}}
.
Komentarze
- +1 Podoba mi się – po co komplikować zbyt wiele rzeczy? Wygląda to dokładnie tak samo, jak odpowiedź
\DeclareMathOperator*
. - Daje to ” argmin „. Aby uzyskać ” arg min ” (prawdopodobnie najbardziej typową notację), ustaw ją na
{arg\,min}
. - Google udzieliło mi 669 000 odpowiedzi na ” arg min ” i 520 000 odpowiedzi na ” argmin „, więc ' nazwałbym to remisem. 😉
- to działa …? czy brakuje instrukcji importu?
- Google Scholar dał mi 171 000 za ” arg min ” i 116 000 za ” argmin „.
Odpowiedź
Użyj \usepackage{amsmath}
, a następnie:
\operatorname*{argmin}_\theta f(x)
Lub podobnie (aby dodać spację),
\operatorname*{arg\,max}_\theta f(x)
Komentarze
- zwięźle i na temat!
Odpowiedź
Jeszcze inną alternatywą (w pewnym sensie gorszym rozwiązaniem, patrz komentarz poniżej) może być zdefiniowanie \argmin
w kategoriach \min
i \arg
polecenia.
\newcommand{\argmin}{\arg\!\min}
W ten sposób 1) \argmin
będzie zachowywał się zawsze w ten sam sposób jako \min
, 2) nie „nie potrzebuje amsmath
ani nie przejmuje się \operator...
poleceniami 3) tak, zmienna nie jest wyśrodkowana (jest wyśrodkowana w części min
), ale może nawet to być to, czego chcesz (ponieważ jest wyśrodkowany w ten sam sposób \min
, a także „g” w \arg
nie „t jeszcze bardziej obniża argumentu dolnego).
\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}
Komentarze
- To nie ' nie wygląda na dobry pomysł.
\argmin_{x\in X\cap Y} f(x)
całkowicie go zepsuje. - Jakie jest polecenie
\arg
? - @ThomasAhle,
arg
jest dla funkcji argumentu (kąt na płaszczyźnie zespolonej, $ z = | z | e ^ {i \ arg z} $. Tohecz jest tuż przy okazji. - @ boycott.se-yo ', dobra uwaga.
Odpowiedź
lub można użyć polecenia underset. Na przykład:
R = \underset{n} {\mathrm{argmax}} ~P(L_n|\mathbf{x})
Komentarze
- Nie ' nie używaj tego. To sprawia, że
argmin
amathord
zamiastmathop
i odstępy są nieprawidłowe. Co więcej, nie spowoduje to automatycznego dostosowania limitów w trybie wbudowanej matematyki.
Odpowiedź
Użyłbym \mathop
i \mathrm
i ostatecznie \limits
lub \nolimits
, w zależności od pożądanego zachowania w połączeniu z _
i ^
. Zobacz poniżej.
\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}
Odpowiedź
Działa to bez dodatkowego pakietu. Jednak utworzy nową linię.
$$\pi(s) = arg\max_\theta$$
Komentarze
-
$$...$$
nie jest zalecane do użytku z LaTeX. Lepiej użyj\[ ... \]
, aby uzyskać prawidłowe odstępy w pionie. - To rozwiązanie nie spowoduje poprawnego wpisania argmax. Tutaj argument będzie kursywą (ze złymi odstępami), a wartość maksymalna będzie ustawiona pionowo.
\DeclareMathOperator
to właściwy sposób postępowania w tym przypadku.\text{arg}\,\max\limits_{\theta}\,