# DCP Rule set error

CODE 1:

clc;
clear all;
close all;
h=0.1;
T=5;
n=50;
xf=12;
vf=2;
Vg=10;
Ag=2;
c=2;
cvx_begin
variables Pb(50) V(50) A(50) X(50) k(50)
for i=1:n-1
E1=10*(k(i+1)-k(i))+h*Pb(i)+h*c*pow_abs(V(i),3);
if i==1
E=E1;
else
E=E1+E;
end
end
minimize E
subject to
for i=1:n-1
V(i+1)-V(i)==h*A(i);
X(i+1)-X(i)==0.5*h*(V(i+1)+V(i));
A(i)<=Ag;
V(i)>=0;
V(i)<=Vg;
k(i)==pow_abs(V(i),2)/2;
end
xf-X(n)<=0;
V(n)-vf<=0;
cvx_end
disp(E);

CODE 2:

clc;
clear all;
close all;
h=0.1;
T=5;
n=50;
xf=12;
vf=2;
Vg=10;
Ag=2;
c=2;
cvx_begin
variables Pb(50) V(50) A(50) X(50)
for i=1:n-1
E1=((V(i+1)^2-V(i)^2)/2)+h*Pb(i)+h*c*V(i)^3;
if i==1
E=E1;
else
E=E1+E;
end
end
minimize E
subject to
for i=1:n-1
V(i+1)-V(i)==h*A(i);
X(i+1)-X(i)==0.5*h*(V(i+1)+V(i));
A(i)<=Ag;
V(i)>=0;
V(i)<=Vg;
end
xf-X(n)<=0;
V(n)-vf<=0;
cvx_end
disp(E);

I am trying to minimize E (Energy) by using above two codes, but they are violating DCP ruleset. It would be of great help if you find what mistake I am making here.

V:Velocity ; X:position; Pb:Braking Power; vf:Final Velocity ; xf:Final Position; Vg:Max Velocity; Ag:Max acceleration; h:step size; c:drag Coefficient

Code 1:
k(i)==pow_abs(V(i),2)/2; is a nonlinear equality constraint, which is not allowed.

Three types of constraints may be specified in disciplined convex programs:

An equality constraint, constructed using ==, where both sides are affine.
A less-than inequality constraint, using <=, where the left side is convex and the right side is concave.
A greater-than inequality constraint, using >=, where the left side is concave and the right side is convex.

Code 2:
In
E1=((V(i+1)^2-V(i)^2)/2)+h*Pb(i)+h*c*V(i)^3;

V(i+1)^2-V(i)^2)/2 is convex minus convex, which is not allowed.

Have you proved that this is a convex optimization problem?