Main Content

Shortest Distance to a Plane

The Problem

This example shows how to formulate a linear least squares problem using the problem-based approach.

The problem is to find the shortest distance from the origin (the point [0,0,0]) to the plane x1+2x2+4x3=7. In other words, this problem is to minimize f(x)=x12+x22+x32 subject to the constraint x1+2x2+4x3=7. The function f(x) is called the objective function and x1+2x2+4x3=7 is an equality constraint. More complicated problems might contain other equality constraints, inequality constraints, and upper or lower bound constraints.

Set Up the Problem

To formulate this problem using the problem-based approach, create an optimization problem object called pointtoplane.

pointtoplane = optimproblem;

Create a problem variable x as a continuous variable with three components.

x = optimvar('x',3);

Create the objective function and put it in the Objective property of pointtoplane.

obj = sum(x.^2);
pointtoplane.Objective = obj;

Create the linear constraint and put it in the problem.

v = [1,2,4];
pointtoplane.Constraints = dot(x,v) == 7;

The problem formulation is complete. To check for errors, review the problem.

show(pointtoplane)
  OptimizationProblem : 

	Solve for:
       x

	minimize :
       sum(x.^2)


	subject to :
       x(1) + 2*x(2) + 4*x(3) == 7
     

The formulation is correct.

Solve the Problem

Solve the problem by calling 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.

<stopping criteria details>
disp(sol.x)
    0.3333
    0.6667
    1.3333

Verify the Solution

To verify the solution, solve the problem analytically. Recall that for any nonzero t, the vector t*[1,2,4] = t*v is perpendicular to the plane x1+2x2+4x3=7. So the solution point xopt is t*v for the value of t that satisfies the equation 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

Indeed, the vector xopt is equivalent to the point sol.x that solve finds.

See Also

Topics