计算方法上机实验报告-MATLAB 下载本文

内容发布更新时间 : 2024/5/22 10:05:50星期一 下面是文章的全部内容请认真阅读。

六、题目

例5.7试构造Gauss型求积公式

1??1f(x)dx?A0f(x0)?A1f(x1)?A2f(x2)

并由此计算积分

t?0(1?t)2dt

1原理:

在积分区间?a,b?上选取若干节点,依次构造一个逼近被积函数的插值多项式P,进而获得数值求积公式 ()(fx)Nx?f?x?dx??ababNbbaPN?x?dx.

对于积分?f?x?dx我们考虑用Lagrange插值,得到

?f?x?dx??Af?x??R?f?

annNn?0N?N?1?x?其中An??dx,?N?1?x????x?xi?

ax?x???n?N?1?xn?i?0b余项为

R(=?RN?f,x?dx, Nf)abf?????RN?f,x?=?N?1?x?,???a,b?

?N?1?!N?1?若MN?1?maxfx??a,b?N?1?有如下估计式 ?x? ,则余项R(Nf)MN?1bR(??N?1?x?dx Nf)?a?N?1?!16

fx)?xi?i?0,1,2,又若一个求积公式对(,m?能精确成立,但

fx)?xm?1不精确成立,则称该公式具有m次代数精度.具有是对于(2N?1次代数精度的插值型求积公式?f?x?dx??Anf?xn?,称为

an?0bNGauss型求积分公式,其节点?xi?i?0 称为Gauss点.

不失一般性,我们假设公式?f?x?dx??Anf?xn?的积分限为

an?0bNNa??1,b?1,而对于一般情形进行积分变换

2?a?b?x??t??,

b?a?2?那么使得其积分为

?bab?a1?b?aa?b?f?t?dt?fx???dx . ??122??2Gauss型求积公式需要找到Gauss点,为此,我们引入了

Legendre(勒让德)多项式,一个仅以区间[?1,1]上的Gauss点?xi?i?0为零点的N?1 次多项式称为Legendre多项式.

n2??dx?1??1???,n?0,1,2,Pn(x)?n??n2?n!dxnN

程序:

function y=f(x)%定义原函数

y=sqrt(x)/(1+x)^2; end

function P=legendre(n)% n次legendre多项式 syms x;

P=1/(2^n*prod(1:n))*diff((x^2-1)^n,n); end

17

function gauss_quadrature(n,a,b)%确定n次legendre多项式,以及积分区间[a,b] syms x; %求高斯点%

x0=solve(legendre(n),x);%调用legendre函数并求零点 %求高斯系数% for i=1:n p=1.0; for j=1:n if j~=i

p=p*(x-x0(j))/(x0(i)-x0(j)); end end

A(i)=int(p,x,-1,1); end

%积分上下限变换%

t=((b-a)/2)*x+(a+b)/2; for i=1:n

c(i)=(b-a)/2*A(i)*subs(f(t),x,x0(i));%调用f函数 end

% 结果输出%

fprintf(' f(x)=%s在[%g,%g]区间上的积分为 %e\\n',f(x),a,b,sum(c)); end

结果:

18