Next: , Previous: Linear Algebra, Up: Top


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 f 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