FindMinimum::cvmit FindMaximum::cvmit FindFit::cvmit FindRoot::cvmit

Details

  • This message is generated when the indicated limit on the number of iterations is reached before finding a region that contains the requested result.
  • This error can occur if the objective function does not have the required minimum, maximum, or root.
  • This error can often be corrected by choosing better starting values.
  • Good starting values can often be chosen by evaluating the function at selected points, or by looking at a plot of the function.
  • This error can also occur if the nonlinearity of the partial differential equation model is too strong. Then the error can be corrected by solving the PDE in steps.
  • Off[message] switches off the message; On[message] switches it on. For example: Off[FindMinimum::cvmit].

Examples

Basic Examples  (4)

The starting value is not near the local minimum of this function:

A minimum is computed without difficulty if the starting value is closer to the solution:

A plot of the function shows the location of the minimum:

The first argument in FindRoot does not have a real root:

A complex root of this equation can be computed by giving complex starting values:

The first argument in FindMinimum does not have a minimum:

Highly nonlinear partial differential equations may fail to solve when the nonlinearity is too strong. Consider this hyperelastic example from solid mechanics, where a rectangular region is held fixed on the left and the material is pulled on the right. Set up the model:

Solve the model for a specific force of :

Visualize the solution:

Solve the model for a higher force of :

The model fails to solve because the nonlinearity has become too strong. Not all hope is lost, however. If this happens, a solver restart may help. The idea is to slowly increase the load and use the solution from the last step as a starting point for the next step until the maximum force has been applied.

A parametric function is created with a load parameter that will control the amount of force applied:

Next, set up an iteration with an initial displacement of 0 and where you want to get to the full force in 10 steps:

When you run the parametric function with a specific parameter , you get a displacement for that force. This displacement is used as an initial seed for the next-higher value of until you reach the full force:

Visualize the solution: