数值分析

分别取不同n值利用Gauss-legendre求积公式计算积分:
∫−4411+x2dx\int_{-4}^{4}\frac{1}{1+x^{2}}dx441+x21dx
以下为MATLAB验证:

function [f1,I] = GaussInt(f,a,b,n)
%该函数利用Gauss-Lagendre求积公式计算积分
%依次输入函数,左右区间端点,和结点个数进行计算高斯积分
syms t
syms x
f1=subs(f,symvar(f),(b+a)/2+(b-a)*t/2)*(b-a)/2;

switch n %分别代表不同结点个数时的Gauss积分
    case 1
    I=eval(2*subs(f1,symvar(f1),0));
    case 2
    I=eval(subs(f1,symvar(f1),0.5773503))+...
      eval(subs(f1,symvar(f1),-0.5773503));
    case 3
    I=0.5555555555*eval(subs(f1,symvar(f1),0.7745966692))+...
      0.5555555555*eval(subs(f1,symvar(f1),-0.7745966692))+...
      0.8888888888*eval(subs(f1,symvar(f1),0));
    case 4
    I=0.3478548451*eval(subs(f1,symvar(f1),0.8611363116))+...
      0.3478548451*eval(subs(f1,symvar(f1),-0.8611363116))+...
      0.6521451549*eval(subs(f1,symvar(f1),0.3399810436))+...
      0.6521451549*eval(subs(f1,symvar(f1),-0.3399810436));
    case 5
     I=0.2369268851*eval(subs(f1,symvar(f1),0.9061798459))+...
      0.2369268851*eval(subs(f1,symvar(f1),-0.9061798459))+...
      0.4786286705*eval(subs(f1,symvar(f1),0.5384693101))+...
      0.4786286705*eval(subs(f1,symvar(f1),-0.5384693101))+...
      0.568888889*eval(subs(f1,symvar(f1),0));
end



results
在这里插入图片描述

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