legendre多项式与gauss 您所在的位置:网站首页 gausslegendre求积公式推导 legendre多项式与gauss

legendre多项式与gauss

2023-06-11 03:14| 来源: 网络整理| 查看: 265

写作目的

最近在学谱方法解偏微分方程,顺便学一下legendre多项式的一些推导,参考了北京大学蓝以中老师的《高等代数学习指南》,发博客以记之。

Legendre多项式定义

P 0 ( x ) = 1 P k ( x ) = 1 2 k k ! d k [ ( x 2 − 1 ) k ] d x k , k = { 1 , 2 , ⋯ } (1) {P_0}\left( x \right) = 1\newline{P_k}\left( x \right) = \frac{1}{{{2^k}k!}}\frac{{{d^k}\left[ {{{\left( {{x^2} - 1} \right)}^k}} \right]}}{{d{x^k}}},k = \left\{ {1,2, \cdots } \right\}\tag{1} P0​(x)=1Pk​(x)=2kk!1​dxkdk[(x2−1)k]​,k={1,2,⋯}(1)

五个引理 莱布尼茨求导法则: ( u v ) ( k ) = ∑ i = 0 k C k i u ( i ) v ( k − i ) (2) {\left( {uv} \right)^{\left( k \right)}} = \sum\limits_{i = 0}^k {C_k^i{u^{\left( i \right)}}{v^{\left( {k - i} \right)}}} \tag{2} (uv)(k)=i=0∑k​Cki​u(i)v(k−i)(2)利用分部积分,有: ∫ a b u ( m ) v d x = u ( m − 1 ) v ∣ a b − ∫ a b u ( m − 1 ) v ( 1 ) d x = ⋯ = [ u ( m − 1 ) v − u ( m − 2 ) v ( 1 ) + u ( m − 3 ) v ( 2 ) + ⋯ + ( − 1 ) m − 1 u v ( m − 1 ) ] ∣ a b + ( − 1 ) m ∫ a b u v ( m ) d x (3) \int\limits_a^b {{u^{\left( m \right)}}vdx = } {u^{\left( {m - 1} \right)}}v|_a^b - \int\limits_a^b {{u^{\left( {m - 1} \right)}}{v^{\left( 1 \right)}}dx = } \cdots \newline = \left[ {{u^{\left( {m - 1} \right)}}v - {u^{\left( {m - 2} \right)}}{v^{\left( 1 \right)}} + {u^{\left( {m - 3} \right)}}{v^{\left( 2 \right)}} + \cdots + \newline {{\left( { - 1} \right)}^{m - 1}}u{v^{\left( {m - 1} \right)}}} \right]|_a^b \newline+ {\left( { - 1} \right)^m}\int\limits_a^b {u{v^{\left( m \right)}}dx} \tag{3} a∫b​u(m)vdx=u(m−1)v∣ab​−a∫b​u(m−1)v(1)dx=⋯=[u(m−1)v−u(m−2)v(1)+u(m−3)v(2)+⋯+(−1)m−1uv(m−1)]∣ab​+(−1)ma∫b​uv(m)dx(3)引理三:(x^2-1)整除关系 1 ≤ l < k 1 \le l < k 1≤l{{d^l}\left[ {{{\left( {{x^2} - 1} \right)}^k}} \right]}}{{d{x^l}}} \tag{4} (x2−1)∣dxldl[(x2−1)k]​(4) 这里蓝以中老师的书中用了归纳法证明,实际上不需要,很容易看出 ( x 2 − 1 ) k = ( x − 1 ) k ( x + 1 ) k {\left( {{x^2} - 1} \right)^k} = {\left( {x - 1} \right)^k}{\left( {x + 1} \right)^k} (x2−1)k=(x−1)k(x+1)k并利用引理2直接推出 d l [ ( x 2 − 1 ) k ] d x l = ∑ i = 0 l C l i d i [ ( x + 1 ) k ] d x i d l − i [ ( x − 1 ) k ] d x l − i (4.5) \frac{{{d^l}\left[ {{{\left( {{x^2} - 1} \right)}^k}} \right]}}{{d{x^l}}} = \sum\limits_{i = 0}^l {C_l^i\frac{{{d^i}\left[ {{{\left( {x + 1} \right)}^k}} \right]}}{{d{x^i}}}} \frac{{{d^{l - i}}\left[ {{{\left( {x - 1} \right)}^k}} \right]}}{{d{x^{l - i}}}} \tag{4.5} dxldl[(x2−1)k]​=i=0∑l​Cli​dxidi[(x+1)k]​dxl−idl−i[(x−1)k]​(4.5) 直接看出求和项中每一项都可以被(x^2-1)整除即证。 4.引理4:这个好像挺基础吧 ∫ 0 π 2 cos ⁡ 2 n + 1 ( x ) d x = 2 n 2 n + 1 × 2 n − 2 2 n − 1 × ⋯ × 2 3 (5) \int\limits_0^{\frac{\pi }{2}} {{{\cos }^{2n + 1}}\left( x \right)} dx = \frac{{2n}}{{2n + 1}} \times \frac{{2n - 2}}{{2n - 1}} \times \cdots \times \frac{2}{3} \tag{5} 0∫2π​​cos2n+1(x)dx=2n+12n​×2n−12n−2​×⋯×32​(5) 5.引理5:这个也显然: P k ( 1 ) = 1 {P_k}\left( 1 \right) = 1 Pk​(1)=1 事实上,运用展开式(4.5)直接看出 勒让德多项式正交性证明:

