📄 lploo.asv
字号:
function lploo(C)
varepsilon=0.01;
l=10;
x=linspace(-10,10,l)
xi=randn(1,l);
number=length(x'*x);
xi3=0.1.*xi;
y3=sin(x+exp(-20.))./(x+exp(-20.))+xi3;
sum=[];
% sigma=[0.1:0.2:2,2:1:10,100,200];
% C=[0.1:0.2:2,2:30:150,200,300];
% C=[1,2]
sigma=[1,2,3]
% nC=length(C)
nsigma=length(sigma);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%参 数 选 择
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for kk=1:nsigma
p1=sigma(kk);
loosum=0;
for loo=1:number
xloo=[x(1:(loo-1)),x((loo+1):number)];
yloo=[y3(1:(loo-1)),y3((loo+1):number)];
l=number-1;
Q=rbfker(xloo',p1,0)
% yueshu 1
E=-1.*eye(l);
for i=1:l
B1(i,:)=[Q(:,i);-1.*Q(:,i);E(:,i)]';
end
%yueshu 2
for i=1:l
B2(i,:)=[-1.*Q(:,i);Q(:,i);E(:,i)]';
end
EE=eye(2.*l);
b=[yloo';-1.*yloo']+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);zeros(2.*l,1)];
lb=zeros(5*l,1);
[alpha,fval]=linprog(f,[],[],A,b,lb);
floo=0.;
for j=1:l
floo=floo+(alpha(j)-alpha(j+l)).*exp(-1.*(dot(x(j)-x(loo),x(j)-x(loo)))./(p1.^2));
end
loosum=loosum+abs(floo-y3(loo));
end
sum(kk)=loosum;
end
sumback=sum;
for i=1:(nsigma-1)
if sum(i+1)>x(i) tidai=sum(i+1);sum(i+1)=sum(i);sum(i)=tidai;
jihao=i;
else jihao=i+1;
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%% 选 择 完 毕
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
p1=sigma(jihao),
l=number;
Q=rbfker(x',p1,0)
% yueshu 1
E=-1.*eye(l);
for i=1:l
B11(i,:)=[Q(:,i);-1.*Q(:,i);E(:,i)]';
end
%yueshu 2
for i=1:l
B22(i,:)=[-1.*Q(:,i);Q(:,i);E(:,i)]';
end
EE=eye(2.*l);
b=[y3';-1.*y3']+varepsilon;
AA=[B11;B22];
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);zeros(2.*l,1)];
lb=zeros(5*l,1);
[alpha,fval]=linprog(f,[],[],A,b,lb);
fprintf('fval =%f',fval);
xprime=linspace(-10,10,100);
for i=1:100
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
end
y=sin(xprime+exp(-20.))./(xprime+exp(-20.));
plot(x,y3,'.');
hold on;
plot(xprime,y,'r')
plot(xprime,ff,'g')
hold on;
for i=1:nsigma
fprintf('%f ',sumback);
fprintf('optimal sigma = %f ',sigma(jihao) );
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -