在伪代码中插入方程的正确方法是什么

时间:2015-12-11 02:56:13

标签: latex equation

我开始在Latex中编写我的笔记,我正在尝试根据以下等式编写伪代码:

equation

这是我迄今为止尝试过的代码。

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

我仍然觉得它有点乱。你有更简单的方法来写这个吗?

2 个答案:

答案 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)

这是您想要的内容,来自包algorithmalgorithmic

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

给出,

enter image description here

注意:如果您在投影仪中使用它,请将\begin{algorithm}[H]放在上面的行中,而不仅仅是\begin{algorithm}