我开始在Latex中编写我的笔记,我正在尝试根据以下等式编写伪代码:
这是我迄今为止尝试过的代码。
\begin{addmargin}[10mm]{0mm}
\textbf{Repeat until convergence:} \ \{
\[
\theta_j := \theta_j + \alpha \sum_{i=1}^m(y^{(i)}-h_\theta(x^{(i)})) \ x_j^{(i)} \quad (\text{for every} \ j).
\]
\}
\end{addmargin}
我仍然觉得它有点乱。你有更简单的方法来写这个吗?
答案 0 :(得分:1)
这个问题应该转移到tex.stackexchange。
存在几种不同的整齐Latex软件包,专门用于编写伪代码。其中一种更简单的方法是使用Algorithmicx
包(包文档here),特别是algpseudocode
部分。
这是使用Algoritmicx的伪代码的MWE:
\documentclass{article}
\usepackage{amsmath}
\usepackage{algpseudocode}
\renewcommand{\algorithmicforall}{\textbf{for each}}
\begin{document}
\noindent Let $\mathcal{J} := \{1, ..., n\}$.
\begin{algorithmic}
\While {Some convergence criteria is not fulfilled ...}
\ForAll {$j \in \mathcal{J}$}
\State $\theta_j \gets \theta_j + \alpha \sum_{i=1}^m(y^{(i)}-h_\theta(x^{(i)})) \ x_j^{(i)}$
\EndFor
\State {... update some convergence measure} \Comment{Describe convergence measure}
\EndWhile
\end{algorithmic}
\end{document}
请注意,在第四个非空行,我已经从algorithmicx(\ForAll
)重载了\algorithmicforall
命令的文本,变为“ for ... each “而不是” for all all “。
另请注意,通常,只有注释可能包含伪代码中的文本,因此句子“某些收敛标准未得到满足...... ”和“ ...更新一些收敛度量“上面应该用你定义的算法/方程收敛代替。
答案 1 :(得分:1)
这是您想要的内容,来自包algorithm
和algorithmic
\begin{algorithm}
\caption{Gradient Descent}\label{alg-gd}
\begin{algorithmic}[1]
\STATE Initialize \( \theta_{0} = k\in \R^d \)
\STATE Initialize \( t \leftarrow 0 \)
\REPEAT
\STATE \( \forall j \in \{1,..., d\}, \theta_{j,t+1} \leftarrow \theta_{j,t} - \alpha \frac{\p }{\p \theta_{j} } L(\theta )\bigg|_{\theta = \theta_{t} } \)
\STATE \( t \leftarrow t + 1 \)
\UNTIL{convergence}
给出,
注意:如果您在投影仪中使用它,请将\begin{algorithm}[H]
放在上面的行中,而不仅仅是\begin{algorithm}