三个有关正交的概念
如果 我们称函数与在区间上正交;一般我们会这么记录:
如果 称函数与在区间上带权正交;
如果有一个"多项式"序列(每一项就表示一个k次多项式),如果这个多项式序列所有元素满足下面的规律:
我们称为在区间上带权的"正交多项式序列";序列中的每一个元素,我们可以叫它"一个正交多项式"!
常用的正交多项式序列
关于正交多项式序列细节的内容不提,偏重它们的性质和使用。总结一句正交多项式序列最重要的性质:2个序号不同多项式,乘积后特定区间积分为0;2个序号相同多项式(就是同一个),乘积后特定区间积分不为0。一般我们常用的正交多项式序列如下,并给出其多项式递推公式:
- 勒让德(Legende)正交多项式序列;
- 切比雪夫(Chebyshev)正交多项式序列;
- 第二类切比雪夫(Chebyshev)正交多项式序列;
- 拉盖尔(Laguerre)正交多项式序列;
- 埃尔米特(Hermite)正交多项式序列;
- 罗巴特(Lobatto)正交多项式序列;
勒让德正交多项式序列
勒让德相邻3项递推公式:
说明:勒让德正交多项式序列中,任意两个元素都是区间上带权正交。
规律:
用matlab编程求每个正交多项式:
clear; clc;
syms x;
P_orig0 = 1;
P_orig1 = x;
P = sym(zeros(1,5)); % 记录前5个多项式
% 勒让德正交多项式序列前5项求取
for n = 1:5
Pn = simplify( x*(2*n+1)/(n+1)*P_orig1 - n/(n+1)*P_orig0 )
P_orig0 = P_orig1;
P_orig1 = Pn;
P(n) = Pn;
end
% 下面是测试任意两个元素是否有正交关系
for m = 1:4
equal = int( P(m)*P(m), x, -1, 1 )
inequal = int( P(m)*P(m+1), x, -1, 1 ) % 随便改, 只要两个不相等
end
切比雪夫正交多项式序列
切比雪夫相邻3项递推公式:
说明:切比雪夫正交多项式序列中,任意两个元素都是区间上带权正交。
规律:
用matlab编程求每个正交多项式:
clear; clc;
syms x;
T_orig0 = 1;
T_orig1 = x;
T = sym(zeros(1,5)); % 记录前5个多项式
% 切比雪夫正交多项式序列前5项求取
for n = 1:5
Tn = simplify( 2*x*T_orig1 - T_orig0 )
T_orig0 = T_orig1;
T_orig1 = Tn;
T(n) = Tn;
end
% 下面是测试任意两个元素是否有正交关系
for m = 1:4
T_equal = T(m)*T(m)/(sqrt(1-x^2));
equal = int( T_equal, x, -1, 1 ) % 都是pi或pi/2
T_inequal = T(m)*T(m+1)/(sqrt(1-x^2));
inequal = int( T_inequal, x, -1, 1 ) % 都是0
end
第二类切比雪夫正交多项式序列
切比雪夫相邻3项递推公式:
说明:第二类切比雪夫正交多项式序列中,任意两个元素都是区间上带权正交。
规律:
用matlab编程求每个正交多项式:
clear; clc;
syms x;
U_orig0 = 1;
U_orig1 = 2*x;
U = sym(zeros(1,5)); % 记录前5个多项式
% 第二类切比雪夫正交多项式序列前5项求取
for n = 1:5
Un = simplify( 2*x*U_orig1 - U_orig0 )
U_orig0 = U_orig1;
U_orig1 = Un;
U(n) = Un;
end
% 下面是测试任意两个元素是否有正交关系
for m = 1:4
U_equal = U(m)*U(m)*sqrt(1-x^2);
equal = int( U_equal, x, -1, 1 ) % 都是pi/2
U_inequal = U(m)*U(m+1)*sqrt(1-x^2);
inequal = int( U_inequal, x, -1, 1 ) % 都是0
end
拉盖尔正交多项式序列
拉盖尔相邻3项递推公式:
说明:拉盖尔正交多项式序列中,任意两个元素都是区间上带权正交。
规律:
用matlab编程求每个正交多项式:
syms x;
L_orig0 = 1;
L_orig1 = 1-x;
L = sym(zeros(1,5)); % 记录前5个多项式
% 拉盖尔正交多项式序列前5项求取
for n = 1:5
Ln = simplify( (2*n+1-x)*L_orig1 - n^2*L_orig0 )
L_orig0 = L_orig1;
L_orig1 = Ln;
L(n) = Ln;
end
% 下面是测试任意两个元素是否有正交关系
for m = 1:4
L_equal = L(m)*L(m)*exp(-x);
equal = int( L_equal, x, 0, +inf ) % (n!)^2
L_inequal = L(m)*L(m+1)*exp(-x);
inequal = int( L_inequal, x, 0, +inf ) % 都是0
end
埃尔米特正交多项式序列
埃尔米特相邻3项递推公式:
说明:埃尔米特正交多项式序列中,任意两个元素都是区间上带权正交。
规律:
用matlab编程求每个正交多项式:
clear; clc;
syms x;
H_orig0 = 1;
H_orig1 = 2*x;
H = sym(zeros(1,5)); % 记录前5个多项式
% 埃尔米特正交多项式序列前5项求取
for n = 1:5
Hn = simplify( 2*x*H_orig1 - 2*n*H_orig0 )
H_orig0 = H_orig1;
H_orig1 = Hn;
H(n) = Hn;
end
% 下面是测试任意两个元素是否有正交关系
for m = 1:4
H_equal = H(m)*H(m)*exp(-x^2);
equal = int( H_equal, x, -inf, +inf ) % 2^n*n!*sqrt(pi)
H_inequal = H(m)*H(m+1)*exp(-x^2);
inequal = int( H_inequal, x, -inf, +inf ) % 都是0
end
罗巴特正交多项式序列
说明:罗巴特正交多项式序列是基于"勒让德多项式序列"推导而来的!所以其很多性质是继承勒让德正交多项式的。罗巴特每一项公式:
说明:
- 罗巴特正交多项式序列中,任意两个元素都是区间上带权正交;
- 罗巴特正交多项式第0项为:。该项就不在程序中显示了。
规律:
用matlab编程求每个正交多项式:借用勒让德的各个多项式
clear; clc;
syms x;
P_orig0 = 1;
P_orig1 = x; % 勒让德的前两项
L = sym(zeros(1,5)); % 记录前罗巴特正交多项式
for n = 1:5
Pn = simplify( x*(2*n+1)/(n+1)*P_orig1 - n/(n+1)*P_orig0 ); % 勒让德多项式
L(n) = diff(Pn,x,1) % 罗巴特多项式√√
P_orig0 = P_orig1; % 勒让德更新
P_orig1 = Pn;
end
% 下面是测试任意两个元素是否有正交关系
for m = 1:4
L_equal = L(m)*L(m)*(1-x^2);
equal = int( L_equal, x, -1, 1 ) % 都是2(m+1)(m+2)/(2m+3)
L_inequal = L(m)*L(m+1)*(1-x^2);
inequal = int( L_inequal, x, -1, 1 ) % 都是0
end