5

I write equations in eqnarrayuse Latex, but there are lines that exceed the right margin, how to fix it?

This is my code:

\begin{eqnarray}    
    k_1&=&hf(t_i, y_i)=hf_i \label{$k_1$ RK-4}\\
    k_2&=&hf(t_i+p_1h, y_i+q_11_k1)\nonumber\\
       &=&h(f_i+p_1hf_t+q_{11}k_1f_y)\nonumber\\
       &=&h(f_i+p_1hf_t+q_{11}hf_if_y)\\    
    k_3&=&hf(t_i+p_2h,y_i+q_21k_1+q_22k_2)\nonumber\\
       &=&h(f_i+p_2hf_t+q_21k_1f_y+q_22k_2f_y)\nonumber\\
       &=&h(f_i+p_2hf_t+q_{21}hf_if_y+q_{22} h(f_i+p_1hf_t+q_{11}hf_if_y)f_y)\nonumber\\
       &=&h(f_i+p_2hf_t+q_{21}hf_if_y+q_{22}hf_if_y +q_22h^2p_1f_tf_y+q_{11}q{22}h^2f_i(f_y)^2)\\
    k_4&=&hf(t_i+p_3h, y_i+q_31k_1+q_32k_2+q_33k_3)\nonumber\\
       &=&h(f_i+p_3hf_t+q_{31}k_1f_y+q_{32}k_2f_y+q_{33}k_3f_y)\nonumber\\
       &=&h(f_i+p_3hf_t+q_{31}hf_if_y+q_{32} h(f_i+p_1hf_t+q_{11}hf_if_y)f_y +q_{33}h(f_i+p_2hf_t+q_{21}hf_if_y+q_{22}hf_if_y+q_{22}h^2p_1f_tf_y+q_{21}q_{22}h^2f_i(f_y)^2)f_y)\nonumber\\
       &=&h(f_i+p_3hf_t+q_{31}hf_if_y+q_{32}hf_if_y +p_1q_{32}h^2f_tf_y +q_{11}q_{32}h^2f_i(f_y)^2+q_{33}hf_if_y+p_2q_{33}h^2f_tf_y+q_{21}q_{33}h^2f_i(f_y)^2+q_{22}q_{33}h^2f_i(f_y)^2+q_{22}q_{33}p_1h^3f_t(f_y)^2+q_{11}q_{22}q_{33}h^3f_i(f_y)^3)\\
\end{eqnarray}

and this is the result:

enter image description here

  • 3
    The equation is too wide because it is too wide. However, you already know how to introduce line breaks. Please note that most users have switched to align instead of eqnarray. (However, the latter does not solve the problem automatically, breqn does in principle but I personally would rather break the lines by hand than using breqn.) – marmot Mar 15 at 1:07
  • 1
    @liswyhy Just to remind you that the >s in your code block prevent your code from being compilable. Removing that is better. (and I did it for you.) – The old JouleV Mar 15 at 3:54
7

Besides the standard advice of not using eqnarray for whatsoever reason, see eqnarray vs align, I'd recommend using split for this, so to divide each block into a single unit.

With the tbtags option, we ensure that the number attached to a split equation is added at the bottom (when equation numbers are on the right) or at the top.

\documentclass{article}
\usepackage[tbtags]{amsmath} % for math

\begin{document}
\begin{align}    
k_1 &= hf(t_i, y_i)=hf_i \label{k1_RK_4}
\\
\begin{split}
k_2 &= hf(t_i+p_1h, y_i+q_{11}k_1) \\
    &= h(f_i+p_1hf_t+q_{11}k_1f_y) \\
    &= h(f_i+p_1hf_t+q_{11}hf_if_y)
\end{split}
\\
\begin{split}
k_3 &= hf(t_i+p_2h, y_i+q_{21}k_1+q_{22}k_2) \\
    &= h(f_i+p_2hf_t+q_{21}k_1f_y+q_{22}k_2f_y) \\
    &= h[f_i+p_2hf_t+q_{21}hf_if_y+q_{22}h(f_i+p_1hf_t+q_{11}hf_if_y)f_y] \\    
    &= h[f_i+p_2hf_t+q_{21}hf_if_y+q_{22}hf_if_y+q_{22}h^2p_1f_tf_y+
       q_{11}q_{22}h^2\!f_i(f_y)^2]
