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 de0
y límites superiores de1
.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 utilizandofcn2optimexpr
. 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
fcn2optimexpr
| optimvar
| solve
| optimoptions
| eqnproblem
| show
| write