La programación convexa, una subclase de programación no lineal, es un tipo de programación que generaliza y unifica otros tipos, incluida la programación lineal, mínimos cuadrados y programación cuadrática. El concepto de programación convexa ofrece apoyo a un gran número de aplicaciones teóricas y prácticas. Cuenta con algoritmos eficientes que hacen que sea beneficioso para un programador utilizar y desarrollar este tipo de programación. La programación convexa requiere una amplia experiencia y conocimientos por parte del programador, así como un proceso de aprendizaje disciplinado. Aunque no es un concepto nuevo, todavía se utiliza en muchas disciplinas y aplicaciones que requieren matemáticas técnicas y complejas.
Tres principios son importantes para la aplicación de la programación convexa: optimización, cálculo numérico y análisis convexo. La potencia informática mejorada y los avances en algoritmos complejos han permitido a científicos y matemáticos desarrollar este tipo de programación y utilizarla para la resolución de problemas. La programación convexa ha proporcionado a sus usuarios herramientas computacionales beneficiosas que ayudan a resolver problemas de clase superior dentro de las áreas de programación lineal y mínimos cuadrados. Los ingenieros han encontrado útil este tipo de programación para funciones como procesamiento de señales, control, diseño de circuitos, redes, comunicación, etc.
La utilización de la programación convexa requiere una comprensión del álgebra lineal, la optimización y el cálculo vectorial. Los conjuntos convexos son bastante comunes y se utilizan en este tipo de programación. Los programadores usan estos conjuntos convexos para resolver ciertos problemas de optimización con vectores. Otro elemento común de este tipo de programación es una función convexa.
Las aplicaciones de la programación convexa son comunes en el campo de la microeconomía, especialmente en la determinación del beneficio maximizado y la preferencia maximizada del consumidor. Esta es una forma de optimización y requiere las matemáticas complejas que se encuentran en la programación convexa. Un problema común que se considera y se resuelve en esta disciplina es lo que se denomina problema de optimización matemática. Tal problema usa un vector para representar y abstraer la toma de la elección más óptima de un cierto conjunto de opciones.
Otro ejemplo de este tipo de problema abstracto que ocurre en una disciplina diferente incluye la optimización de la cartera, donde se busca la mejor opción de inversión de capital a partir de un determinado conjunto de activos. En las computadoras y el diseño electrónico, el tamaño del dispositivo es otro problema de optimización, donde se debe determinar la mejor longitud y ancho para un dispositivo, como un circuito. El ajuste de datos, otro aspecto relacionado con las computadoras y los dispositivos electrónicos, busca encontrar el modelo a partir de un grupo de modelos candidatos potenciales que mejor se adapte a algún tipo de datos observados o información previamente adquirida.