• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

基于Matlab实现多次最佳一致的函数逼近(类似求渐进函数)

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
%%%做系统识别很重要,方法上完全符合系统识别最基础的理论

function [sun]=main(n) fplot('1/(x+2)',[-1,1],'r'); x=ones(n+2,1); for j=0:n+1 x(j+1)=cos(pi*(n+1-j)/(n+1)); end first=ones(n+2,1); f=1./(x+2); %原函数 last=first; for j=2:n+2 last(j)=(-1)*last(j-1); end A=ones(n+2,n+2); A(:,1)=first; A(:,n+2)=last; for j=2:n+1 for t=2:j A(:,j)=x.*A(:,j); end end e=(1e-15)*first; %精度控制条件 sun=A\f; while (1) at=''; for i=1:n for t=1:i if (t==1) at=strcat('(',num2str(sun(t+1)),')'); elseif (t>1) xt='t';j=2; while j<t xt=strcat('t*',xt);j=j+1; end at=strcat(num2str(t),'*(',num2str(sun(t+1)),')*',xt,'+',at); end end end %以下得到逼近函数 ap1=sun(1:n+1,[1]); for i=1:n+1 ap(i)=ap1(n+2-i); end yt=strcat('-1/(t+2)^2=',at); [y]=solve(yt,'t'); y=numeric(y); %以下得到一组新的交错点组 for i=1:n+1 if y(i) < 1 & y(i)>-1 for j=2:n+2 if y(i)<x(j)&y(i)>x(j-1) if (1/(x(j-1)+2)-polyval(ap,x(j-1)))*(1/(y(i)+2)-polyval(ap,y(i)))> 0 x(j-1)=y(i); elseif (1/(x(j-1)+2)-polyval(ap,x(j-1)))*(1/(y(i)+2)-polyval(ap,y(i)))< 0 x(j)=y(i); end end end end end A=ones(n+2,n+2); A(:,1)=first; A(:,n+2)=last; for j=2:n+1 for t=2:j A(:,j)=x.*A(:,j); end end f=1./(x+2); sun1=A\f; if(abs(sun1-sun)<e) break; end sun=sun1; end hold on; funcion=poly2sym(ap); ezplot(funcion,[-1,1]); num=num2str(n); legend('原函数曲线',strcat(num,'次逼近函数曲线')); title('最佳逼近比较示意图'); xlabel('x的取值'); ylabel('f(x)的取值'); grid on; end

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
提高Delphi的编译速度(bpl和bcp)发布时间:2022-07-18
下一篇:
DELPHI美化界面发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap