Programarea convexă, o subclasă de programare neliniară, este un fel de programare care generalizează și unifică alte tipuri, inclusiv programarea liniară, cele mai mici pătrate și programarea pătratică. Conceptul de programare convexă oferă suport unui număr mare de aplicații teoretice și practice. Se mândrește cu algoritmi eficienți care îl fac benefic pentru un programator să folosească și să dezvolte acest tip de programare. Programarea convexă necesită o experiență vastă și expertiză din partea programatorului, precum și un proces de învățare disciplinat. Deși nu este un concept nou, este încă folosit în multe discipline și aplicații care necesită matematică complexă și tehnică.
Trei principii sunt importante pentru aplicarea programării convexe: optimizarea, calculul numeric și analiza convexă. Puterea de calcul îmbunătățită și progresele în algoritmi complecși au permis oamenilor de știință și matematicienilor să dezvolte acest tip de programare și să o utilizeze pentru rezolvarea problemelor. Programarea convexă a oferit utilizatorilor săi instrumente de calcul benefice care ajută la rezolvarea problemelor de clasă superioară în domeniile programării liniare și cele mai mici pătrate. Inginerii au găsit acest tip de programare util pentru funcții precum procesarea semnalului, controlul, proiectarea circuitelor, rețelele, comunicarea etc.
Utilizarea programării convexe necesită o înțelegere a algebrei liniare, a optimizării și a calculului vectorial. Seturile convexe sunt destul de comune și utilizate în acest tip de programare. Programatorii folosesc aceste seturi convexe pentru a rezolva anumite probleme de optimizare cu vectori. Un alt element comun al acestui tip de programare este o funcție convexă.
Aplicațiile programării convexe sunt comune în domeniul microeconomiei, în special în determinarea profitului maximizat și a preferinței maximizate a consumatorilor. Aceasta este o formă de optimizare și necesită matematica complexă găsită în programarea convexă. O problemă comună care este considerată și rezolvată în această disciplină este ceea ce se numește o problemă de optimizare matematică. O astfel de problemă folosește un vector pentru a reprezenta și a abstractiza realizarea celei mai optime alegeri dintr-un anumit set de alegeri.
Un alt exemplu al acestui tip de problemă abstractă care apare într-o disciplină diferită include optimizarea portofoliului, în care cea mai bună opțiune de investire a capitalului este căutată dintr-un anumit set de active. În calculatoare și design electronic, dimensionarea dispozitivului este o altă problemă de optimizare, unde trebuie determinate cele mai bune lungime și lățime pentru un dispozitiv, cum ar fi un circuit. Fitarea datelor, un alt aspect legat de calculatoare și dispozitive electronice, urmărește să găsească modelul dintr-un grup de modele potențiale candidate care se potrivește cel mai bine cu un anumit tip de date observate sau informații dobândite anterior.