Gauss-legendre求积公式计算积分
·
数值分析
分别取不同n值利用Gauss-legendre求积公式计算积分:
∫−4411+x2dx\int_{-4}^{4}\frac{1}{1+x^{2}}dx∫−441+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

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