Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

Flujo de trabajo basado en problemas para resolver ecuaciones

Nota

Optimization Toolbox™ ofrece dos enfoques para resolver ecuaciones. Esta sección describe el enfoque basado en problemas. Configuración de problema de optimización basada en solvers describe el enfoque basado en solvers.

Para resolver un sistema de ecuaciones, siga los pasos siguientes.

  • Cree un objeto de problema de ecuaciones con eqnproblem. Un objeto de problema es un contenedor en el que se definen ecuaciones. El objeto de problema de ecuaciones define el problema y cualquier límite que exista en las variables del problema.

    Por ejemplo, cree un problema de ecuación.

    prob = eqnproblem;
  • Cree variables con nombre mediante optimvar. Una variable de optimización es una variable simbólica que se utiliza para describir ecuaciones. Incluya cualquier límite en las definiciones de la variable.

    Por ejemplo, cree un arreglo de variables de 15 por 3 llamado 'x' con límites inferiores de 0 y límites superiores de 1.

    x = optimvar('x',15,3,'LowerBound',0,'UpperBound',1);
  • Defina ecuaciones en las variables del problema. Por ejemplo:

    sumeq = sum(x,2) == 1;
    prob.Equations.sumeq = sumeq;

    Nota

    Si tiene una función no lineal que no está compuesta por polinomios, expresiones racionales y funciones elementales como exp, convierta la función en una expresión de optimización utilizando fcn2optimexpr. Consulte Convertir una función no lineal en una expresión de optimización y Operaciones compatibles con variables y expresiones de optimización.

    Si fuera necesario, incluya parámetros adicionales en las ecuaciones como variables del espacio de trabajo; consulte Pasar parámetros adicionales en el enfoque basado en problemas.

  • Para problemas no lineales, establezca un punto inicial como una estructura cuyos campos son los nombres de las variables de optimización. Por ejemplo:

    x0.x = randn(size(x));
    x0.y = eye(4); % Assumes y is a 4-by-4 variable
  • Resuelva el problema utilizando solve.

    sol = solve(prob);
    % Or, for nonlinear problems,
    sol = solve(prob,x0)

Además de estos pasos básicos, puede revisar la definición del problema antes de resolverlo utilizando show o write. Establezca opciones para solve utilizando optimoptions, como se explica en Change Default Solver or Options.

Advertencia

El enfoque basado en problemas no es compatible con valores complejos en una función objetivo, igualdades no lineales o desigualdades no lineales. Si el cálculo de una función tiene un valor complejo, incluso como valor intermedio, el resultado final puede ser incorrecto.

Nota

Todos los nombres en un problema de optimización deben ser únicos. Específicamente, todos los nombres de variables, de funciones objetivo y de funciones de restricción deben ser diferentes.

Para ver un ejemplo básico de resolución de ecuaciones con polinomios, consulte Resolver un sistema de polinomios no lineal, basado en problemas. Para ver un ejemplo general no lineal, consulte Resolver un sistema de ecuaciones no lineal, basado en problemas. Para obtener ejemplos más exhaustivos, consulte Sistemas de ecuaciones no lineales.

Consulte también

| | | | | |

Temas relacionados