Convex programming, a nonlinear programming subclass, is a kind of programming that generalizes and unifies other kinds, including linear programming, least squares, and quadratic programming. The concept of convex programming offers support to a large number of theoretical and practical applications. It boasts efficient algorithms that make it beneficial for a programmer to use and develop this type of programming. Convex programming requires extensive experience and expertise on the part of the programmer, as well as a disciplined learning process. Though not a new concept, it is still used in many disciplines and applications that require complex and technical mathematics.
Three principles are important to the application of convex programming: optimization, numerical computation and convex analysis. Improved computing power and breakthroughs in complex algorithms have enabled scientists and mathematicians to develop this type of programming and use it for problem solving. Convex programming has provided its users with beneficial computational tools that help solve higher class problems within the areas of linear programming and least squares. Engineers have found this kind of programming useful for functions such as signal processing, control, circuit design, networks, communication, etc.
Utilizing convex programming requires an understanding of linear algebra, optimization and vector calculus. Convex sets are quite common and used in this kind of programming. Programmers use these convex sets to solve certain optimization problems with vectors. Another common element of this type of programming is a convex function.
Applications of convex programming are common in the field of microeconomics, especially in determination of maximized profit and maximized consumer preference. This is a form of optimization and requires the complex mathematics found in convex programming. A common problem that is considered and solved in this discipline is what is called a mathematical optimization problem. Such a problem uses a vector to represent and abstract the making of the most optimal choice from a certain set of choices.
Another example of this type of abstract problem occurring in a different discipline includes portfolio optimization, where the best option of investing capital is sought from a certain set of assets. In computers and electronic design, device sizing is another optimization problem, where the best length and width for a device, such as a circuit, must be determined. Data fitting, another aspect related to computers and electronic devices, seeks to find the model out of a group of potential candidate models which best fits some kind of observed data or previously acquired information.