\end{split}
\\
\begin{split}
k_4 &= hf(t_i+p_3h, y_i+q_{31}k_1+q_{32}k_2+q_{33}k_3) \\
    &= h(f_i+p_3hf_t+q_{31}k_1f_y+q_{32}k_2f_y+q_{33}k_3f_y) \\
    &= h\{f_i+p_3hf_t+q_{31}hf_if_y+q_{32}h(f_i+p_1hf_t+q_{11}hf_if_y)f_y \\
    &\qquad +q_{33}h[f_i+p_2hf_t+q_{21}hf_if_y+q_{22}hf_if_y+q_{22}h^2p_1f_tf_y \\
    &\qquad +q_{21}q_{22}h^2\!f_i(f_y)^2]f_y\} \\
    &= h\{f_i+p_3hf_t+q_{31}hf_if_y+q_{32}hf_if_y+p_1q_{32}h^2\!f_tf_y+
       q_{11}q_{32}h^2\!f_i(f_y)^2 \\
    &\qquad +q_{33}hf_if_y+p_2q_{33}h^2\!f_tf_y+q_{21}q_{33}h^2\!f_i(f_y)^2+
     q_{22}q_{33}h^2\!f_i(f_y)^2 \\
    &\qquad+q_{22}q_{33}p_1h^3\!f_t(f_y)^2+q_{11}q_{22}q_{33}h^3\!f_i(f_y)^3\}
\end{split}
\end{align}

\end{document}

enter image description here

  • Can multline be another solution? P.S. Nice answer! – manooooh Mar 15 at 8:29
  • 2
    +1. You may want to point out explicitly the role that setting the option tbtags plays here. :-) – Mico Mar 15 at 8:31
8

In addition to inserting some line breaks by hand in the final two rows, you also need to fix some of the notation by adding curly braces as needed in the terms q_11, q_21, q_22, etc. (And _k1 should be k_1, right?) When the parenthetic structures are nested, it helps readers if square brackets and curly braces are used in addition to round parentheses, to help detect the orders of the parentheses.

And you most definitely should not be using the badly deprecated eqnarray environment. Use the align environment, which is provided by the amsmath package, instead.

enter image description here

\documentclass{article}
\usepackage{amsmath} % for 'align' environment and '\notag' macro

\begin{document}
\begin{align}    
    k_1 &= hf(t_i, y_i)=hf_i \label{k1_RK_4}\\
    k_2 &= hf(t_i+p_1h, y_i+q_{11}k_1) \notag\\
     &= h(f_i+p_1hf_t+q_{11}k_1f_y) \notag\\
     &= h(f_i+p_1hf_t+q_{11}hf_if_y)\\   
    k_3 &= hf(t_i+p_2h, y_i+q_{21}k_1+q_{22}k_2)  \notag\\
     &= h(f_i+p_2hf_t+q_{21}k_1f_y+q_{22}k_2f_y) \notag\\
     &= h[f_i+p_2hf_t+q_{21}hf_if_y+q_{22}h(f_i+p_1hf_t+q_{11}hf_if_y)f_y] \notag\\    
     &= h[f_i+p_2hf_t+q_{21}hf_if_y+q_{22}hf_if_y+q_{22}h^2p_1f_tf_y+q_{11}q_{22}h^2\!f_i(f_y)^2]\\
    k_4 &= hf(t_i+p_3h, y_i+q_{31}k_1+q_{32}k_2+q_{33}k_3) \notag\\
     &= h(f_i+p_3hf_t+q_{31}k_1f_y+q_{32}k_2f_y+q_{33}k_3f_y) \notag\\
     &= h\{f_i+p_3hf_t+q_{31}hf_if_y+q_{32}h(f_i+p_1hf_t+q_{11}hf_if_y)f_y \notag\\
     &\qquad +q_{33}h[f_i+p_2hf_t+q_{21}hf_if_y+q_{22}hf_if_y+q_{22}h^2p_1f_tf_y \notag\\
     &\qquad +q_{21}q_{22}h^2\!f_i(f_y)^2]f_y\} \notag\\   
     &= h\{f_i+p_3hf_t+q_{31}hf_if_y+q_{32}hf_if_y+p_1q_{32}h^2\!f_tf_y+q_{11}q_{32}h^2\!f_i(f_y)^2 \notag\\
     &\qquad +q_{33}hf_if_y+p_2q_{33}h^2\!f_tf_y+q_{21}q_{33}h^2\!f_i(f_y)^2+q_{22}q_{33}h^2\!f_i(f_y)^2 \notag\\
     &\qquad+q_{22}q_{33}p_1h^3\!f_t(f_y)^2+q_{11}q_{22}q_{33}h^3\!f_i(f_y)^3\}
\end{align}
\end{document}
  • I forgot to mention another adjustment I made: I inserted negative thinspace (\!) in all instances of either h^2 or h^3 being followed by f. This avoids creating "visual holes" in the formulas. – Mico Mar 15 at 8:35

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.