Skip to content

11.2.4 第二类弗雷德霍姆积分方程的数值解法

对于一个第二类弗雷德霍姆积分方程

(11.23)φ(x)=f(x)+λabK(x,y)φ(y)dy,

为了获得其精确解, 用第 817 页的 11.2.1, 第 821 页的 11.2.2, 以及用第 823 页的 11.2.3 中给出的解法, 经常是不可能的, 或者要做太多的工作. 在一些这样的情形中, 为了近似可以用某些数值方法. 下面给出 3 种不同的方法来得到形如 (11.23) 积分方程的数值解.

11.2.4.1 积分的近似

1. 半离散问题

在研究积分方程 (11.23) 时, 经常用一个近似公式来代替其中的积分. 这些近似公式被称为求积公式(quadrature formulas). 它们有形式

(11.24)abf(x)dxQ[a,b](f)=k=1nωkf(xk),

即,代替积分,现在用被积函数在插值节点 xk 处赋以权值 ωk 的代换值之和. 诸数 ωk 要被适当地选取 (以便与 f 无关). 用近似形式,方程 (11.23) 可以被写成

(11.25a)φ(x)f(x)+λQ[a,b](K(x,)φ())=f(x)+λk=1nωkK(x,yk)φ(yk).

求积公式 Q[a,b](K(x,)φ()) 还依赖于变量 x . 在函数变量位置上的点意味着求积公式是关于变量 y 所用的. 定义关系式

(11.25b)φ¯(x)=f(x)+λk=1nωkK(x,yk)φ¯(yk).

φ¯(x) 是精确解 φ(x) 的一个近似. 把 (11.25b) 视为一个半离散问题(semi-discrete problem),因为变量 y 被转为离散值,而变量 x 仍可为任意的.

如果方程 (11.25b) 对一个函数 φ¯(x) 在每个点 x[a,b] 处成立,那么它必定在每个插值节点 x=xk 处成立:

(11.25c)φ¯(xk)=f(xk)+λj=1nωjK(xk,yj)φ¯(yj),k=1,2,,n.

这是一个关于 n 个未知值 φ¯(xk)n 个方程的一个线性方程组. 把这些解代入(11.25b), 产生了半离散问题的解. 这个方法的精度和计算量依赖于所用的求积公式. 例如,用左矩形公式(参见第 1253 页 19.3.2.1) 以及等距划分 yk=xk= a+h(k1),h=(ba)/n(k=1,,n) ,产生

(11.26a)abK(x,y)φ¯(y)dyk=1nhK(x,yk)φ¯(yk).

利用记号

(11.26b)Kjk=K(xj,yk),fk=f(xk),φk=φ¯(xk),

方程组(11.25c)有形式:

(1λhK11)φ1λhK12φ2λhK1nφn=f1,(11.26c)λhK21φ1+(1λhK22)φ2λhK2nφn=f2,λhKn1φ1λhKn2φ2+(1λhKnn)φn=fn.

相同的方程组被包含在弗雷德霍姆解法 (参见第 823 页 11.2.3) 中. 因为矩形公式并非足够精确, 因此为了更好地近似积分, 可以增加插值节点的数目, 但随之而来的是方程组维数的增加. 因而要寻找另外的求积公式.

2. 尼斯特伦法

在所谓的尼斯特伦法(Nyström method) 中, 高斯求积公式被用于求积分的近似 (参见第 1254 页 19.3.3,3.). 为了推导它, 考虑积分

(11.27a)I=abf(x)dx.

用一个多项式 p(x) ,即 f(x) 在插值节点 xk 处的插值多项式来代替被积函数:

p(x)=k=1nLk(x)f(xk),

其中

(11.27b)Lk(x)=(xx1)(xxk1)(xxk+1)(xxn)(xkx1)(xkxk1)(xkxk+1)(xkxn).

对于这个多项式, 有

(11.27c)p(xk)=f(xk),k=1,,n.

p(x) 代替被积函数 f(x) 导致求积公式

(11.27d)abf(x)dxabp(x)dx=k=1nf(xk)abLk(x)dx=k=1nωkf(xk),

其中 ωk=abLk(x)dx . 对于高斯求积公式,不能任意选取插值节点,它们必须用

公式

(11.28a)xk=a+b2+ba2tk,k=1,2,,n

来选取. 这 ntk 值是第一类勒让德多项式 (参见第 748 页 9.1.2.6,3.)

(11.28b)Pn(t)=12nn!dn[(t21)n]dtn

n 个根. 这些根都在区间 [1,+1] 中. 由代换 xxk=ba2(ttk) 可以计算诸系数 ωk ,因而:

