📄 lp.asv
字号:
function lp(C,p1)
varepsilon=0.1;
l=50;
x=linspace(-10,10,l);
xi=randn(1,l);
xi3=0.1.*xi;
y3=sin(x+exp(-20.))./(x+exp(-20.))+xi3;
p1=2;
C=1000;
Q=rbfker(x',p1,0);
%线性规划开始
% yueshu 1
E=-1.*eye(l);
for i=1:l
B1(i,:)=[Q(:,i);-1.*Q(:,i);E(:,i);1;-1]';
end
%yueshu 2
for i=1:l
B2(i,:)=[-1.*Q(:,i);Q(:,i);E(:,i);-1;1]';
end
EE=eye(2.*l);
b=[y3';-1.*y3']+varepsilon;
AA=[B1;B2];
for i=1:(2.*l)
if b(i)<0
EE(i,i)=-1;b(i)=abs(b(i));
AA(i,:)=-1.*AA(i,:);
end
end
A=[AA';EE']';
f=[ones(2.*l,1);C.*ones(l,1);0;0;zeros(2.*l,1)];
lb=zeros(5*l+2,1);
[alpha,fval]=linprog(f,[],[],A,b,lb);
fprintf('fval =%f',fval);
threshold=alpha(3*l+1)-alpha(3*l+2);
xprime=linspace(-10,10,l);
for i=1:l
ff(i)=0;
for j=1:l
ff(i)=ff(i)+(alpha(j)-alpha(j+l)).*exp(-1.*(dot(x(j)-xprime(i),x(j)-xprime(i)))./(p1.^2));
end
ff(i)=ff(i)+threshold;
end
y=sin(xprime+exp(-20.))./(xprime+exp(-20.));
%线性规划结束
%二次规划开始
%二次规划结束
%基于线性规划数值的画图、以及消耗的时间、支持向量德的个数
plot(x,y3,'.');
hold on;
plot(xprime,y,'r')
plot(xprime,ff,'g')
plot(xprime,ff+varepsilon,'b')
plot(xprime,ff-varepsilon,'b')
t=cputime;
fprintf('t =%f',t)
%基于线性规划画图的结束
%基于二次规划数值的作图
%基于二次规划作图的结束
hold on;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -