> #Sprobujmy rozwiazac rownanie i sprawdzic czy dostalismy wszystkie rozwiazania
> s:=dsolve(diff(y(x),x)-y(x)*y(x),y(x));

                                     1
                              s := ---- = - x + _C1
                                   y(x)
--------------------------------------------------------------------------------
> #No nie dostalismy rozwiazania y=0! Co wiecej rozwiazanie jest de facto uwiklane
> #Sprawdzmy czy to rzeczywiscie rozwiazanie
> sol:=1/rhs(");

                                           1
                                sol := ---------
                                       - x + _C1
--------------------------------------------------------------------------------
> diff(sol,x)-sol*sol;

                                        0
> #albo inaczej
> sol:=lhs(s)-rhs(s);

                                       1
                              sol := ---- + x - _C1
                                     y(x)
> sol:=subs(y(x)=y,sol);

                              sol := 1/y + x - _C1
> diff(sol,x) + y*y*diff(sol,y);

                                        0
--------------------------------------------------------------------------------
> #OK! mamy rozwiazanie (ta druga metoda bardziej ogolna)
> #Sprawdzmy np czy funkcja y-c*exp(x)=C jest rozwiazaniem rownania y'=y
> sol:=y-c*exp(x);

                               sol := y - c exp(x)
> er:=diff(sol,x)+ y*diff(sol,y);

                               er := y - c exp(x)
> er;

                                  y - c exp(x)
> #przy pomocy simplify sprawdzamy...
> simplify(er,{sol=0});

                                        0
> #Ale czy dla kazdego rownania tak sie da
--------------------------------------------------------------------------------
> eq:=diff(y(x),x)= (x+y(x))/(x-y(x));

                                   d         x + y(x)
                           eq := ---- y(x) = --------
                                  dx         x - y(x)
--------------------------------------------------------------------------------
> dsolve(eq,y(x));

                                                y(x)
                               _C1 x exp(arctan(----))
                                                  x
                           x = -----------------------
                                        2    2 1/2
                                   (y(x)  + x )
--------------------------------------------------------------------------------
> #No i jak z tego rozwiklac funkcje? czy cokolwiek zobaczyc?
> l:=lhs(");r:=rhs("");

                                     l := x

                                                y(x)
                               _C1 x exp(arctan(----))
                                                  x
                          r := -----------------------
                                        2    2 1/2
                                   (y(x)  + x )
--------------------------------------------------------------------------------
> solu:=l-r;

                                                    y(x)
                                   _C1 x exp(arctan(----))
                                                      x
                       solu := x - -----------------------
                                            2    2 1/2
                                       (y(x)  + x )
> diff(solu,x) +( (y(x) +x)/(y(x) -x))*diff(solu,y);

                             y(x)   /       /  d      \      \
            _C1 x exp(arctan(----)) |2 y(x) |---- y(x)| + 2 x|
                               x    \       \ dx      /      /
    1 + 1/2 --------------------------------------------------
                                   2    2 3/2
                              (y(x)  + x )

                                         /  d             \
                                         |---- y(x)       |
                                         | dx         y(x)|            y(x)
                          y(x)     _C1 x |--------- - ----| exp(arctan(----))
           _C1 exp(arctan(----))         |    x         2 |              x
                            x            \             x  /
         - --------------------- - ------------------------------------------
                   2    2 1/2                              /        2\
              (y(x)  + x )                      2    2 1/2 |    y(x) |
                                           (y(x)  + x )    |1 + -----|
                                                           |       2 |
                                                           \      x  /
--------------------------------------------------------------------------------
> simplify(",{solu=0});

            3 /    /  d      \\
        y(x)  |1 + |---- y(x)|| _C1 x %1          2                  4
              \    \ dx      //               y(x)        _C1 %1 y(x)
        -------------------------------- + ---------- - ---------------
                      2    2 5/2               2    2        2    2 5/2
                 (y(x)  + x )              y(x)  + x    (y(x)  + x )

                    4    /  d      \       2 /    /  d      \\      2
               _C1 x  %1 |---- y(x)|   y(x)  |1 + |---- y(x)|| _C1 x  %1
                         \ dx      /         \    \ dx      //
             - --------------------- - ---------------------------------
                       2    2 5/2                    2    2 5/2
                  (y(x)  + x )                  (y(x)  + x )

                    /    /  d      \\      3
               y(x) |1 + |---- y(x)|| _C1 x  %1        2
                    \    \ dx      //                 x
             + -------------------------------- + ----------
                             2    2 5/2               2    2
                        (y(x)  + x )              y(x)  + x

                                         y(x)
%1 :=                         exp(arctan(----))
                                           x
--------------------------------------------------------------------------------
> # I nic z tego nie wynika! Moze jak zastapimy y(x) prez x?
> solu:=subs(y(x)=y,solu);

                                   _C1 x exp(arctan(y/x))
                       solu := x - ----------------------
                                          2    2 1/2
                                        (y  + x )
--------------------------------------------------------------------------------
> diff(solu,x) +( (y +x)/(y -x))*diff(solu,y);

          2
     _C1 x  exp(arctan(y/x))   _C1 exp(arctan(y/x))     _C1 y exp(arctan(y/x))
 1 + ----------------------- - -------------------- + -------------------------
             2    2 3/2              2    2 1/2                      /      2 \
           (y  + x )               (y  + x )            2    2 1/2   |     y  |
                                                      (y  + x )    x |1 + ----|
                                                                     |      2 |
                                                                     \     x  /

                /_C1 x exp(arctan(y/x)) y     _C1 exp(arctan(y/x)) \
        (y + x) |------------------------ - -----------------------|
                |        2    2 3/2                      /      2 \|
                |      (y  + x )              2    2 1/2 |     y  ||
                |                           (y  + x )    |1 + ----||
                |                                        |      2 ||
                \                                        \     x  //
      + ------------------------------------------------------------
                                    y - x
--------------------------------------------------------------------------------
> simplify(",{solu=0});

                             4                             3       2
       _C1 exp(arctan(y/x)) y      _C1 x exp(arctan(y/x)) y       y
     - ----------------------- + 2 ------------------------- + -------
               2    2 5/2                   2    2 5/2          2    2
             (y  + x )                    (y  + x )            y  + x

                   3                          2          4
              _C1 x  exp(arctan(y/x)) y      x      _C1 x  exp(arctan(y/x))
          + 2 ------------------------- + ------- + -----------------------
                       2    2 5/2          2    2           2    2 5/2
                     (y  + x )            y  + x          (y  + x )
--------------------------------------------------------------------------------
> #No i dalej nic!