1 ≤ l < k 1 \le l < k 1≤l{{2^{k + l}}k!l!}}\int\limits_{ - 1}^1 {\frac{{{d^k}\left[ {{{\left( {{x^2} - 1} \right)}^k}} \right]}}{{d{x^k}}}} \frac{{{d^l}\left[ {{{\left( {{x^2} - 1} \right)}^l}} \right]}}{{d{x^l}}}dx −1∫1​Pl​(x)Pk​(x)dx=2k+lk!l!1​−1∫1​dxkdk[(x2−1)k]​dxldl[(x2−1)l]​dx 利用引理2可以得到: 2 k + l k ! l ! ∫ − 1 1 P l ( x ) P k ( x ) d x = d k − 1 [ ( x 2 − 1 ) k ] d x k − 1 × d l [ ( x 2 − 1 ) l ] d x l ∣ − 1 1 − d k − 2 [ ( x 2 − 1 ) k ] d x k − 2 × d l + 1 [ ( x 2 − 1 ) l ] d x l + 1 ∣ − 1 1 + ⋯ + ( − 1 ) l d k − l − 1 [ ( x 2 − 1 ) k ] d x k − l − 1 × d 2 l [ ( x 2 − 1 ) l ] d x 2 l ∣ − 1 1 + ( − 1 ) l + 1 ∫ − 1 1 d k − l − 1 [ ( x 2 − 1 ) k ] d x k − l − 1 × d 2 l + 1 [ ( x 2 − 1 ) l ] d x 2 l + 1 d x {2^{k + l}}k!l!\int\limits_{ - 1}^1 {{P_l}} \left( x \right){P_k}\left( x \right)dx = \frac{{{d^{k - 1}}\left[ {{{\left( {{x^2} - 1} \right)}^k}} \right]}}{{d{x^{k - 1}}}} \times \frac{{{d^l}\left[ {{{\left( {{x^2} - 1} \right)}^l}} \right]}}{{d{x^l}}}|_{ - 1}^1\newline - \frac{{{d^{k - 2}}\left[ {{{\left( {{x^2} - 1} \right)}^k}} \right]}}{{d{x^{k - 2}}}} \times \frac{{{d^{l + 1}}\left[ {{{\left( {{x^2} - 1} \right)}^l}} \right]}}{{d{x^{l + 1}}}}|_{ - 1}^1 + \cdots \newline+ {\left( { - 1} \right)^l}\frac{{{d^{k - l - 1}}\left[ {{{\left( {{x^2} - 1} \right)}^k}} \right]}}{{d{x^{k - l - 1}}}} \times \frac{{{d^{2l}}\left[ {{{\left( {{x^2} - 1} \right)}^l}} \right]}}{{d{x^{2l}}}}|_{ - 1}^1 \newline+ {\left( { - 1} \right)^{l + 1}}\int\limits_{ - 1}^1 {\frac{{{d^{k - l - 1}}\left[ {{{\left( {{x^2} - 1} \right)}^k}} \right]}}{{d{x^{k - l - 1}}}} \times \frac{{{d^{2l + 1}}\left[ {{{\left( {{x^2} - 1} \right)}^l}} \right]}}{{d{x^{2l + 1}}}}dx} 2k+lk!l!−1∫1​Pl​(x)Pk​(x)dx=dxk−1dk−1[(x2−1)k]​×dxldl[(x2−1)l]​∣−11​−dxk−2dk−2[(x2−1)k]​×dxl+1dl+1[(x2−1)l]​∣−11​+⋯+(−1)ldxk−l−1dk−l−1[(x2−1)k]​×dx2ld2l[(x2−1)l]​∣−11​+(−1)l+1−1∫1​dxk−l−1dk−l−1[(x2−1)k]​×dx2l+1d2l+1[(x2−1)l]​dx 利用引理3,除了积分号之外的结果都是0,积分号下第二项是对一个2l次的多项式求2l+1次导数,故为零,所以证明了legendre多项式的正交性。

