Distancia más corta a un plano
Problema
Este ejemplo muestra cómo formular un problema de mínimos cuadrados lineales utilizando el enfoque basado en problemas.
El problema consiste en encontrar la distancia más corta desde el origen (el punto [0,0,0]
) al plano . En otras palabras, este problema consiste en minimizar sujeto a la restricción . La función f(x) se llama función objetivo y es una restricción de igualdad. Puede que problemas más complicados contengan otras restricciones de igualdad, de desigualdad y de límite superior o inferior.
Configurar el problema
Para formular este problema utilizando el enfoque basado en problemas, cree un objeto de problema de optimización denominado pointtoplane
.
pointtoplane = optimproblem;
Cree una variable del problema x
como una variable continua con tres componentes.
x = optimvar('x',3);
Cree la función objetivo y póngala en la propiedad Objective
de pointtoplane
.
obj = sum(x.^2); pointtoplane.Objective = obj;
Cree la restricción lineal y póngala en el problema.
v = [1,2,4]; pointtoplane.Constraints = dot(x,v) == 7;
La formulación del problema está completa. Para comprobar si hay errores, revise el problema.
show(pointtoplane)
OptimizationProblem : Solve for: x minimize : sum(x.^2) subject to : x(1) + 2*x(2) + 4*x(3) == 7
La formulación es correcta.
Resolver el problema
Resuelva el problema llamando a solve
.
[sol,fval,exitflag,output] = solve(pointtoplane);
Solving problem using lsqlin. Minimum found that satisfies the constraints. Optimization completed because the objective function is non-decreasing in feasible directions, to within the value of the optimality tolerance, and constraints are satisfied to within the value of the constraint tolerance.
disp(sol.x)
0.3333 0.6667 1.3333
Verificar la solución
Para verificar la solución, resuelva el problema analíticamente. Recuerde que para cualquier t
distinta de cero, el vector t*[1,2,4] = t*v
es perpendicular al plano . Así que el punto de solución xopt
es t*v
para el valor de t
que satisface la ecuación dot(t*v,v) = 7
.
t = 7/dot(v,v)
t = 0.3333
xopt = t*v
xopt = 1×3
0.3333 0.6667 1.3333
En efecto, el vector xopt
es equivalente al punto sol.x
que encuentra solve
.