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

📄 richextr.m

📁 用matlab写的一些数值算法
💻 M
字号:
function  [y, info, R] = richextr(F,h0,q,p,tol)
% Richardson extrapolation of values given by 
%   F(h), h = h0, h0/q, h0/q^2, ...
% Assume that  F(h) = F(0) + a1*h^p(1) + ... + am*h^p(m) ,
% where  m = length(p) .
% Stop when two adjacent values in the same column differ 
% less than  tol .  
% info = [estimated error, row number, column number]

% Version 11.12.2003.  INCBOX

% Initialize the scheme
m = length(p);  R = zeros(m+2,m+1);
info = [inf  0  0];                          % best so far
h = h0;  R(1,1) = feval(F,h);
for  i = 1 : m+1
  h = h/q;   R(i+1,1) = feval(F,h);
  for  k = 1 : min(i,m)   
    d = R(i+1,k) - R(i,k);    
    if  abs(d) <= tol          % desired accuracy obtained
      y = R(i+1,k);  
      info = [abs(d)  i+1  k];
      if  nargout > 2            % return active part of R
        R = R(1:i+1,1:i);
      end
      return
    end
    if  abs(d) < info(1)              % update best so far
      info = [abs(d)  i+1  k];
    end
    R(i+1,k+1) = R(i+1,k) + d/(q^p(k) - 1);  % extrapolate
  end
end
% Required accuracy not obtained.  Return best estimate
y = R(info(2),info(3));

⌨️ 快捷键说明

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