内积空间的正交投影与极小化问题

问题:求取一个不超过 $5$ 次的实系数多项式 $u$,使其在区间 $[-\pi,\pi]$ 上尽量好地逼近 $sin\,x$.


 

命题一

设 $U$ 是 $V$ 的子空间,且 $v\in V$,则
$$
||v-P_Uv||\le ||u-v||,u\in U.
$$
当且仅当 $u=P_Uv$ 时等号成立.

($P_U\in \mathcal{L}(V,U)$ 为 $V$ 上的正交投影算子

证明

$$
\begin{aligned}
||v-P_Uv||^2 &\le ||v-P_Uv||^2+||P_Uv-u||^2\\
&=||(v-P_Uv)+(P_Uv-u)||^2(勾股定理)\\
&=||v-u||^2
\end{aligned}
$$

命题二

设 $U$ 是 $V$ 的子空间,如果 $(e_1,\cdots,e_m)$ 是 $U$ 的规范正交基,则对每个 $v\in V$ 都有
$$
P_Uv=\langle v,e_1\rangle e_1+\cdots+\langle v,e_m\rangle e_m
$$
证明略.

 


 

问题分析

问题等价于寻找一个不超过 $5$ 次的实系数多项式 $u$ 使得
$$
\int_{-\pi}^{\pi}|sinx-u(x)|^2dx
$$
最小。为此,我们定义 $C[-\pi,\pi]$ 上元素 $f,g$ 的内积为
$$
\langle f,g\rangle=\int_{-\pi}^{\pi}f(x)g(x)dx
$$
设 $v\in C[-\pi,\pi]$ 是由 $v(x)=sin\,x$ 定义的函数,令 $U=\mathcal{P}_5(R)$ 为次数不超过 $5$ 的实系数多项式组成的 $C[-\pi,\pi]$ 的子空间。现在问题变为:求 $u\in U$ 使得 $||v-u||$ 最小。

要取得问题的解,我们先对 $U$ 的基 $(1,x,x^2,x^3,x^4,x^5)$ 应用 Gram-Schmidt 过程(利用如上定义的内积),得到 $U$ 的规范正交基 $(e_1,e_2,e_3,e_4,e_5,e_6)$,再利用命题二计算出 $P_Uv$,即为答案。

利用 Matlab 编程,计算得到
$$
P_Uv=0.005643117976346487x^5 – 0.15527141063342512x^3 + 0.9878621355746665x
$$

我们把 $P_Uv$ 和 $sin\,x$ 在 $[-\pi,\pi]$ 上的图象画出来,可看出近似程度极高,几乎重合:

相比之下,$sin\,x$ 的另一个熟知的 $5$ 次多项式近似是由泰勒公式给出的
$$
x-\frac{x^3}{3!}+\frac{x^5}{5!}
$$
但这个逼近效果不如我们的 $P_Uv$:

 


 

Matlab 代码:

function res = product(f, g)
    syms x;
    res = int(f(x).*g(x), x, -pi, pi);
end

function res = module(f)
    res = sqrt(product(f, f));
end

function [e1, e2, e3, e4, e5, e6] = schmidt()
    syms x;
    v1 = @(x) 1;
    v2 = @(x) x;
    v3 = @(x) x.^2;
    v4 = @(x) x.^3;
    v5 = @(x) x.^4;
    v6 = @(x) x.^5;

    e1 = @(x) (v1/module(@(x) 1));

    e2 = @(x) (v2 - product(v2, e1)*e1);
    e2 = @(x) (e2/module(e2));

    e3 = @(x) (v3 - product(v3, e1)*e1 - product(v3, e2)*e2);
    e3 = @(x) (e3/module(e3));

    e4 = @(x) (v4 - product(v4, e1)*e1 - product(v4, e2)*e2 ...
             - product(v4, e3)*e3);
    e4 = @(x) (e4/module(e4));

    e5 = @(x) (v5 - product(v5, e1)*e1 - product(v5, e2)*e2 ...
             - product(v5, e3)*e3 - product(v5, e4)*e4);
    e5 = @(x) (e5/module(e5));

    e6 = @(x) (v6 - product(v6, e1)*e1 - product(v6, e2)*e2 ...
             - product(v6, e3)*e3 - product(v6, e4)*e4 - product(v6, e5)*e5);
    e6 = @(x) (e6/module(e6));

end

function p = projection()
    syms x;

    % 为节省算力,直接利用前述函数得到的结果
    e1 = @(x)(1/((2*pi)^(1/2)));
    e2 = @(x)(((3/2)^(1/2)*x)/(pi^(3/2)));
    e3 = @(x)(-(3*(5/2)^(1/2)*(- x^2 + pi^2/3))/(2*pi^(5/2)));
    e4 = @(x)((5*(7/2)^(1/2)*(x^3-(3*pi^2/5*x)))/(2*pi^(7/2)));
    e5 = @(x)((105*(x^4+6/7*pi^2*(pi^2/3-x^2)-pi^4/5))/(8*2^(1/2)*pi^(9/2)));
    % e6 的精确值过于复杂,采用浮点近似
    e6 = @(x)(0.034049254484970454*x^5 - 0.3733918576874177*x^3 + 0.7896921261348572*x);

    v = @sin;
    p = @(x) (product(v, e1)*e1 + product(v, e2)*e2 + product(v, e3)*e3 ...
             + product(v, e4)*e4 + product(v, e5)*e5 + product(v, e6)*e6);

end

 

此条目发表在数学, 线性代数分类目录。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。 必填项已用*标注