gauss.m

来自「数值分析---部分算法 希望对需要的人有一点点用!」· M 代码 · 共 20 行

M
20
字号
% -------------------------------------------------------------------------
% --------------------------复化高斯积分算法--------------------------------
% 函数  [Gauss2,Gauss3]=Gauss(func,a,b)
% 功能  通过两点&三点的复化高斯积分算法,求出某个积分的结果 
% 输入参数:   a,b   积分区间(a,b)
% 输出参数:Gauss2  两点的复化高斯积分结果
%          Gauss3  三点的复化高斯积分结果   
% >> [Gauss2,Gauss3]=Gauss('sin',0,pi)
% -------------------------------------------------------------------------
function [Gauss2,Gauss3]=Gauss(func,a,b)
n=1000;         %  n 把积分区间(a,b)化为小区的个数,用于复化, 则一个小区间的长度为(b-a)/n,默认为1000
Gauss2=0;
t=(b-a)/n;
for i=1:n
   Gauss2=Gauss2+0.5*t*(feval(func,-0.5*t/sqrt(3)+t*(i-0.5))+feval(func,0.5*t/sqrt(3)+t*(i-0.5)));
end
Gauss3=0;
for i=1:n
Gauss3=Gauss3+0.5*t*(5/9*feval(func,-sqrt(15)*0.5*t/5+t*(i-0.5))+8/9*feval(func,t*(i-0.5))+5/9*feval(func,sqrt(15)*0.5*t/5+t*(i-0.5)));
end

⌨️ 快捷键说明

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