模长证明

∫ − 1 1 P k 2 ( x ) d x = ( 1 k ! 2 k ) 2 ∫ − 1 1 d k [ ( x 2 − 1 ) k ] d x k × d k [ ( x 2 − 1 ) k ] d x k d x \int\limits_{ - 1}^1 {P_k^2\left( x \right)} dx = {\left( {\frac{1}{{k!{2^k}}}} \right)^2}\int\limits_{ - 1}^1 {\frac{{{d^k}\left[ {{{\left( {{x^2} - 1} \right)}^k}} \right]}}{{d{x^k}}}} \times \frac{{{d^k}\left[ {{{\left( {{x^2} - 1} \right)}^k}} \right]}}{{d{x^k}}}dx \newline −1∫1​Pk2​(x)dx=(k!2k1​)2−1∫1​dxkdk[(x2−1)k]​×dxkdk[(x2−1)k]​dx 同样运用引理2得到 ( k ! 2 k ) 2 ∫ − 1 1 P k 2 ( x ) d x = d k − 1 [ ( x 2 − 1 ) k ] d x k − 1 × d k [ ( x 2 − 1 ) k ] d x k ∣ − 1 1 − d k − 2 [ ( x 2 − 1 ) k ] d x k − 2 × d k + 1 [ ( x 2 − 1 ) k ] d x k + 1 ∣ − 1 1 + ⋯ + ( − 1 ) k d [ ( x 2 − 1 ) k ] d x × d 2 k − 2 [ ( x 2 − 1 ) k ] d x 2 k − 2 ∣ − 1 1 + ( − 1 ) k + 1 ( x 2 − 1 ) × d 2 k − 1 [ ( x 2 − 1 ) k ] d x 2 k − 1 ∣ − 1 1 + ( − 1 ) k + 2 ∫ − 1 1 ( x 2 − 1 ) 2 d 2 k [ ( x 2 − 1 ) k ] d x 2 k d x (6) {\left( {k!{2^k}} \right)^2}\int\limits_{ - 1}^1 {P_k^2\left( x \right)} dx = \frac{{{d^{k - 1}}\left[ {{{\left( {{x^2} - 1} \right)}^k}} \right]}}{{d{x^{k - 1}}}} \times \frac{{{d^k}\left[ {{{\left( {{x^2} - 1} \right)}^k}} \right]}}{{d{x^k}}}|_{ - 1}^1\newline - \frac{{{d^{k - 2}}\left[ {{{\left( {{x^2} - 1} \right)}^k}} \right]}}{{d{x^{k - 2}}}} \times \frac{{{d^{k + 1}}\left[ {{{\left( {{x^2} - 1} \right)}^k}} \right]}}{{d{x^{k + 1}}}}|_{ - 1}^1 + \cdots + \newline {\left( { - 1} \right)^k}\frac{{d\left[ {{{\left( {{x^2} - 1} \right)}^k}} \right]}}{{dx}} \times \frac{{{d^{2k - 2}}\left[ {{{\left( {{x^2} - 1} \right)}^k}} \right]}}{{d{x^{2k - 2}}}}|_{ - 1}^1 \newline + {\left( { - 1} \right)^{k + 1}}\left( {{x^2} - 1} \right) \times \frac{{{d^{2k - 1}}\left[ {{{\left( {{x^2} - 1} \right)}^k}} \right]}}{{d{x^{2k - 1}}}}|_{ - 1}^1 \newline + {\left( { - 1} \right)^{k + 2}}\int\limits_{ - 1}^1 {{{\left( {{x^2} - 1} \right)}^2}} \frac{{{d^{2k}}\left[ {{{\left( {{x^2} - 1} \right)}^k}} \right]}}{{d{x^{2k}}}}dx \tag{6} (k!2k)2−1∫1​Pk2​(x)dx=dxk−1dk−1[(x2−1)k]​×dxkdk[(x2−1)k]​∣−11​−dxk−2dk−2[(x2−1)k]​×dxk+1dk+1[(x2−1)k]​∣−11​+⋯+(−1)kdxd[(x2−1)k]​×dx2k−2d2k−2[(x2−1)k]​∣−11​+(−1)k+1(x2−1)×dx2k−1d2k−1[(x2−1)k]​∣−11​+(−1)k+2−1∫1​(x2−1)2dx2kd2k[(x2−1)k]​dx(6) 同样(6)等式右端只有积分号下不为0,得到: ( k ! 2 k ) 2 ∫ − 1 1 P k 2 ( x ) d x = ( − 1 ) k + 2 ∫ − 1 1 ( x 2 − 1 ) 2 d 2 k [ ( x 2 − 1 ) k ] d x 2 k d x = ( − 1 ) k ( 2 k ) ! ∫ − 1 1 ( x 2 − 1 ) 2 d x (7) {\left( {k!{2^k}} \right)^2}\int\limits_{ - 1}^1 {P_k^2\left( x \right)} dx = {\left( { - 1} \right)^{k + 2}}\int\limits_{ - 1}^1 {{{\left( {{x^2} - 1} \right)}^2}} \frac{{{d^{2k}}\left[ {{{\left( {{x^2} - 1} \right)}^k}} \right]}}{{d{x^{2k}}}}dx = \newline{\left( { - 1} \right)^k}\left( {2k} \right)!\int\limits_{ - 1}^1 {{{\left( {{x^2} - 1} \right)}^2}} dx \tag{7} (k!2k)2−1∫1​Pk2​(x)dx=(−1)k+2−1∫1​(x2−1)2dx2kd2k[(x2−1)k]​dx=(−1)k(2k)!−1∫1​(x2−1)2dx(7) (7)中最后式子利用三角积分换元与对称性得到: ( − 1 ) k ( 2 k ) ! ∫ − 1 1 ( x 2 − 1 ) 2 d x = 2 × ( − 1 ) 2 k × ( 2 k ) ! ∫ 0 π 2 cos ⁡ 2 k + 1 ( x ) d x (8) {\left( { - 1} \right)^k}\left( {2k} \right)!\int\limits_{ - 1}^1 {{{\left( {{x^2} - 1} \right)}^2}} dx =\newline 2 \times {\left( { - 1} \right)^{2k}} \times \left( {2k} \right)!\int\limits_0^{\frac{\pi }{2}} {{{\cos }^{2k + 1}}\left( x \right)dx} \tag{8} (−1)k(2k)!−1∫1​(x2−1)2dx=2×(−1)2k×(2k)!0∫2π​​cos2k+1(x)dx(8) (8)利用引理4得到: ∫ − 1 1 P k 2 ( x ) d x = 1 ( k ! 2 k ) 2 × ( 2 × ( 2 k ) ! ) × 2 k 2 k + 1 × 2 k − 2 2 k − 1 × ⋯ × 2 3 = 2 2 k + 1 (9) \int\limits_{ - 1}^1 {P_k^2} \left( x \right)dx = \frac{1}{{{{\left( {k!{2^k}} \right)}^2}}} \times \left( {2 \times \left( {2k} \right)!} \right) \times \newline\frac{{2k}}{{2k + 1}} \times \frac{{2k - 2}}{{2k - 1}} \times \cdots \times \frac{2}{3} = \frac{2}{{2k + 1}} \tag{9} −1∫1​Pk2​(x)dx=(k!2k)21​×(2×(2k)!)×2k+12k​×2k−12k−2​×⋯×32​=2k+12​(9)

