GNU Octave: Nonlinear Equations

[ < ] | [ > ] |  | [ << ] | [ Up ] | [ >> ] |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

# 21. Nonlinear Equations

Octave can solve sets of nonlinear equations of the form

    F (x) = 0

using the function `fsolve`, which is based on the MINPACK subroutine `hybrd`.

Loadable Function: [x, info, msg] = fsolve (fcn, x0)
  Given fcn, the name of a function of the form `f (x)` and an initial starting point x0, `fsolve` solves the set of equations such that `f(x) == 0`.

  If fcn is a two-element string array, the first element names the function described above, and the second element names a function of the form `j (x)` to compute the Jacobian matrix with elements

                 df_i
      jac(i,j) = ----
                 dx_j

  You can use the function `fsolve_options` to set optional parameters for `fsolve`.

Loadable Function: fsolve_options (opt, val)
  When called with two arguments, this function allows you set options parameters for the function `fsolve`. Given one argument, `fsolve_options` returns the value of the corresponding option. If no arguments are supplied, the names of all the available options and their current values are displayed.

  Options include

  `"tolerance"`
    Nonnegative relative tolerance.

Here is a complete example. To solve the set of equations

    -2x^2 + 3xy   + 4 sin(y) = 6
     3x^2 - 2xy^2 + 3 cos(x) = -4

you first need to write a function to compute the value of the given function. For example:

    function y = f (x)
      y(1) = -2*x(1)^2 + 3*x(1)*x(2)   + 4*sin(x(2)) - 6;
      y(2) =  3*x(1)^2 - 2*x(1)*x(2)^2 + 3*cos(x(1)) + 4;
    endfunction

Then, call `fsolve` with a specified initial condition to find the roots of the system of equations. For example, given the function `f` defined above,

    [x, info] = fsolve ("f", [1; 2])

results in the solution

    x =

      0.57983
      2.54621

    info = 1

A value of `info = 1` indicates that the solution has converged.

The function `perror` may be used to print English messages corresponding to the numeric error codes. For example,

    perror ("fsolve", 1)
         -| solution converged to requested tolerance

[ << ] | [ >> ] |  |  |  |  |  | [Top] | [Contents] | [Index] | [ ? ]

This document was generated by John W. Eaton on March, 12 2004 using texi2html