⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 simpadpt.m

📁 various matlab programs to slove various problems
💻 M
字号:
function [integ,xfv,nfv]=simpadpt(a,b,tol,fun,hmin);integ=0; level=0; i=1; alfa(i)=a; beta(i)=b; step=(beta(i)-alfa(i))/4; nfv=0;for k=1:5, x=a+(k-1)*step; f(i,k)=eval(fun); nfv=nfv+1; endwhile (i > 0), S=0;  S2=0; h=(beta(i)-alfa(i))/2; S=(h/3)*(f(i,1)+4*f(i,3)+f(i,5));  h=h/2; S2=(h/3)*(f(i,1)+4*f(i,2)+f(i,3));  S2=S2+(h/3)*(f(i,3)+4*f(i,4)+f(i,5)); tolrv=tol*(beta(i)-alfa(i))/(b-a); errrv=abs(S-S2)/10; if (errrv > tolrv)  i=i+1; alfa(i)=alfa(i-1); beta(i)=(alfa(i-1)+beta(i-1))/2;  f(i,1)=f(i-1,1);f(i,3)=f(i-1,2);f(i,5)=f(i-1,3);len=abs(beta(i)-alfa(i));  if (len >= hmin),   if (len <= 11*hmin)    disp(' Steplength close to hmin  '),     str=sprintf('The approximate integral is %12.7e',integ);disp(str),end;     step=len/4; x=alfa(i)+step; f(i,2)=eval(fun);     nfv=nfv+1; x=beta(i)-step; f(i,4)=eval(fun); nfv=nfv+1;   else, xfv=xfv'; disp(' Too small steplength   ')    str=sprintf('The approximate integral is %12.7e',integ);    disp(str), return   end, else      integ=integ+S2; level=level+1; if (level==1),  for k=1:5, xfv(k)=alfa(i)+(k-1)*h; end; ist=5; else, for k=1:4, xfv(ist+k)=alfa(i)+k*h; end; ist=ist+4; end;     if (beta(i)==b), xfv=xfv';   str=sprintf('The approximate integral is %12.7e',integ);   disp(str), return, end; i=i-1; alfa(i)=beta(i+1);   f(i,1)=f(i+1,5); f(i,3)=f(i,4); step=abs(beta(i)-alfa(i))/4;   x=alfa(i)+step; f(i,2)=eval(fun); nfv=nfv+1; x=beta(i)-step;   f(i,4)=eval(fun); nfv=nfv+1; endend            

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -