📄 nonlinex.m
字号:
clc
echo on
% Starting from YALMIP version 3, polynomial expressions are supported.
%
% These nonlinear expressions can be used for, e.g.
% SDPs with BMI constraints, or to solve sum-of-squares problems
%
% The nonlinear expressions are built up from sdpvar objects,
% and are manipulated in same way
pause % Strike any key to continue.
yalmip('clear')
clc
% To begin with, define a scalar variable
x = sdpvar(1,1);
pause % Strike any key to continue.
% Nonlinear expressions are easily built
p = 1+x+x^2+x^3;
pause % Strike any key to continue.
% Matrices can also be nonlinear
Y = sdpvar(3,3);
Z = Y*Y+Y.*Y;
pause
% Polynomials are displayed without any symbolic information...
y = sdpvar(1,1);
p = x*x+y^4+x*y
pause
% But can be displayed better with the command sdisplay
% (this only works if the involved variables are explictely
% defined as scalars)
sdisplay(p)
pause
% Polynomials can be diffrentiated
dp = jacobian(p);
sdisplay(dp)
pause
% ...w.r.t a specific variable
dp = jacobian(p,y);
sdisplay(dp)
pause
% ...why not twice
sdisplay(jacobian(jacobian(p)'))
pause
% ...or
sdisplay(hessian(p))
pause
% Of course, all standard linear operators applies
% to the nonlinear objects
x = sdpvar(3,1);
p = trace(x*x') + sum(x.^2)
pause
clc
% Finally, a word of caution. Use yalmip('clear')
% while working with polynomial expressions.
%
% The reason is that every time a nonlinear variable is
% defined, a description on how it is created is
% saved inside YALMIP. With many nonlinear terms
% this list grows fast, making YALMIP slower and slower
% since the list has to be searched in when polynomial
% expressions are manipulated.
%
% (after this short session, there are already 27 nonlinear terms)
pause
echo off
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -