Matlab
% ----------------------------------------------------------------------------------------------- % Written by QQ742971636 % ----------------------------------------------------------------------------------------------- % f(x)=(10/x)^2*sin(10/x); % 10个子区间 每个子区间n=4 复合高斯勒让德求积分 % ------------------------------------------------------------------------------------------------ XX=[-0.9061798459,-0.5384693101,0,0.5384693101,0.9061798459]; %查表得到的取点 AA=[0.2369268851,0.4786286705,0.5688888889,0.4786286705,0.2369268851];%查表得到的系数 x=linspace(1,3,11); %取10个子区间 也就是11个x坐标点 integral_zi=zeros(1,10); %记录每个子区间的积分结果 for cycles=1:10 %计算10个子区间积分 a=x(cycles); %每个子区间的左端点 b=x(cycles+1);%每个子区间的右端点 S=0; %结果暂时存 for k=1:5 %迭代算高斯勒让德公式的每一项 tt=(b-a)/2*XX(k)+(a+b)/2; %变换积分区间为-1为1 S=S+AA(k)*(10/tt)^2*sin(10/tt); %算出-1到1上的高斯勒让德积分 end integral_zi(cycles)=(b-a)/2*S; %补上系数(b-a)/2 得到子区间积分结果 end integral=sum(integral_zi); %10个子区间的积分结果相加 fprintf("积分结果是 %f\r\n",integral); %打印积分结果
结果
积分结果是 -1.426025
本文作者:Dong
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!