ωk=abLk(x)dx=(ba)1211(tt1)(ttk1)(ttk+1)(ttn)(tkt1)(tktk1)(tktk+1)(tktn)dt(11.29)=(ba)Ak.

在表 11.1 中给出了第一类勒让德多项式的根和 n=1,,6 的诸权值 Ak .

用尼斯特伦法对于 n=3 解积分方程 φ(x)=cosπx+xx2+π2(ex+1)+01exyφ(y)dy

n=3:x1=0.1127,x2=0.5,x3=0.8873,A1=0.2778,A2=0.4444,A3=0.2778,f1=0.96214,f2=0.13087,f3=0.65251,K11=1.01278,K22=1.28403,

K33=2.19746,

K12=K21=1.05797,K13=K31=1.10517,

K23=K32=1.55838.对于 φ1,φ2φ3 的方程组(11.25c)是

0.71864φ10.47016φ20.30702φ3=0.96214,0.29390φ1+0.42938φ20.43292φ3=0.13087,0.30702φ10.69254φ2+0.38955φ3=0.65251.

n

t

A

n

t

A

1

t1=0

A1=1

5

t1=0.9062

A1=0.1185

2

t1=0.5774

A1=0.5

t2=0.5384

A2=0.2393

t2=0.5774

A2=0.5

t3=0

A3=0.2844

3

t1=0.7746

A1=0.2778

t4=0.5384

A4=0.2393

t2=0

A2=0.4444

t5=0.9062

A5=0.1185

t3=0.7746

A3=0.2778

6

t1=0.9324

A1=0.0857

4

t1=0.8612

A1=0.1739

t2=0.6612

A2=0.1804

t2=0.3400

A2=0.3261

t3=0.2386

A3=0.2340

t3=0.3400

A3=0.3261

t4=0.2386

A4=0.2340

t4=0.8612

A4=0.1739

t5=0.6612

A5=0.1804

t6=0.9324

A6=0.0857

这方程组的解是 φ1=0.93651,φ2=0.00144,φ3=0.93950 . 精确解在插值节点处的代换值是: φ(x1)=0.93797,φ(x2)=0,φ(x3)=0.93797 .

11.2.4.2 核近似

用一个核 K¯(x,y) 代替核 K(x,y) ,使得对于 axb,aybK¯(x,y) K(x,y) . 试图选取一个核,使得最容易获得积分方程

(11.30)φ¯(x)=f(x)+λabK¯(x,y)φ¯(y)dy

的解.

1. 张量积近似

经常用到的核的近似是形如

(11.31a)K(x,y)K¯(x,y)=j=0nk=0ndjkαj(x)βk(y)

的张量积近似(tensor product approximation),其中 α0(x),,αn(x)β0(y) , ,βn(y) 是给定的线性无关的函数,它们的系数 djk 必须选取得使二重和在某种意义下充分地逼近核. 用一个退化核重写 (11.31a)T :

(11.31b)K¯(x,y)=j=0nαj(x)[k=0ndjkβk(y)],δj(y)=k=0ndjkβk(y),K¯(x,y)=j=0nαj(x)δj(y).

现在, 可以把第 817 页 11.2.1 的解法用于积分方程

(11.31c)φ¯(x)=f(x)+λab[j=0nαj(x)δj(y)]φ¯(y)dy.

应该选取诸函数 α0(x),,αn(x)β0(y),,βn(y) ,使得可以容易地计算 (11.31a) 中的系数 djk ,并且也使得计算 (11.31c) 的解不太困难.


① 原文把 (11.31b) 后两等式连在一起了: δj(y)=k=0ndjkβk(y)K¯(x,y)= j=0nαj(x)δj(y) . 一译者注


2. 特殊样条函数法

为了在积分区间 [a,b]=[0,1] 上逼近一个特殊核,选取