递推公式证明

考虑欧氏空间 R [ x ] n + 2 R{\left[ x \right]_{n + 2}} R[x]n+2​ 存在一组正交基 P 0 ( x ) , P 1 ( x ) , ⋯   , P n + 1 ( x ) {P_0}\left( x \right),{P_1}\left( x \right), \cdots ,{P_{n + 1}}\left( x \right) P0​(x),P1​(x),⋯,Pn+1​(x) 则n+1次多项式可被正交基唯一地线性表示 x P n ( x ) = c n + 1 P 0 ( x ) + c n P 1 ( x ) + ⋯ + c 0 P n + 1 ( x ) (10) x{P_n}\left( x \right) = {c_{n + 1}}{P_0}\left( x \right) + {c_n}{P_1}\left( x \right) + \cdots + {c_0}{P_{n + 1}}\left( x \right) \tag{10} xPn​(x)=cn+1​P0​(x)+cn​P1​(x)+⋯+c0​Pn+1​(x)(10) 则先证明: c 3 = c 4 = ⋯ = c n + 1 = 0 {c_3} = {c_4} = \cdots = {c_{n + 1}} = 0 c3​=c4​=⋯=cn+1​=0 事实上,等式(10)两边乘以P_0(x)并积分得到 ∫ − 1 1 x P n ( x ) P 0 ( x ) d x = c n + 1 ∫ − 1 1 P 0 2 ( x ) d x \int\limits_{ - 1}^1 {x{P_n}\left( x \right){P_0}\left( x \right)} dx = {c_{n + 1}}\int\limits_{ - 1}^1 {P_0^2\left( x \right)} dx −1∫1​xPn​(x)P0​(x)dx=cn+1​−1∫1​P02​(x)dx 且: ∂ ( x P 0 ( x ) ) = 1 < n ⇒ ∫ − 1 1 x P n ( x ) P 0 ( x ) d x = 0 ⇒ c n + 1 = 0 ∂ ( x P 1 ( x ) ) = 2 < n ⇒ ∫ − 1 1 x P n ( x ) P 1 ( x ) d x = 0 ⇒ c n = 0 ⋯ ∂ ( x P n − 2 ( x ) ) = n − 1 < n ⇒ ∫ − 1 1 x P n ( x ) P n − 2 ( x ) d x = 0 ⇒ c 3 = 0 \partial \left( {x{P_0}\left( x \right)} \right) = 1 < n \Rightarrow \int\limits_{ - 1}^1 {x{P_n}\left( x \right){P_0}\left( x \right)} dx = 0 \Rightarrow c_{n+1}=0\newline \partial \left( {x{P_1}\left( x \right)} \right) = 2 < n \Rightarrow \int\limits_{ - 1}^1 {x{P_n}\left( x \right){P_1}\left( x \right)} dx = 0 \Rightarrow c_{n}=0\newline \cdots \newline \partial \left( {x{P_{n-2}}\left( x \right)} \right) = n-1 < n \Rightarrow \int\limits_{ - 1}^1 {x{P_n}\left( x \right){P_{n-2}}\left( x \right)} dx = 0 \Rightarrow c_{3}=0 ∂(xP0​(x))=1{{\left( {{x^2} - 1} \right)}^n}} \right]}}{{d{x^n}}} x2n−1∈/(x2−1)n⇒xn−1∈/dxndn[(x2−1)n]​ 又由于 x n ∉ P n + 1 ( x ) , P n − 1 ( x ) ⇒ c 1 = 0 {x^n} \notin {P_{n + 1}}\left( x \right),{P_{n - 1}}\left( x \right) \Rightarrow {c_1} = 0 xn∈/Pn+1​(x),Pn−1​(x)⇒c1​=0 因此 x P n ( x ) = c 0 P n + 1 ( x ) + c 2 P n − 1 ( x ) (12) x{P_n}\left( x \right) = {c_0}{P_{n + 1}}\left( x \right) + {c_2}{P_{n - 1}}\left( x \right) \tag{12} xPn​(x)=c0​Pn+1​(x)+c2​Pn−1​(x)(12) 比较等式(12)两边x^{n+1}次系数可得: 2 n ( 2 n − 1 ) ⋯ ( n + 1 ) 2 n n ! = c 0 ( 2 n + 2 ) ( 2 n + 1 ) ⋯ ( n + 2 ) 2 n + 1 ( n + 1 ) ! ⇒ c 0 = n + 1 2 n + 1 \frac{{2n\left( {2n - 1} \right) \cdots \left( {n + 1} \right)}}{{{2^n}n!}} = {c_0}\frac{{\left( {2n + 2} \right)\left( {2n + 1} \right) \cdots \left( {n + 2} \right)}}{{{2^{n + 1}}\left( {n + 1} \right)!}} \Rightarrow \newline {c_0} = \frac{{n + 1}}{{2n + 1}} 2nn!2n(2n−1)⋯(n+1)​=c0​2n+1(n+1)!(2n+2)(2n+1)⋯(n+2)​⇒c0​=2n+1n+1​ 最后算c_2时直接利用引理5 1 = n + 1 2 n + 1 + c 2 × 1 ⇒ c 2 = n 2 n + 1 1 = \frac{{n + 1}}{{2n + 1}} + {c_2} \times 1 \Rightarrow {c_2} = \frac{n}{{2n + 1}} 1=2n+1n+1​+c2​×1⇒c2​=2n+1n​ 故得到 x P n ( x ) = n + 1 2 n + 1 P n + 1 ( x ) + n 2 n + 1 P n − 1 ( x ) (13) x{P_n}\left( x \right) = \frac{{n + 1}}{{2n + 1}}{P_{n + 1}}\left( x \right) + \frac{n}{{2n + 1}}{P_{n-1}}\left( x \right) \tag{13} xPn​(x)=2n+1n+1​Pn+1​(x)+2n+1n​Pn−1​(x)(13) 即为递推式的等价形式。

