PREV UP NEXT Octave

Chapter 9: 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.

For 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)

prints

solution converged to requested tolerance

Tolerances and other options for fsolve may be specified using the function fsolve_options.