MATLAB高斯-勒让德积分求解

MATLAB高斯-勒让德积分求解

积分函数

function [ y ] = CalcuFunctionValue( x )
y=exp(-x^2);%积分函数
end

求积分算法函数

function [ result ] = gslrdjf( a,b,n )
if n2
GaussP=[-0.5773503 0.5773503];
GaussA=[1 1];
end
if n
3
GaussP=[-0.7745966 0 0.7745966];
GaussA=[0.5555556 0.888888889 0.5555556];
end
if n4
GaussP=[-0.8611363 -0.3399810 0.3399810 0.8611363];
GaussA=[0.3478548 0.65214515 0.65214515 0.3478548];
end
if n
5
GaussP=[-0.9061798 -0.5384593 0 0.5384593 0.9061798];
GaussA=[0.2369268 0.47862867 0.56888889 0.47862867 0.2369268];
end
A=(b-a)/2;
B=(b+a)/2;
result=0.0;
for i=1:n
result=result+GaussA(1,i)CalcuFunctionValue(AGaussP(1,i)+B);
end
result=A*result;
end

调用语句

clear all
close all
clc

a=0;%函数求积分的区间下限
b=1;%函数求积分的区间上限
h=(b-a)/4;%函数区间分份
A=0;
for i=1:4
A=A+gslrdjf( a+(i-1)h,a+ih ,2 );
end
A
A=0;
for i=1:4
A=A+gslrdjf( a+(i-1)h,a+ih ,3 );
end
A
A=0;
for i=1:4
A=A+gslrdjf( a+(i-1)h,a+ih ,4 );
end
A
A=0;
for i=1:4
A=A+gslrdjf( a+(i-1)h,a+ih ,5 );
end
A

运行截图

MATLAB高斯-勒让德积分求解