大家帮忙看看,由函数的图形可知,y=20时,应该对应了多个根,但是我用vpasolve函数仅求出一个根。程序如下: close all clc,clear; x=0:0.1:35; y=x+10*sin(x); figure(1) plot(x,y,'k') hold on %% 采样 x1=0:1:35; y1=x1+10*sin(x1); scatter(x1,y1,'r^') %% 高斯核函数 lambda=1e-5; theta1=1; theta2=1; for ii=1:1:length(x1) for jj=1:1:length(x1) K(ii,jj)=theta1*exp(-(abs(x1(ii)-x1(jj)))^2/theta2); end end I=eye(length(x1)); v=inv((K+lambda*I))*y1'; xnew=0:0.1:35; for ii=1:1:length(x1) for jj=1:1:length(xnew) k_xnew(ii,jj)=theta1*exp(-(abs(x1(ii)-xnew(jj)))^2/theta2); end end ynew=v.'* k_xnew; plot(xnew,ynew,'b--') %% 求y=20时,对应的x syms X for ii=1:1:length(x1) kk_xnew(ii,1)=theta1*exp(-(abs(x1(ii)-X))^2/theta2); end Y=v.'* kk_xnew; Xopt=vpasolve(Y-20,X); xopt=eval(Xopt); |
5 条回复