(11.32)αk(x)=βk(x)={1n|xkn|,k1nxk+1n,0, 其他情形. 

函数 αk(x) 仅在所谓的承载区间(carrier interval) (k1n,k+1n) 上有非零值 (图 11.1).

0193686a-f46c-7301-ad92-9f1def8f454e_15_631_839_377_240_0.jpg

为了计算 (11.31a) 中的系数 djk ,在点 x=l/n,y=i/n(l,i=0,1,,n) 处考虑 K¯(x,y) . 则成立

(11.33)αj(ln)αk(in)={1,j=l,k=i,0, 其他情形,

所以 K¯(l/n,i/n)=dli . 因而有代换 dli=K¯(ln,in)=K(ln,in) . 现在 (11.31a) 有形式

(11.34)K¯(x,y)=j=0nk=0nK(jn,kn)αj(x)βk(y).

如所知道的, (11.31c) 的解有形式

(11.35)φ¯(x)=f(x)+A0α0(x)++Anαn(x).

表达式 A0α0(x)++Anαn(x) 是一个分段线性函数,它在点 xk=k/n 处取替换值 Ak . 用对于退化核给出的方法解 (11.31c),得到关于数 A0,,An 的一个线性方程组:

(1λc00)A0λc01A1λc0nAn=b0,(11.36a)λc10A0+(1λc11)A1λc1nAn=b1,

......

λcn0A0λcn1A1+(1λcnn)An=bn.

其中

cjk=01δj(x)αk(x)dx=01[i=0nK(jn,in)αj(x)]αk(x)dx=K(jn,0n)01α0(x)αk(x)dx(11.36b)++K(jn,nn)01αn(x)αk(x)dx.

对于这些积分, 有

(11.36c)Ijk=01αj(x)αk(x)dx={13n,j=0,k=0 和 j=n,k=n,23n,j=k,1jn,16n,j=k+1,j=k1,0, 其他情形. 

(11.36a) 中的数 bk

(11.36d)bk=01f(x)[j=0nK(kn,jn)αj(x)]dx

给出. 分别用 (11.36a) 中的数 cjk 组成矩阵 C ,用值 K(j/n,k/n) 组成矩阵 B ,用值 Ijk 组成矩阵 A ,数 b0,,bn 组成向量 b ,数 A0,,An 组成向量 a ,则方程组 (11.36a) 有形式

(11.36e)(IλC)a=(IλBA)a=b.

在此情形,若矩阵 (IλBA) 是正规的时,这个方程组有一个唯一解 a=(A0,,An) .

11.2.4.3 配置法

假设在区间 [a,b]n 个函数 φ1(x),,φn(x) 是线性无关的. 它们可以被用来构成解 φ(x) 的一个近似函数 φ¯(x) :

(11.37a)φ(x)φ¯(x)=a1φ1(x)+a2φ2(x)++anφn(x).

现在的问题是确定系数 a1,,an . 通常,不存在 a1,,an ,使得以这种形式给出的函数 φ¯(x) 表示积分方程 (11.23) 的精确解 φ(x)=φ¯(x) . 因而,在积分区间中界定 n 个插值点 x1,,xn ,使得近似函数 (11.37a) 至少在这些点上满足积分方程:

(11.37b)φ¯(xk)=a1φ1(xk)++anφn(xk)=f(xk)+λabK(xk,y)[a1φ1(y)++anφn(y)]dy(k=1,,n).(11.37c)

在一些变换下, 这个方程组取下述形式:

[φ1(xk)λabK(xk,y)φ1(y)dy]a1++[φn(xk)λabK(xk,y)φn(y)dy]an(11.37d)=f(xk)(k=1,,n).

定义矩阵

(11.37e)A=(φ1(x1)φn(x1)φ1(xn)φn(xn)),B=(β11β1nβn1βnn),

其中 βjk=abK(xj,y)φk(y)dy ,并定义向量

(11.37f)a=(a1,,an)T,b=(f(x1),,f(xn))T,

则确定数 a1,,an 的方程组可以被写成矩阵形式:

(11.37g)(AλB)a=b.

φ(x)=x2+01xyφ(y)dy . 近似函数为 φ¯(x)=a1x2+a2x+a3,φ1(x)= x2,φ2(x)=x,φ3(x)=1 . 插值节点为 x1=0,x2=0.5,x3=1 .

A=(00114121111),B=(000272523272523),b=(01221212).

方程组为

a3=0,(1427)a1+(1225)a2+(123)a3=122,57a1+35a2+13a3=12

它的解为 a1=0.8197,a2=1.8092,a3=0 ,因此由这些值得 φ¯(x)=0.8197x2+ 1.8092x ,因而 φ¯(0)=0,φ¯(0.5)=0.6997,φ¯(1)=0.9895 .

积分方程的精确解是 φ(x)=x ,因而 φ(0)=0,φ(0.5)=0.7070,φ(1)=1 .

为了改进此例中的精度, 增加多项式的次数并非一个好主意, 因为较高次的多项式在数值上是不稳定的. 利用不同的样条函数要好得多, 例如, 一个分段线性逼近 φ¯(x)=a1φ1(x)+a2φ2(x)++anφn(x) ,这里的函数是在 11.2.4.2 节中引进

的:

φk(x)={1n|xkn|,k1nxk+1n,0, 其他情形. 

在这个情形,解 φ(x) 被一个折线函数 φ¯(x) 所近似.

注 就配置法插值节点的选取而论, 并不存在理论约束. 然而在此情形, 如果解函数在某个子区间中极为振荡时, 必须在这个区间中增加插值节点的数目.

version 1.24.0