零点分布

n次勒让德多项式有n个实根且分布在(-1,1)开区间内: 证明使用罗德里格斯公式(1):首先注意到 ( x 2 − 1 ) k , k ≥ 1 {\left( {{x^2} - 1} \right)^k},k \ge 1 (x2−1)k,k≥1一定有-1,1为根,使用rolle中值定理可以得到 d ( x 2 − 1 ) k d x \frac{{d{{\left( {{x^2} - 1} \right)}^k}}}{{dx}} dxd(x2−1)k​存在 − 1 < ξ 1 , 1 < 1 -1{d^2}{{\left( {{x^2} - 1} \right)}^k}}}{{d{x^2}}} dx2d2(x2−1)k​有 − 1 < ξ 2 , 1 < ξ 2 , 2 < 1 -1{2n + 1}}{{n + 1}}x{P_n}\left( x \right) - \frac{n}{{n + 1}}{P_{n - 1}}\left( x \right) \tag{14} Pn+1​(x)=n+12n+1​xPn​(x)−n+1n​Pn−1​(x)(14) 因此等价的行列式为,这里 D n D_{n} Dn​为三对角矩阵: D n + 1 = [ D n n n + 1 n n + 1   2 n + 1 n + 1 x ] D_{n+1} = \left[ \begin{array}{cc} {D_n} & {\sqrt {\frac{n}{{n + 1}}} } \\ {\sqrt {\frac{n}{{n + 1}}} }\ & {\frac{{2n + 1}}{{n + 1}}x} \end{array}\right] Dn+1​=[Dn​n+1n​ ​ ​n+1n​ ​n+12n+1​x​] 因此推得legendre多项式 P n + 1 P_{n+1} Pn+1​的根是下列实对称三对角阵的谱: T = d i a g ( k 4 k 2 − 1 , 1 ) + d i a g ( k 4 k 2 − 1 , − 1 ) , k ∈ { 1 , 2 , ⋯ n } T = diag\left( {\frac{k}{{\sqrt {4{k^2} - 1} }},1} \right) + diag\left( {\frac{k}{{\sqrt {4{k^2} - 1} }}, - 1} \right),k \in \left\{ {1,2, \cdots n} \right\} T=diag(4k2−1 ​k​,1)+diag(4k2−1 ​k​,−1),k∈{1,2,⋯n} 求积系数是对应特征向量模长平方的两倍

