Skip to content

11.4.5 解第二类沃尔泰拉积分方程的数值方法

问题是对区间 I=[a,b] 中的 x 求积分方程

(11.65)φ(x)=f(x)+axK(x,y)φ(y)dy

的解. 数值方法的目的是用一个求积公式来逼近积分:

(11.66a)axK(x,y)φ(y)dyQ[a,x](K(x,)φ()).

积分区间和求积公式都依赖于 x . 这个事实被 Q[a,x]() 的下标所强调. 用下述方程作为 (11.65) 的逼近:

(11.66b)φ¯(x)=f(x)+Q[a,x](K(x,)φ¯()).

函数 φ¯(x) 是 (11.65) 解的一个近似. 求积公式中插值节点的数目和安排依赖于 x ,因而不允许有过多的选择. 如果 ξQ[a,x](K(x,)φ¯()) 的一个插值节点,则 (K(x,ξ)φ¯(ξ)) ,特别是 φ¯(ξ) 必须是已知的. 为此目的,(11.66b) 的右端首先应该对 x=ξ 求值,这等价于在区间 [a,ξ] 上的求积. 因而,不可能利用流行的高斯求积公式.

问题是通过选取插值节点 a=x0<x1<<xk< ,并用有这些插值节点 x0,x1,,xn 的一个求积公式 Q[a,xn] . 在插值节点处的函数值用简约记号 φk=φ¯(xk)(k=0,1,2,) 来表示. 对于 φ0 ,有 (参见第 834 页 11.3.1)

(11.66c)φ0=f(x0)=f(a),

利用此, 即有

(11.66d)φ1=f(x1)+Q[a,x1](K(x1,)φ¯()).

Q[a,x1] 有插值节点 x0x1 ,因而对于适当的系数 w0w1 ,它有形式

(11.66e)Q[a,x1](K(x1,)φ¯())=w0K(x1,x0)φ0+w1K(x1,x1)φ1.

继续这个过程, 从一般的关系式

(11.66f)φk=f(xk)+Q[a,xk](K(xk,)φ¯()),k=1,2,3,,

即逐次确定了 φk 的值. 求积公式有下述形式:

(11.66g)Q[a,xk](K(xk,)φ¯())=j=0kwjkK(xk,xj)φj.

因而(11.66f)有形式:

(11.66h)φk=f(xk)+j=0kwjkK(xk,xj)φj.

最简单的求积公式是左矩形公式 (left-handed rectangular formula)(参见第 1253 页 19.3.2.1). 对于这个公式, 其系数是

(11.66i)wjk=xj+1xj,j<k, 并且 wkk=0.

由此得到方程组

φ0=f(a),(11.67a)φ1=f(x1)+(x1x0)K(x1,x0)φ0,φ2=f(x2)+(x1x0)K(x2,x0)φ0+(x2x1)K(x2,x1)φ1,

更一般地, 有

(11.67b)φk=f(xk)+j=0k1(xj+1xj)K(xk,xj)φj.

可以利用梯形公式 (trapezoidal formula)(参见第 1253 页 19.3.2.2) 得到积分的更精确的逼近. 为了做得简单些,选取等距的插值节点 xk=a+kh,k=0,1,2, :

(11.67c)abg(x)dxh2[g(x0)+2j=1k1g(xj)+g(xk)].

用它来逼近(11.66f),得到

(11.67d)φ0=f(a),(11.67e)φk=f(xk)+h2[K(xk,x0)φ0+K(xk,xk)φk+2j=1k1K(xk,xj)φj].

虽然未知值也出现在方程的右端, 但它们是容易被表达的.

注 利用以前的方法也可以逼近非线性积分方程的解. 利用梯形公式确定 φk 的值,必须解一个非线性方程. 为了回避它,可以在区间 [a,xk1] 上用梯形公式,而在区间 [xk1,xk] 上用矩形公式. 如果 h 足够小,那么这个求积误差对于解没有显著的影响.

问题是用矩形公式(11.66f)解积分方程 φ(x)=2+0x(xy)φ(y)dy . 插值节点是等距点 xk=k0.1 ,因而 h=0.1 .

φ0=2φ1=f(x1)+hK(x1,x0)φ0=2+0.10.12=2.02,φ2=f(x2)+h(K(x2,x0)φ0+K(x2,x1)φ1)=2+0.1(0.22+0.12.02)=2.0602,

等等.

x

精确值

矩形公式

梯形公式

0.2

2.0401

2.0602

2.0401

0.4

2.1621

2.2030

2.1620

0.6

2.3709

2.4342

2.3706

0.8

2.6749

2.7629

2.6743

1.0

3.0862

3.2025

3.0852

在上表中给出了精确解的值, 也分别给出了用矩形公式和梯形公式计算所得的近似值,所以可以比较这些方法的精度. 所用的步长为 h=0.1 .

version 1.24.0