Matlab 数值分析 求高斯勒让德积分
function [ result ] = gslrdjf(f, a,b,n ,GaussP,GaussA)
%-----------------------------------------------------------------------------------
%高斯勒让德积分(gslrdjf.m)
%输入被积分函数式f,积分区域a到b,高斯点GaussP,高斯系数GaussA
%直接输出积分结果
%提醒:超精确的高斯点和高斯系数可由LZ.m子程序单独计算
%提醒:精度要求不高时,可以自己手动输入。GaussP,GaussA均为数组
%使用范例:
% 0.先输入必要参数:
% a=0;%函数求积分的区间下限
% b=pi;
% f=@(x)exp(x)*cos(x);
% n=5;
% [GaussP,GaussA]=LZ(n);
% 1.复化高斯勒让德积分方法,结果可以为精确解
% 例如:
% h=(b-a)/1000; %积分区间划分为1000份,也可以弄成一万份,一亿份。
% A=0; %预先开一个空集
% for i=1:1000 %循环累加这1000份
% A=A+gslrdjf(f, a+(i-1)*h,a+i*h ,5,GaussP, GaussA);
% end
% A %输出精确解结果
% 2.高斯勒让德积分方法,结果虽然不可能是精确解,但是精度也不会差。
% 例如:
% A=gslrdjf(f,a,b,n,GaussP, GaussA)
%---------------------------------------------------------------------------------------
p=GaussP; %获取高斯点数组Xk
q=GaussA; %获取高斯点对应系数Ak
A=(b-a)/2; %积分区间转化为[-1,1]
B=(b+a)/2;
result=0; %预先开一个空集
for i=1:n+1 %循环实现累加
result=result+q(i)*f(A*p(i)+B); %高斯求积公式
end
result=A*result; %补上积分区间转化后应有的系数
end