资源简介

高斯-拉盖尔积分(Gauss-laguerre积分)matlab程序 可直接在函数名前设置输出为 [x,w]= 其中x为积分点,w为权重

资源截图

代码片段和文件信息

function laguerre_rule ( order a b filename )

%*****************************************************************************80
% 可直接在函数名前设置输出为  [xw]=  其中x为积分点,w为权重,此处为求积分,因此w之和可能不为1。
%% LAGUERRE_RULE generates a Gauss-Laguerre rule.
%
%  Discussion:
%
%    This program computes a standard or exponentially weighted 
%    Gauss-Laguerre quadrature rule and writes it to a file.
%
%    The user specifies:
%    * the ORDER (number of points) in the rule;
%    * A the left endpoint;
%    * B the scale factor in the exponential;
%    * FILENAME the root name of the output files.
%
%  Licensing:
%
%    This code is distributed under the GNU LGPL license.
%
%  Modified:
%
%    10 February 2014
%
%  Author:
%
%    John Burkardt
%
  timestamp ( );
  fprintf ( 1 ‘\n‘ );
  fprintf ( 1 ‘LAGUERRE_RULE\n‘ );
  fprintf ( 1 ‘  MATLAB version\n‘ );
  fprintf ( 1 ‘\n‘ );
  fprintf ( 1 ‘  Compute a Gauss-Laguerre rule for approximating\n‘ );
  fprintf ( 1 ‘    Integral ( a <= x < +oo ) exp(-b*(x-a)) f(x) dx\n‘ );
  fprintf ( 1 ‘  of order ORDER.\n‘ );
  fprintf ( 1 ‘\n‘ );
  fprintf ( 1 ‘  The user specifies ORDER A B and FILENAME.\n‘ );
  fprintf ( 1 ‘\n‘ );
  fprintf ( 1 ‘  ORDER is the number of points.\n‘ );
  fprintf ( 1 ‘  A is the left endpoint (typically 0).\n‘ );
  fprintf ( 1 ‘  B is the exponential scale factor (typically 1).\n‘ );
  fprintf ( 1 ‘  FILENAME is used to generate 3 files:\n‘ );
  fprintf ( 1 ‘  * filename_w.txt - the weight file\n‘ );
  fprintf ( 1 ‘  * filename_x.txt - the abscissa file.\n‘ );
  fprintf ( 1 ‘  * filename_r.txt - the region file.\n‘ );
%
%  Initialize the parameters.
%
  alpha = 0.0;
  beta = 0.0;
%
%  Get ORDER.
%
  if ( nargin < 1 )
    order = input ( ‘  Enter the rule order ORDER:  ‘ );
  elseif ( ischar ( order ) )
    order = str2num ( order );
  end
%
%  Get A.
%
  if ( nargin < 2 )
    fprintf ( 1 ‘\n‘ );
    fprintf ( 1 ‘  A is the left endpoint typically 0.\n‘ );
    fprintf ( 1 ‘\n‘ );
    a = input ( ‘  Enter the value of A.‘ );
  elseif ( ischar ( a ) )
    a = str2num ( a );
  end
%
%  Get B.
%
  if ( nargin < 3 )
    fprintf ( 1 ‘\n‘ );
    fprintf ( 1 ‘  B is the exponential scale factor typically 1.\n‘ );
    fprintf ( 1 ‘\n‘ );
    b = input ( ‘  Enter the value of B.‘ );
  elseif ( ischar ( b ) )
    b = str2num ( b );
  end
%
%  Get the quadrature file root name:
%
  if ( nargin < 4 )
    fprintf ( 1 ‘\n‘ );
    fprintf ( 1 ‘  FILENAME specifies  the ‘‘root name‘‘ of a set of quadrature files).\n‘ );
    filename = input ( ‘  Enter the value of FILENAME as a quoted string:  ‘ );
  end
%
%  Input summary.
%
  fprintf ( 1 ‘\n‘ );
  fprintf ( 1 ‘  ORDER = %d\n‘ order );
  fprintf ( 1 ‘  A = %f\n‘ a);
  fprintf ( 1 ‘  B = %f\n‘ b );
  fprintf ( 1 ‘  FILENAME = “%s“.\n‘ filename );
%
%  Construct the rule.
%
  kind = 5;
  [ x w ] = cgqf ( order kind alpha beta

评论

共有 条评论