matlab求根: n = 10;%11次勒让德多项式 A = diag((1:n)./sqrt(4*(1:n).^2-1),1)+diag((1:n)./sqrt(4*(1:n).^2-1),-1); [v,e] = eig(A); diag(e)%11个根 画出图像(python实现) import numpy as np import matplotlib.pyplot as plt n = 10; P = np.zeros((n+1,n+1)); P[n,0] = 1; P[n-1,1] = 1; x = np.linspace(-1, 1, 100) J = np.zeros((n+1,n+1)); for i in range(n): J[i,i+1] = 1 #print(J) for i in range(1,n): P[:,i+1] = ((2*i+1)/(i+1))*np.dot(J,P[:,i]) - i/(i+1)*P[:,i-1]; #print(P) for i in range(n+1): y = np.polyval(P[:,i], x) plt.plot(x,y) plt.show()

在这里插入图片描述

积分实例

尝试计算: ∫ − 1 1 1 x 2 + 1 d x = π 2 \int\limits_{-1}^{1} {\frac{1}{x^2+1}} dx = \frac{\pi}{2} −1∫1​x2+11​dx=2π​

import numpy as np import matplotlib.pyplot as plt def legendre_polynomial_integral_coefficient(n): DOF = np.zeros((n,n)) for iter in range(n-1): DOF[iter,iter+1] = (iter+1)/np.sqrt(4*(iter+1)**2-1) DOF[iter+1,iter] = DOF[iter,iter+1] [xr,v] = np.linalg.eig(DOF) A = 2*v[0,:]**2 # print(np.linalg.norm([email protected](xr)@v.T - DOF)) return xr,A def gauss_legendre_integral(f,xr,A,a=-1,b=1):#高斯勒让德求积 xrr = ((a+b) + (b-a)*xr)/2 return np.sum(f(xrr)*A*(b-a)/2) def grid_on_gauss(f,xr,A,intervals): #复化高斯求积 s = 0.0; for i in range(len(intervals)-1): s = s + gauss_legendre_integral(f,xr,A,intervals[i],intervals[i+1]) return s def interpolant(x): return 1/(1+x**2) if __name__=="__main__": xr,A = legendre_polynomial_integral_coefficient(2) #五次多项式具有9次代数精度 print('求积节点和求积系数:',end = '') print(xr,A) err = np.zeros((1,8)) for i in range(2,10): intervals = np.linspace(-1,1,i) print('gauss-legendre求积复化节点:',end = '|') print(intervals.round(4)) val = grid_on_gauss(interpolant,xr,A,intervals) print('val = {:.16f}'.format(val)) err[0,i-2] = val - np.pi/2 # print(err[0,1],err[0,3],err[0,7]) print('2段和4段复化得到误差阶次{:.4f}'.format(np.log(np.abs(err[0,1]/err[0,3]))/np.log(2))) print('4段和8段复化得到误差阶次{:.4f}'.format(np.log(np.abs(err[0,3]/err[0,7]))/np.log(2)))

求积节点和求积系数:[ 0.57735027 -0.57735027] [1. 1.] gauss-legendre求积复化节点:|[-1. 1.] val = 1.4999999999999998 gauss-legendre求积复化节点:|[-1. 0. 1.] val = 1.5737704918032787 gauss-legendre求积复化节点:|[-1. -0.3333 0.3333 1. ] val = 1.5706921944035348 gauss-legendre求积复化节点:|[-1. -0.5 0. 0.5 1. ] val = 1.5708049465155127 gauss-legendre求积复化节点:|[-1. -0.6 -0.2 0.2 0.6 1. ] val = 1.5707969907681516 gauss-legendre求积复化节点:|[-1. -0.6667 -0.3333 0. 0.3333 0.6667 1. ] val = 1.5707966371919944 gauss-legendre求积复化节点:|[-1. -0.7143 -0.4286 -0.1429 0.1429 0.4286 0.7143 1. ] val = 1.5707964458929606 gauss-legendre求积复化节点:|[-1. -0.75 -0.5 -0.25 0. 0.25 0.5 0.75 1. ] val = 1.5707963805291514 2段和4段复化得到误差阶次8.4306 4段和8段复化得到误差阶次7.3257



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有